自动装箱和拆箱(包装和解包)
来源:互联网 发布:步进电机编程 编辑:程序博客网 时间:2024/05/22 14:03
自动装箱:就是把基础数据类型自动封装并转换成对应的包装类的对象。
拆 箱 :就是把包装类的对象自动解包并转换成对应的基础数据类型。
public class BoxDemo { public static void main(String[] args) { //demo1(); demo2(); } private static void demo2() { //Integer类型的自动装箱细节:一个字节范围内的整数(-128~127),是把值直接放在栈中的。一个字节范围以外的数据是放在堆中的,栈中放的是地址 Integer a1 = 100; Integer a2 = 100; System.out.println(a1==a2);//true Integer a3 = 200; Integer a4 = 200; System.out.println(a3==a4);//false Integer a5 = 100;//是装箱,且数据范围在一个字节之内,数据放在栈中 Integer a6 = new Integer(100);//显式new的,数据是在堆中开的---不是装箱 System.out.println(a5==a6);//false System.out.println("================"); //Integer类型对象如果和一个具体的数值比较,那么会自动拆箱(把其中的值取出来) 再和数值比较 Integer a7 = new Integer(200); Integer a8 = 200; System.out.println(a7==200);//true System.out.println(a8==200);//true } private static void demo1() { Integer a1 = 100; //自动装箱 ---把基本数据类型的数据直接赋给一个包装类对象(引用),Java自动帮我们封装成一个对象 System.out.println("a1="+a1); Integer a2 = new Integer(100); int i = a2;//自动拆箱 System.out.println("i="+i); System.out.println(a1==a2);//false System.out.println(a1==100);//true System.out.println(a1==i);//true System.out.println("============"); System.out.println(a1.hashCode()); System.out.println(a2.hashCode()); }}
public class BoxDemo2 { public static void main(String[] args) { String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); //true System.out.println( str1.equals(str2) );//true System.out.println("============"); String str3 = new String("abc"); //只要一new就在堆中新开一块内存空间 String str4 = new String("abc"); System.out.println(str3==str4); //false System.out.println( str3.equals(str4) );//true System.out.println("============"); System.out.println(str1==str3); //false System.out.println(str1=="abc");//true 拆箱后再比较---把具体的数据取出来比较 System.out.println(str3=="abc");//false str3本身就是显式new出来,不存在拆箱问题,因此直接拿栈中的数据去比较 //总之,以后要比较字符串的内容是否相等, //一定用 str.equals() 或 str.equalsIgnoreCase() //※String类中的所有字符串处理方法,都不会在原对象上修改,而是返回一个新对象。 //※因此凡是String型变量(对象),无论是不是new出来,判断"=="都是使用基本数据类型的用法,即判断栈中的数据 ---传参也一样,可以直接理解成值传递 String s="2"; String s2="23"; s2=s2.substring(0, 1);//返回的是一个新new的String对象 System.out.println(s==s2);//false System.out.println(s.equals(s2)); String ss = "abc"; aa(ss); System.out.println("ss: "+ss); String ss2 = new String("abc"); aa(ss2); System.out.println("ss2: "+ss2); String sss="aa"+"bb"+"cc"+"dd"; //StringBuffer StringBuilder } public static void aa(String str){ str=str+"ok"; }}
阅读全文
1 0
- 自动装箱和拆箱(包装和解包)
- 包装类、自动装箱、自动拆箱
- 对象包装器与自动装箱和拆箱
- Java 包装类 自动装箱和拆箱
- Java中的自动包装和解包
- 基本数据类型对象包装类、自动装箱和自动拆箱
- 基本数据类型对象包装类和自动装箱自动拆箱技术
- java基本类型、对应的包装类型(自动拆箱和自动装箱)
- 2.深入java包装类自动装箱、自动拆箱
- 包装类的自动装箱,自动拆箱
- 包装类的自动装箱,自动拆箱
- java包装类、拆箱和装箱
- 包装类的装箱和拆箱
- Java基础之包装类的自动装箱和拆箱详解
- JAVA——包装类的自动装箱和拆箱
- 对象包装器和自动装箱
- 对象包装器和自动装箱
- Java包装类、自动装箱与拆箱知识总结
- Android Intent 用法
- Redis系列-远程连接redis
- css3实现翘边阴影效果
- 统计某区间内的素数并打印显示
- window中对ubuntu通过samba共享出来的文件没有写权限/无法修改--转载
- 自动装箱和拆箱(包装和解包)
- python practice 04
- 深夜切题——PAT (Basic Level)-1015
- uboot启动第二阶段2
- Redis数据库及其基本操作
- 以无厚入有间,恢恢乎其于游刃必有余地矣
- (转载)彻底了解android中的内部存储与外部存储
- MyBatis#{}与${}区别与动态传入字段名问题解决
- hdu5115 Dire Wolf(区间dp)