你真的理解Java的基本数据类型吗?
2013-09-28 00:02
225 查看
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的初始阶段,很多同学使用基本数据类型定义变量和引用类型定义变量以及使用类名做方法的返回值类型常常不知所以。今天我以自己的解读方式和个人的理解作一个简单的解释,和
- 1.java的八种基本数据类型以及其封装类的理解应用
- JAVA 基本数据类型理解
- java中八种基本数据类型以及它们的封装类,String类型的一些理解
- java 基本数据类型的理解
- Jvm(28),理解升级----java中的基本数据类型一定存储在栈中吗
- java中八种基本数据类型以及它们的封装类,String类型的一些理解
- java中八种基本数据类型以及它们的封装类,String类型的一些理解
- java基本数据类型
- java基本数据类型,String、Integer等类型,Class三种对象引用的箭头,即箭头是怎么指的?
- (三)Java八种基本数据类型所占的byte详解
- java基本数据类型
- Java 基本数据类型
- JAVA 基本数据类型 double float
- Java 基本数据类型 sizeof 功能
- 理解Java中的String数据类型
- java学习:java基本数据类型
- Core Java (二) Java的基本结构与数据类型
- java中得数据类型解说,静态static的理解
- java 常用基本数据类型的默认值