Java是一种强类型的语言,针对每一种数据都定义了明确的数据类型。
数据类型分类:
A:基本数据类型
B:引用数据类型(类,接口,数值)
基本数据类型:4类8种
A:整数 占用字节数
byte 1
short 2
int 4
long 8
B:浮点数 占用字节数
float 4
double 8
C:字符 占用字节数
char 2
D:布尔 占用字节数
boolean 1
Attention!
整数默认类型为Int,浮点数默认类型为double。
长整型后缀用L或者l来标记,建议使用L。
单精度浮点数用F或者f来标记,建议使用F。
数据类型的转换:(要注意的是boolean类型不能转换成其它的数据类型。)
默认转换(从小到大的转换)
A:byte,short,char-int-long-float-double
B: byte,short,char相互之间不转换,如果它们要参与运算首先转换为Int类型
小问题:long是8个字节,float是4个字节,既然是从小到大转换为什么确是long向float转换呢?
答:A:它们底层的存储结构不同 B:float表示的数据范围比long的范围大得多
强制转换(从大到小的转换)
格式:目标数据类型 变量=(目标数据类型)(被转换的数据)
Attention!
请不要随意地去使用强制转换,因为它隐含了精度损失问题。
字符串数据与其他数据做“+”,结果是字符串类型。这里的“+”不是加法,而是字符串连接符号。
例如:
System.out.println("5+5="+5+5);//结果为5+5=55,这里“+”位于“”后面,不是作加法而是做字符串连接
System.out.println(5+5+"5+5");//结果为10=5+5
short s=1;
s+=1;
并不等于
short s=1;
s=s+1;
而等价于
short s=1;
s=(是的数据类型)(s+1);
解释:
扩展的赋值运算符其实隐含了一个强制类型转换。
s=s+1;这句代码其实它的实现过程是这样的:1为默认的int类型,所以s+1的运算中,short类型的s被默认转为int类型,又将两者的相加值赋值给一个short类型的变量s,这里发生了截取转换,由int类型的值转换为short,可能发生数据丢失,所以会发生如下报错。
修改后成功运行:
&&与&的区别?同理||与|的区别?
A:其实最终效果是一样的
B:&&具有短路的效果,即如果&&左边已经能够判断出结果,则不再去判断右边。
生命不止,奋斗不息!