初见打印中String类的各种"新鲜感"
图一
当System.out.println()的括号中出现字符串时,“+“所起的的是连接作用,如图所示的”101234“与”10abcd“,而a+10则可以直接计算出来。
图二
图二亦然,str2与str3连接起来输出(非常的方便)
图三
看到图三你可能会有点疑惑,其实很简单, 第1行的”b="是常量字符串可直接打印,+b的“+”起连接作用,b为10,“c=”同为字符串直接打印,+c的“+”起连接作用,c为20;
第2行和第3行你可能有些疑惑,为什么第三行的结果被计算出来了呢,这是因为我们对b+c套上了();
第4行则是因为b+c在字符串“= b+c”的前面,我们知道代码从左向右进行,故而在碰到a+b时被优先计算了出来;
"0"和"非0"不代表正误
由此两张图我们可以看出if后面的d虽然是”1“,但却无法运行,这是因为JAVA中由专门的布尔型变量(true/false),也就是说true不代表”非0“,false也不代表”0“。 不过我们可以在if后面添加语句来代替true/false,如下图:
常见的类型转换
JAVA中类型转换有两种,即自动类型转换(隐式)和强制类型转换(显式)。 自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行。
强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。 注意事项:
- 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型
- 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失
- 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查
- 强制类型转换不一定能成功,不相干的类型不能互相转换。
类型提升
不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
1.int与long之间:int会被提升为long
2. byte与byte的运算
结论: byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.
3.类型提升小结
- 不同类型的数据混合运算, 范围小的会提升成范围大的.
- 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.
4.int转换为String
如图即为方法之一。
|