强类型语言
Java 语言是一种强类型的语言。强类型的语言有以下几个要求:
第一、变量或常量必须有类型,而且只能在声明以后才能使用。
第二、赋值时类型必须一致:值的类型必须和变量或常量的类型完全一致。
第三、运算时类型必须一致:参与运算的数据类型必须一致才能运算。
基本数据类型转换
(1) boolean类型不参与转换 | |
---|---|
(2)隐式转换 | A:从小到大 |
B:byte,short,char – int – long – float – double | |
C:byte,short,char之间不相互转换,直接转成int类型参与运算。 | |
(3)强制转换 | A:从大到小:可能会有精度的损失,一般不建议这样使用。 |
B:格式: 目标数据类型 变量名 = (目标数据类型) (被转换的数据); | |
注意:byte和short型都没有常量形式。他们都是接收一个不超过他们取值范围的int型常量(隐式转换);如果这个int常量超过了他们的取值范围必须使用强制转换。 |
思考题和面试题
A:下面两种方式有区别吗?
float f1 = 12.345f;
float f2 = (float)12.345;
B:下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3;//ok
byte b2 = 4;//ok
b1 = b1 + 1;//error
b1 += 1; //ok,扩展的赋值运算符隐含了一个强制类型转换。
b1=(byte)(b1+1);//ok,同上
byte b3 = b1 + b2;//编译失败,因为是变量
byte b4 = 3 + 4;//ok,因为是常量
C:下面的操作结果是什么呢?
byte b = (byte)130;
D:字符参与运算
System.out.println('a');//a
System.out.println('a' + 1);//98
E:字符串参与运算
这里其实是字符串的连接
System.out.println("hello"+'a'+1);//helloa1
System.out.println('a'+1+"hello");//98hello
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5