JAVA基础:包装类(装箱,拆箱,以及内存地址)

本文深入探讨了Java中基本类型与包装类的关系,详细解释了自动装箱和拆箱的过程,以及在不同场景下如何手动进行类型转换。通过实例展示了包装类在内存中的存储方式和比较机制,帮助读者理解自动装箱和拆箱的内部实现。
摘要由CSDN通过智能技术生成
/*  包装类
 *  18/11/20
 *  
 *1.基本类型(全是小写)   包装类型(引用类型)
 *  byte          java.long.Byte
 *  short         java.long.Short         
 *  int           java.long.Integer
 *  long          java.long.Long
 *  
 *  float         java.long.Float
 *  double        java.long.Double
 *  
 *  char          java.long.Character
 *  boolean       java.long.Boolean
 *  
 *              注意:BigInteger BigDecmail (没有对应的基本类型,主要用于高精度计算)
 *            
 *2.自动装箱和自动拆箱:自动装箱和拆箱是由编译器来完成的,编译器会在编译期根据语法决定是否进行装箱和拆箱动作。
 */
public class WrapClassTest03 {
	public static void main(String[] args){
		//例一(自动装箱)
		m1(1);     //  int---->Integer 自动装箱
		Integer i1=1;    //自动装箱		被编译为:Integer i1=Integer.valueOf(i1);
		int i11=i1; //自动拆箱
		/*
		 * 特别注意:自动装箱拆箱是在jdk1.5之后出现的
		 */
		
   //重点:例二(手动装箱)
		
		//int--->Integer
		Integer b2=123;//编译器解析为:Integer b2=new Integer(123);
		Integer i2=new Integer(123); 
		
		//int,double--->String 
		String s1=1+"";
		String s2=String.valueOf(1); 
		String s3=Integer.toString(10); //将int类型转换为对应的String类型。
		String s4=Double.toString(10.1); //注意两个toString方法都不相同
		
		//String--->int,double
		int a1=Integer.parseInt("123");
		double a2=Double.parseDouble("123a");  //注意:运行报错(自己体会)	
		
		//String--->Integer
		Integer i3=Integer.valueOf("123");
		
		//Integer--->int
		Integer i4=1;
		int i5=i4.intValue();
				
		//Integer--->String
		Integer i6=1;
		String s6=String.valueOf(i6);
		String m6=Integer.toString(i6);
		
		
		
		
	    //练习:	
		Integer integer1 = 100;
		Integer integer2 = 100;
		System.out.println("integer1==integer2: " + (integer1 == integer2));// true  自动装箱的两个缓存中的 Integer对象的引用比较
		 
		Integer integer3 = 200;
		Integer integer4 = 200;
		System.out.println("integer3==integer4: " + (integer3 == integer4));// false 自动装箱的两个new Integer的引用比较
		  
		Integer integer5 = new Integer(100);
		Integer integer6 = new Integer(100);
		System.out.println("integer5==integer6: " + (integer5 == integer6)); // false 两个不同的Integer对象引用的比较
		 
		int int1 = 100;
		System.out.println("integer1==int1: " + (integer1 == int1));// true  Integer缓存对象拆箱后与int比较
		 
		int int2 = 200;
		System.out.println("integer3==int2: " + (integer3 == int2));// true  Integer对象拆箱后与int比较
		
		/*解析:重点说明integer 1~4,
		integer 1~2:-127-128已经被预先存放在常量池中等待调用,因此没有创建新对象
		integer 3~4:其余数字,将在堆中new出新对象。*/
	}
	


	public static void m1(Object o){
		
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值