文章目录
数据类型的分类
第一种: 基本数据类型
1.整数型:byte,short,int,long(1字节,2字节,4字节,8字节)
2.浮点型:float,double(4字节,8字节)
3.布尔型:boolean(1字节)
4.字符型:char(2字节)
第二种:引用数据类型(除基本类型外全是)
比如我们后面要学的字符串String类,以及对象等都是引用数据类型。
需要掌握的基本数据类型的取值范围
byte的取值:[-128-127]
short的取值:[-32168-32767]
int的取值:[-2147483648-2147483647]
char的取值:[0-65535]
数据转换的规则
这里先抛出结论。后文中每一点都会一一讲解。
1.除Boolean不能转换,其余均可
2.没有超过byte,short,char的取值范围,可以直接赋值
3.小容量向大容量转换为自动转换
4.大容量转换为小容量成为强制转换,要加强转符
5.byte,short,char在混合运算时,会自动转换为int
6.多种数据类型混合运算时,会先各自转换为最大的参与,第五条中的三个数据类型除外。
整数型
1.输出不同的进制
0开头:输出八进制
0X开头:输出十六进制
0b开头:输出二进制
int a=10;
System.out.println(a);//十进制 10
int b=010;//0开头八进制 8
System.out.println(b);
int c =0x10;//0x开头十六进制 16
System.out.println(c);
int d =0b10;//0b开头二进制 2
System.out.println(d);
2.整形字面量
*注意:在任何情况下,整数型字面量都被当做“int”,若想通过long处理,要再字面量后加上L或l
long g = 2147483647;//该数值被当做了int是int的最大值,可以通过
long h =2147483648//编译报错,超过了int的最大值
//解决
long h =2147483648L;
System.out.println(h);
//小容量给大容量,自动类型转换
3.整形数据转换
强制类型转换符:(转换后的类型)+你想转换的变量
int e = 100;
System.out.println(e);//100
//此处有类型转换,e是int型
//b是long类型,int占4字节,long占8字节,小容量转换成了大容量,称为自动类型转换
long f = e;
System.out.println(f);//100
long x = 100L;
int y = x;//编译错误,long转换为int可能会有损失
//大容量转换为小容量,若想编译通过,则需要使用强制类型转换符(类型),但是运行时可能会损失精度
int y = (int)x;//正确
byte n = (byte)300;//300被当做int,要编译通过要强制类型转换符
System.out.println(n);//输出44,损失了部分精度
byte m = 1;//大容量无法直接转为小容量,但编译通过,没有超过byte的取值范围,可以通过,short与char同理。
浮点型
1.默认的浮点型
注意:java 中浮点型数据默认被当做double,若想作为float,需在后面添加F或f
double pi =3.14;//没有数据转换
System.out.println(pi);
//float x=3.14;//报错
float x = 3.14f;//强制类型转换也可以!
2.浮点型转换为整形
浮点型转换为整形可能会产生精度的误差!
//下面程序错误,double大容量无法直接赋值给小容量int
int y=10.0/5;
//修改
int y =(int)10.0/5;
System.out.println(y);//2
字符型
1.字符型的表示
java中用’ '单引号括起来的就是字符型,注意,单引号中只能带有一个字符,例如’ab’就是错误的
char a ='中';//char中可以储存一个汉字
System.out.println(a);//中
char b ='a';
System.out.println(b);
char c ='0';
System.out.println(c);
2.整数赋给字符型
char x = 97;
System.out.println(x);//当一个整数赋值给char时,会自动转换为字符,输出a
char x1 = (char)65536;//65536超出了char的最大值,要强转
布尔型
1.布尔类型的值以及常用范围
1.在java中,boolean只有两个值true和false
2.在实际应用中,常用于逻辑判断(后面会讲)
2.布尔类型不能发生转换
boolean xingbie =1;//报错,int无法转换为Boolean
//正确
boolean x = true;
System.out.println(x);//true
int y = (int)x;//报错,不兼容的类型,无法转换!
char z = (char)x;//报错,不兼容的类型,无法转换!
混合运算
1.byte,char,short混合运算时先各自转化为int型
char c1='a';
byte b=1;
System.out.println(c1+b);//98,运算结果为int型
2.常见错误
这里的b和c1同上文的代码
short c =c1+b;报错,编译器不知道运算结果是多少,只知道是int型,所以即使没超过short的范围,为了确保程序运行。也会报错。
//修改:
short c =(short)(c1+b);
System.out.println(c);//98
3.int与int的结果还是int
System.out.println(10/3);//3