你真的理解Java的基本数据类型吗?
来源:互联网 发布:js自动切换图片 编辑:程序博客网 时间:2024/05/16 11:43
1. 低范围向高范围会出错
int a = 5;a = a - 1.0;
上面的代码是错误的。因为表达式里最大范围是double,因为无特殊说明,这样的小数是double,这样a-1.0是个double型的,赋值给int 是不允许的。
所以
float f = 1.0;
也是错误的。
但是,对于 int , byte, short,char在各自范围内的是允许的。
正确:
byte b = 1;错误:
byte b = 8888;
2. 数值的下划线分隔
double a = 1.908_155_850
上面的代码是Java7新增的规范,设计的目的是为了让程序员更清楚看清长数字。
3. 除0真的安全吗?
很多比较java和C++/c等的书籍都会提到java的安全机制,比如除以0会得到Infinity,而不会抛出异常。
System.out.println(5/0);
在运行上述代码时是会有异常的。因为只要除以浮点0才会得到无穷大。
4. switch里能写什么?
一般的swith里只能写 int ,byte,short,char四个,但java7允许增加String类型。
5. 装箱、拆箱
JDK1.5后提供了自动装箱、拆箱操作,它的意思是你可以将一个基本数据类型直接和包装类型进行赋值。
要指出,虽然包装数据类型的变量是引用类型,但其实例可以和基本数据类型进行比较。如
new Integer(5) < 9;
在介绍.equals时许多书上都会提到,引用类型是不能直接比较相等的。比如:
Integer a = new Integer(5);Integer b = new Integer(5);System.out.println(a==b);
输出结果是false。但是若改为:
Integer a = 5;Integer b = 5;
结果又如何?运行结果是true。但是下面结果输出是false。
Integer a =300;Integer b =300;
这就让人困惑了。实际上我们查阅Integer的源代码可以发现,
系统在装箱时把-128到127范围内的int装箱后放入了一个i数组中,所以如果一个数字在这个范围内进行装箱后是可以直接比较的。
6. 常量池
以String为例,"Hello"直接量和new String("Hello")有什么区别呢?当直接使用如“Hello”等字符串直接量(包括编译时就已经计算出的),JVM会使用常量池(Constant pool)来管理它们,而使用String的构造器,新创建的String对象被保存在堆内存。也就是说,new String(“Hello")一共产生了两个对象。
比如,
String s1 = "Hello" + ”world“;String s2 = "Hell"+"o"+"world";System.out.println(s1==s2);
上面的结果是true.
因为JVM常量池保证相同的字符直接量只有一个,不会产生多个副本。因此s1,s2所引用的字符串可以在编译期间确定下来,且是常量池里同一个对象。
下面结果如何呢?
String s3="!";String s4="Helloworld!";String s5=s1+s3;
s4==s5输出是false。因为s5的值在编译时是无法确定的。除非s3和s4是final,这样就相当于一个简单的宏替换。
- 你真的理解Java的基本数据类型吗?
- java 数据类型 你真的在意吗
- 你真的搞明白Java中基本数据类型的转换了吗?
- 你真的理解Java的this和super吗?
- 你真的理解Java的按引用传递吗?
- java,你真的理解,=赋值的含义吗?
- 你真的理解java里的helloworld吗?
- Java中的String你真的理解了吗?
- 你真的理解Java传值与引用吗?
- 你真的理解java中的null“类型”吗?
- 你真的真的理解Java的按引用传递吗?
- 你真的真的理解Java的按引用传递吗?
- extern你真的理解吗?
- 你真的理解clear:both吗?
- 三层,你真的理解了吗?
- 你真的理解z-index吗?
- 你真的理解了AsyncTask吗?
- 你真的理解大数据吗?
- 111
- DB2 grant 授权
- 《论嫉妒》培根
- hdu 3635 Dragon Balls
- ST公司向STM32客户免费提供STemWin软件
- 你真的理解Java的基本数据类型吗?
- 《论幸运》培根
- 计算机入门与编程方法
- poj1062
- 数据结构之 队列的操作与实现
- 主机与虚拟机ping不通
- 黑马程序员_IO流(一)
- 矩阵的本质-运动的描述【好】
- Future和FutureTask