关于boxing和unboxing的Java面试题
来源:互联网 发布:app吓人软件 编辑:程序博客网 时间:2024/04/29 20:07
先看代码:
public class Testboxing {public static void main(String[] args) {Integer a = new Integer(40);Integer b = new Integer(40);System.out.println(a==b);Integer a1 = 127;Integer b1 = 127;System.out.println(a1==b1); // trueInteger a2 = 128;Integer b2 = 128;System.out.println(a2==b2); // false}}
结果:
1. false
2. true
3. false
原因分析
1. 只要是new Integer,不管数据是多少总是建立新的对象,a==b总是false
2. 如果不是new Integer,且取值范围在-128~127之间时,JVM不建立对象,a==b是true
3. 如果不是new Integer,且取值范围超出-128~127时,JVM建立对象,a==b是false
装箱boxing就是把基础数据类型包装成对象。如:
Integer a = new Integer() ;a = 100 ;
拆箱unboxing就是把对象转换成基础数据类型。如:
int b = new Integer(100) ;
Java默认的基础类型取值范围是:
boolean:true 和 false
全部的byte 值
short: -128 和 127 之间
int: -128 和 127之间
char: 从 \u0000 到 \u007F(0-127基本ASCII的范围)
如果超出上述范围,JVM自动建立对象,而不是基础类型。
完整的测试代码:
public class TestBoxing {public static void main(String[] args) {Integer a = new Integer(40);Integer b = new Integer(40);System.out.println(a==b); // falseInteger a1 = 127;Integer b1 = 127;System.out.println(a1==b1); // trueInteger a2 = 128;Integer b2 = 128;System.out.println(a2==b2); // falseShort s = new Short((short) 100);Short t = new Short((short) 100);System.out.println(s==t); // falseShort s1 = 127;Short t1 = 127;System.out.println(s1==t1); // trueShort s2 = 128;Short t2 = 128;System.out.println(s2==t2); // falseCharacter c = new Character('a');Character d = new Character('a');System.out.println(c==d); // falseCharacter c1 = 'a';Character d1 = 'a';System.out.println(c1==d1); // trueCharacter c2 = '※';Character d2 = '※';System.out.println(c2==d2); // false}}
- 关于boxing和unboxing的Java面试题
- 关于Boxing和Unboxing
- 关于boxing 和 unboxing
- java中的Boxing和unboxing
- java 原语(int)和基本数据类之间的boxing unboxing
- java中的auto-boxing/unboxing
- java 自动拆箱(unboxing)和自动装箱(boxing)
- C#的Boxing/Unboxing解析
- boxing, unboxing
- Java自动装拆箱boxing与unboxing
- 装箱和拆箱(boxing&unboxing)-.NET
- 【Java面试题-004】Java支持哪些数据类型?什么是Autoboxing和Unboxing?
- 减少装箱(Boxing)和拆箱(Unboxing)操作(感觉有用,抄过来的)
- .NET中六个你必须知道的重要概念之装箱(boxing)和拆箱(unboxing)
- C#中装箱和拆箱的作用 the effection of boxing and unboxing
- Java Auto Boxing and Unboxing -Java 学习笔记 (23)
- 11.3 Boxing and unboxing
- Boxing and Unboxing
- 一个加密解密算法
- No CurrentSessionContext configured 异常解决
- 【有趣的面试算法题】之六 把正数集中的数排列成一个最小的数,最高位升序排列就好
- rabbitMq安装
- CXF入门教程(1) -- 第一个webService
- 关于boxing和unboxing的Java面试题
- memmove与memcpy的区别
- Java,写在一行的连加,与写在多行连加的性能对比
- json教程从入门到使用
- 【Cocos2dx】移植安卓避免手动添加cpp文件到Android.mk文件的方法
- ssh配置互信
- eclips android环境搭建
- JS支持文本框换行属性
- Android实现的三种翻页功能原理