Java自动装箱与拆箱
来源:互联网 发布:c语言if并列多个条件 编辑:程序博客网 时间:2024/04/25 19:33
一、布尔类型Boolean的情况
在java中,装箱与拆箱中会遇到这两种情况:
Boolean flag = false;System.out.println(flag = true);System.out.println(flag == true);
#Output:
true
true
Boolean flag = false;System.out.println(flag == true);System.out.println(flag = true);#Output:
false
true
是不是很奇怪?为什么呢
第一种,是因为先将true赋给flag,if条件句里是赋值语句,故输出为true;然后再执行flag==true时,是判断语句,由于flag已经被赋值为true,故输出结果也为true
第二种,是先if语句先判断flag是否为true,显然不是,故输出为false;然后再执行if条件句里的赋值语句,故输出结果也为true
其实这里还有一个潜在的知识点:
Boolean flag = false;Boolean flag = Boolean.valueOf(false);这两句是等价的。jdk1.5以后的版本引用了自动装箱与拆箱,下边的一句就是自动装箱。
Boolean flag = false; //Autoboxingboolean flag1 = flag.booleanValue(); //unboxing这两句分别是自动装箱(autoboxing)与拆箱(unboxing)。
什么是自动装箱呢?
Converting a primitive value (an int, for example) into an object of the corresponding wrapper class (Integer) is called autoboxing
(将一个基本类型的值转化为其对应包装类的对象就是自动装箱)
Converting an object of a wrapper type (Integer) to its corresponding primitive (int) value is called unboxing
(讲一个包装类型的对象转化为对应的基本类型就是拆箱)二、对于整型的Integer的情况:
例:
Integer i0 = 200; //autoboxingint i1 = i0;//unboxingInteger i2 = 200;System.out.println(i0 == i1);System.out.println(i0 == i2); System.out.println(i0.equals(i2)); Integer i3 = new Integer(200);System.out.println(i0 == i3);System.out.println(i0.equals(i3)); System.out.println(i1 == i3);Integer i4 = 3;Integer i5 = 3;System.out.println(i4 == i5);System.out.println(i4.equals(i5));#Out:
true
false
true
false
true
true
true
true
false
true
false
true
true
true
true
三、字符串String的情况
== 比较对象的引用是否相同,引用就是对象地址。equals是对象的方法,基本上实现来比较对象自己的内容
说多了也没用,看程序
false
说多了也没用,看程序
String s1 = "a";String s2 = "b";String s3 = "ab";String s4 = s1 + s2;String s5 = "a" + "b";String s6 = s1 + "b";StringBuffer s7 = new StringBuffer("abc");String s8 = s7.substring(0,2);System.out.println(s3 == s4);//FSystem.out.println(s3.equals(s4));//TSystem.out.println(s3 == s5);//TSystem.out.println(s3.equals(s5));//TSystem.out.println(s3 == s6);//FSystem.out.println(s3.equals(s6));//TSystem.out.println(s4 == s6);//FSystem.out.println(s4.equals(s6));//TSystem.out.println(s4 == s8);//FSystem.out.println(s4.equals(s8));//T
false
true
true
true
false
true
false
true
false
true
true
false
true
false
true
0 0
- Java自动装箱与自动拆箱
- java-自动装箱与自动拆箱
- JAVA自动装箱与拆箱
- java的自动装箱与拆箱
- java自动装箱与拆箱
- Java 自动装箱与拆箱
- java 自动拆箱与装箱
- Java 自动装箱与拆箱
- Java 自动装箱与拆箱
- java 自动装箱与拆箱
- Java自动装箱与拆箱题目
- java自动装箱与拆箱
- Java 自动装箱与拆箱
- Java 自动装箱与拆箱
- java 自动装箱与拆箱
- JAVA 自动装箱与拆箱
- Java 自动装箱与拆箱
- java自动装箱与拆箱
- android中fragment出现replace方法参数不匹配
- 函数模板---上
- java 观察者模式
- REPLACE INTO 和 INSERT INTO ... ON DUPLICATE KEY UPDATE SET ...
- 【第7题】360校园招聘2015届技术类笔试题
- Java自动装箱与拆箱
- UITableView的性能优化
- 【第8题】360校园招聘2015届技术类笔试题
- 算法训练 王、后传说
- 【第9题】360校园招聘2015届技术类笔试题
- 如何使用纯java config来配置spring mvc
- 检查自变量的生命周期和作用域
- 规律题-3
- 【第10题】360校园招聘2015届技术类笔试题