学习内容:Java 学习网站:b站
今天的内容比昨天多很多,也更难理解,希望能坚持下去
java.exe命令会启动JVM
JVM启动之后会启动类加载器ClassLoader
ClassLoader会在硬盘上的某个位置搜索HelloWorld.class字节码文件
找到该文件则执行
找不到该文件则报错
疑问:CassLoader是在哪个位置上搜索HelloWorld.class字节码文件的?
默认情况下,ClassLoader从当前路径下加载xxx.class字节码文件
当然,也可以让ClassLoader去某个指定的路径下加载字节码文件,这时需要配置环境变量classpath
那什么是classpath
综上所述 ,环境变量classpath不再配置,这样类加载器会自动从当前路径下加载class字节码文件。
所以,每一次执行.class程序的时候,需要在DOS命令窗口先切换到.class字节码文件所在路径下。然后运行。
【也就是昨天结尾所说的】
注意:路径中“.”表示当前目录。
—出现在java源程序当中,对java源代码的解释说明
—注释不会编译到.class字节码文件中
—一个好的开发习惯应该是多编写注释,这样程序的可读性增强。
—单行注释
—多行注释
—javadoc注释
/**
*Javadoc注释
*Javadoc注释
*Javadoc注释
*/
注意:这种注释是比较专业的注释,该注释信息会被javadoc.exe工具解析提取并生成帮助文档。
//publicn表示公开的
//class表示定义一个类
//HelloWorld表示一个类名
public class HelloWorld{//表示定义一个公开的类,起名HelloWorld
//类体【记住】
//类体中不允许直接编写Java语句【除声明变量】
/*
public表示公开的
static表示静态的
void表示空
main表示方法名是main
args是一个变量名
(string[] args)是一个main方法的形式参数列表
*/
/* 需要记住的是:
以下的方法是一个程序的主方法,是程序的执行入口
是sun公司规定的,固定编写方式
*/
public static void main(String[]args){//表示定义一个公开的静态的主方法
//方法体
//方法体
//方法体
//Java语句【java语句以";"终止,分号必须是半角分号】
//先记住:以下这样代码的作用是向控制台输出一段消息
//以下的双引号必须是半角的双引号【是Java语法的一部分】
//java中所有的字符串都使用双引号括起来。
System.out.println("Hello World!");
}
}
一个java源文件当中可以定义多个class
一个Java源文件当中的public class并不是必须的
一个class会定义生成一个xxx.class字节码文件
一个java源文件当中定义公开的类的话,public class只能有一个,并且该类名称必须和java源文件名称一致。
每一个class当中都可以编写main方法,都可以设定程序的入口,想执行B.class中的main方法:java B
注意:当在命令窗口中执行java Hello,那么要求Hello.class当中必须有主方法。没有主方法会出现运行阶段的错误
* 类名
* 方法名
* 变量名
* 接口名
* 常量名
* ......
* 一个合法的标识符只能由数字、字母、下划线_、美元符号$组成,不能含有其他符号
*不能数字开头
*严格区分大小写
*关键字不能做标识符
*理论上无长度限制【最好不要太长】
【只是一种规范,不属于语法,不遵守规范编译器不会报错】
有特殊含义的、被保留的、不能随意使用的字符
* 完全小写的字母
* 在增强版的记事本当中有特殊颜色
常见的关键字 public ,class,static等
提醒:关键字不要单独拿来记忆,在编写程序的过程中记忆
字面值 | 数据类型 |
---|---|
10、100 | 整数型 |
3.14 | 浮点型 |
true、false | 布尔型 |
“abc” “中国人” | 字符串型 |
‘A’、‘人’ | 字符型 |
注意:
java语言当中所有字符串型字面值必须使用双引号括起来,双引号是半角的
java语言当中所有字符型字面值必须使用单引号括起来,单引号是半角的
变量本质上来说是内存中的一块空间,这块空间有数据类型、有名字、有字面值。
变量包含三部分:数据类型、名称、字面值【数据】
变量是内存中存储数据的最基本的单元。
* 不同的数据有不同的类型。
* 不同的数据类型底层会分配不同大小的空间。
* 数据类型是知到程序在运行阶段应该分配多大的内存空间
要求:
变量中存储的具体的“数据”必须和变量的“数据类型”一致,当不一致的时候编译报错
数据类型 变量名;
数据类型: 比如整型 int 【具体的将在后面学习】
变量名:
只要是合法的表标识符就行。规范中要求:首字母小写,后面每个单词的首字母大写
变量名 = 字面值;
要求:字面值的数据类型必须和变量的数据类型一致。
等号是赋值运算符,先运算等号右边的表达式,表达式执行结束之后的结果赋值给左边的变量。
*声明和赋值可以放到一起完成。
*变量赋值之后可重新赋值,变量的值可变化
*有了变量的概念之后,内存空间得到了重复的使用
*通常访问一个变量包括两种访问形式:
第一种:读取变量中保存的具体数据 get/获取
第二种:修改变量中保存的具体数据 set/设置
*变量在一行中可以声明多个。
*变量必须先声明再赋值才能访问。
如果只写到 int i; 程序执行到这里内存空间并没有开辟出来, 变量 i 并没有初始化。所以没有赋值之前是无法访问的
public class VarTest01{
public static void main (String[] args){
//声明一个int类型的变量取名为i
int i;
//给i变量赋值,i变量在这里完成初始化,内存开辟
i = 100;
System.out.println(i);
//i在次重新赋值
i = 200;
System.out.println(i);
//一行上可以同时声明多个变量
int a,b,c = 300; //只把300赋值给c
//编译错误
//System.out.println(a);
//System.out.println(b);
System.out.println(c);
}
}
*方法体中的Java代码是遵守自上而下的顺序依次逐行执行的
特点:第二行代码必须完整的结束之后第三行代码才能执行。
*再同一个作用域当中,变量不能重名,【在不同作用域当中可以一样】但变量能重新赋值。
* 变量的作用域其实描述的就是变量的有效范围
* 在什么范围之内是可以被访问的,只要出了这个范围该变量就无法访问了
只要记住:出了大括号就不认识了
public class VarTest02{
//注意这里的static不要去掉
static int k = 90;
public static void main (String[] args){
int i = 100;
System.out.println(i); //可以
System.out.println(k); //可以
for(int a=0;a<10;a++){//变量a的作用域是整个for循环,for循环结束之后,a变量的内存就释放了
}
//这里无法访问变量a
//System.out.println(a);
int j;
for(j=0;j<10;j++){//这里j的作用域是main方法
}
System.out.println(j);//可以,访问的是main方法中的j变量
}
public static void dosome(){
//这里无法访问main方法中的变量i,已经出了i变量的作用域
System.out.println(k);//但是可以访问k因为k在类体中
}
}
public class VarTest03{
public static void main (String[] args){
//i变量就是局部变量
int i = 3;
//Java遵循“就近原则”
System.out.println(i);//这里i的值为3
}
//成员变量
int i = 100;
//类体中不能编写java语句【除声明变量之外】
public static void dosome(){
//局部变量
int i = 90;
}
}
今天主要学习了classpath环境变量,如何写java的注释,以及java的基础语法标识符,关键字以及变量