编程基础 之 常量变量(常量及进制转换、变量、类型转换(精度丢失))
常量及进制转换
常量:
进制转换:
二进制
计算机中存储数据的方式都是使用二进制,计算机本身也只识别二进制
其他进制转换:
负数的二进制体现形式
上述结果可以自行通过电脑中的计算器验证的哦。(▽)
变量
Java中严格区分大小写
什么时候定义变量?
当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作。
拓展问题一:String 是最基本的数据类型吗?
( `(^▽^*)* ,我会把这个问题放在这里讲,就是因为有大部分的人在这个问题上会纠结,同时,在我们面试笔试的时候,这个也很有可能会问到。String毋庸置疑是我们经常会用到的,所以大家就会有种它是基本数据类型的错觉,但其实,String并不是基本的数据类型 ! ﹀<(-▽-)>﹀)
String 不是最基本的数据类型。
Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;
除了基本类型(primitive type),剩下的都是引用类型(reference type),
Java 5以后引入的枚举类型也算是一种比较特殊的引用类型。
类型转换
自动类型转换:
理解源类型和目的类型:
源类型---->目的类型,(编译通过)
源类型---->目的类型,(数据溢出)
目的类型比源类型表达的数据范围更广
注意:精度丢失问题
看懂上面图我们就应该知道下面输出的是什么了?
欢迎大家评论区公布答案。♪(^∇^*)*
System.out.println(‘a’+1);
System.out.println(char(‘a’+1));
拓展问题二:
float f=3.4; //是否正确?
不正确。
解析:3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换 float f =(float)3.4; 或者写成 float f =3.4F; 。
拓展问题三:
short s1 = 1; s1 = s1 + 1; //有错吗?
short s1 = 1; s1 += 1; //有错吗?
解析:
short s1 = 1; s1 = s1 + 1;
由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。
short s1 = 1; s1 += 1;
可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。