Day01-JAVA基础知识注意点
常量
常量: 在程序运行期间, 固定不变的量
常量的分类:
- 字符串常量
- 字符常量
- 整数常量
- 浮点数常量
- 布尔常量
- 空常量:null 空常量不能直接用来打印输出
注意区别字符常量和字符串常量:
System.out.println(""); // 不会报错
System.out.println(''); // 报错, 空字符文字
数据类型
Java中数据类型分为: 基本数据类型, 引用数据类型.
基本数据类型: 4类8种
整数型: byte short int long
浮点型: float double
字符型: char
布尔型: boolean

Java种的默认类型: 整数类型是int, 浮点类型是double
数据范围与字节数不一定相关, 例如,float数据范围比long更加广泛, 但是float是4字节,long是8字节
数据类型转换
-
强制数据类型转换(显式)
数据溢出
精度损失
-
自动数据类型转换(隐式)
数据范围从小到大
!!!!!Import
byte/short/char这三种类型在运算时, 都会被首先提升成为int类型, 然后再计算
byte num1 = 40;
byte num2 = 50;
byte result = num1 + num2;
// !!!!!!!!!!!Import
// 第三行在编译时会出错 错误:不兼容的类型: 从int转换到byte可能会有损失
// 运算时 byte双双提升为int
// byte + byte --> int + int ---> int
!!Import
布尔类型不能发生数据类型转换
!!Import
对于byte/short/char三种类型来说, 如果右侧赋值的数值没有超过范围
那么javac编译器会自动隐含的为我们补上一个(byte)(short)(char)
1. 如果没有超过左侧的范围, 编译器直接补上强转
2. 如果右侧超过了左侧范围, 那么直接编译器报错
// int-->byte 不是自动类型转换
byte num1 = /*(byte)*/30; // 没有问题, 右侧没有超过左侧的范围, 编译器会自动补上强转
// !!Import
short a = 5;
short b = 8 ;
// short + short --> int + int --> int
// short result = a + b; // 错误写法!! 左侧需要int类型
// 右侧没有使用变量!! 而是采用常量
short result = 5 + 8;
!!Import
在给变量进行赋值的时候, 如果右侧的表达式当中全都是常量, 没有任何变量
那么编译器javac将会直接将若干个常量表达式计算得到结果
short result = 5 + 8; // 等号右边全是常量, 没有任何变量参与运算
编译之后, 得到的.class字节码文件当中相当于【直接就是】:
short result = 13 ;
这种称为"编译器的常量优化"
注意: 一旦表达式当中有变量参与, 那么就不能进行这种优化了
ASCII码表
字符'0' - 字符'9' 的ASCII码为: 48 - 57
字符'0' : 48
字符'A' : 65
字符'a' : 97
!!!Import
ASCII码表: American Standard Code for Information Interchange, 美国信息交换标准代码
Unicode码表: 万国码. 也是数字和符号的对照关系, 开头0-127部分和ASCII完全一样, 但是从128开始包含有更多字符
运算符
复合赋值运算符(如+=)其中隐含了一个强制类型转换
JShell脚本工具
JShell脚本工具是JDK9的新特性
当我们编写的代码非常少, 而又不愿意编写类, main方法, 也不愿意去编译和运行, 这个时候可以使用JShell工具


浙公网安备 33010602011771号