一、定义类
如果一个类声明为public,则要求文件名和类名必须一致。
二、虚拟机的工作流程
编写源文件(*.java)
通过编译器javac,将源文件编译成*.class字节码文件
类加载器
在执行一个类之前,读取类的过程称为类加载
先加载启动类库、再加载扩展类库,最后加载用户自定义类库。
正常的类加载顺序可以避免一些非法代码的执行,并可以提高代码执行的安全性
字节码校验器
安全性原因之一,字节码校验器校验不通过,产生异常
解释器
将*.class解释为不同的操作系统所识别的代码,跨平台。
操作系统
三、变量
变量及三要素
定义:是命名的一块内存空间,空间中的数据可以根据需要发生变化。通过使用新数据替换老数据,达到内存空间的重复利用
合并声明
对多个同类型的变量声明,可以在一个声明语句中完成;
声明可以和初始化合并完成;
1、数据类型
数据类型 | 关键字 | 文字描述 | 内存占用(字节) | 取值范围 | |
数值型 | 整数类型 | byte | 字节型 | 1 | -128~127 (-2的7到2的7次方-1) |
short | 短整型 | 2 | -32768~32767 (-2的15到2的15次方-1) | ||
int | 整型 | 4 | -2147483648~2147483647 (-2的31到2的31次方-1) | ||
long | 长整型 | 8 | (-2的63到2的63次方-1) | ||
浮点类型 | float | 单精度浮点型 | 4 | 精度为6~7位 | |
double | 双精度浮点型 | 8 | 精度为15~16位 | ||
字符型 | char | 以整型方式存放 | 2 | ASCⅡ码:‘A’==65 'a'==97 | |
字符型采用Unicode编码,一个字符型变量可以存放中文字。 char x=‘d’;单引号中只能存放一个字符 | |||||
布尔型 | boolean | 通常用于判断 | 1 | true(真)false(假) |
2、变量名
3、变量值
字节换算
8比特--->1字节
1kb---->1024字节
1M---->1024kb
1G---->1024M
1T---->1024G
【基本数据类型】
基本数据类型:声明时直接在栈内存中开辟空间,并直接在当前内存中存放数据,赋值时传递的是变量中的值,总的来说,基本数据类型是传值的。
【引用数据类型】
声明引用数据类型(数组或对象),会将实际的数据存放在堆内存中,同时,在栈内存中声明一个数组名或对象名,存放着在堆内存中的首地址;
所以,当使用数组名赋值时,传递的是地址。总的来说,引用数据类型是传地址的。
静态区: 保存自动全局变量和 static 变量(包括 static 全局和局部变量)。静态区的内容在整个程序的生命周期内都存在,由编译器在编译的时候分配。
堆区: 一般由程序员分配释放,由 malloc 系列函数或 new 操作符分配的内存,其生命周期由 free 或 delete 决定。在没有释放之前一直存在,直到程序结束,由OS释放。其特点是使用灵活,空间比较大,但容易出错
栈区: 由编译器自动分配释放,保存局部变量,栈上的内容只在方法的范围内存在,当方法运行结束,这些内容也会自动被销毁,其特点是效率高,但空间大小有限
文字常量区: 常量字符串就是放在这里的。程序结束后由系统释放。
四、数据类型的转换
1、自动类型转换
当小类型和大类型运算时,自动将小类型转换为大类型。
float>long)float类型既包含整数部分,也包含小数部分,而long只包含整数部分。
2、强制类型转换
一般发生在大类型转小类型时,可能会损失精度。
浮点常量默认为double,所以float变量赋值时;float f=4.5f;float f1=(float)4.5;
3、基本数据类型优先级:byte<short<int<long<float<double
4、整数和整数运算,结果至少是int。
示例: byte B1=2;
byte b2=9;
byte b3=b1+b2;
编译错误。b1+b2结果为int,不能直接赋值给byte变量。
5、局部变量使用前,必须初始化。否则编译错误。
6、数据类型转换的应用:
*转string:待转换的数据.ToString();
int转double:隐式转换(自动转换)
double转int:显示转换(强制转换),有可能丢失数据
string转int:int.Parse(待转换的字符串);
string转double:double.parse(待转换的字符串);
五、注释
定义:使用一些描述语句,让你的代码便于阅读和理解,注释内容,没有任何实质功能,不能参阅编译,只存在源代码中。
单行注释 //
多行注释 /* */
文档注释 /** */
用于类、方法、全局变量。可以使用javadoc.exe产生帮助文档
六、常量
定义:常量也是一块命名的内存空间,但在运行期间,空间的内容不能发生变化
定义常量使用 final 关键字,常量名一般使用全大写字符。
语法:final 常量名 = 值;
意义: 1、可以引入业务上的名字
2、可以做到一改全改
七、标识符
凡是可以命名的地方都叫标识符。通常使用标识符命名类、方法、变量
用户标识符
硬性要求
1、数字、字母、下划线及$组成
2、不得以数字开头
3、名称不能与关键字相同
4、同一函数中变量名不得相同
软性要求
1、变量名要望文知意
2、方法名/变量名首字母小写
3、类名以大写字符开始
4、常量全部由大写字母构成
5、驼峰命名法(例:myName 第二个单词首字母大写)
方法名/变量名:第一个单词的首字母小写,其后单词的首字母大写
类名:每个单词首字母大写
系统标识符(关键字)