整数型
①java语言中的整数型字面值有三种表示方式
1)十进制:缺省默认的方式
2)八进制:需要以0开始
3)十六进制:需要以0x开始
int a = 10;
int b = 010;
int c = 0x10;
System.out.println(a);
System.out.println(b);
System.out.println(c);
输出:
10
8
16
②java语言中的整数型字面值被默认当int型来处理,如果想当作long类型来处理,需要在‘整数型字面值’后面添加1/L。——类型转换
int i=123;
System.out.println(i); //123是int类型
//i变量声明也是int类型
//int类型的123赋值给int类型的变量i。
long j=456;
System.out.println(j);//456是int类型 4个字节
//j变量声明是long类型 8个字节
//int类型456赋值给long类型变量j,存在类型转换
//int转换成long 是自动转换机制
long x=2587413690025; //编译错误: 过大的整数: 2587413690025
System.out.println(x);
long x=2587413690025L; //解决错误,直接将2587413690025当成long类型
System.out.println(x);
//小容量int转换成大容量long需要类型转型,属于自动类型转换
//大容量long转换成小容量int需要强制类型转换,需要添加强制类型转换符 int q =(int)x;
//添加强制类型转换符之后,编译通过,但是运行阶段可能损失精度(原码补码)。
byte类型:在整数字面值没有超过byte取值范围的,不需要强制类型转换,可以通过
byte=50;可以编译
byte=127;可以编译
byte=128;编译失败
扩展当一个整数字面值没有超过byte、short、char的取值范围,这个字面值可以直接赋值给byte、short、char的变量。
浮点型
- float 四个字节、double 八个字节
对于 特殊行业来说,double精度太低,所以在JDK的SE类库中,提供了精度更高的类型,但是这种不属于基本数据类型,属于引用数据类型——java.math.BigDecimal - java中的所有浮点型字面值,默认当中double来处理。要想该字面值当作float处理,需要在字面值之后添加F/f。
- double和float在计算机内部存储的都是近似值。3.33333333…
布尔型
- 在java中,布尔型只有两个值,true、false。没有其他值
在底层存储时,boolean类型占用一个字节。实际存储中。false底层是0,true是1.
基本数据类型之间的互相转换
- 八种基本数据类型除布尔型之外,都可以互相转换
- 小容量向大容量转换:自动转换
byte < short(char) < int < long < float < double - 任何浮点型不管占多少字节,都比整数容量大,char和short可以表示的种类数目相同,但是char可以取更大的正整数。
- 大容量转换成小容量,是强制类型转换,需要加强制类型转换符,编译可以通过,运行会损失精度
- byte、short、char混合运算时,各自先转换成int类型再运算。
- 多种数据类型混合运算时,先转换成容量最大的那个类型,再运算。
10/3 int型/int型 得int型 等于3
long g = 10;
byte h = (byte)(int)g/3 //编译错误(编译器只检查语法),g本身是long类型,转换成int类型,又转换成byte类型,g/3时,g为byte,3为int,结果为int类型。
(java系列是观看B站动力节点做的笔记·)