zoukankan      html  css  js  c++  java
  • 包装类



    ​ 在java中, 系统为每一个基本类型都提供 了 一个对应的包装类型

    基本类型 包装类
    byte Byte
    short Short
    int Integer
    long Long
    float Float
    double Double
    char Character
    boolean Boolean

    包装类在java.lang包中


    ![img](file:///C:/Users/yufan/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)


    为什么提供包装类?

    为了编程方便


    包装类对象的创建(构造方法)

    1.Java会把这些基本类型数据自动转换为包装类对象

    public static void m1(Object obj) {
    
    }
    
    public static void main(String[] args) {
    		m1(true);
    		m1(456);
    		m1(3.14);
    		m1("abc");
    		/*
    		 * 不能直接把基本类型数据赋值给引用类型变量
    		 * 当前程序没有语法错误,是因为Java把这些基本类型数据自动转换为了包装类对象, 再把包装 类对象传递给obj形参
    		 */
    }
    

    2.包装类的用法

    		//1)根据基本类型创建包装类对象
    		Boolean  boolean1 = new Boolean(true);
    		short s = 123;
    		Short short1 = new Short(s);
    		Integer integer1 = new Integer(78945);
    		Double  double1 = new Double(3.14);
    		Character character1 = new Character('a');
    		
    		//2)根据字符串创建包装类对象
    		boolean1 = new Boolean("true");
    		integer1 = new Integer("456");
    		double1 = new Double("45.789");
    		//注意1: 字符串的格式要符合数字的格式
    //		integer1 = new Integer("aa");   //java.lang.NumberFormatException
    		double1 = new Double("23e3");	//科学计数法
    		System.out.println(double1);		//23000.0
    		//注意2: 布尔类型的包装类把"true"字符串转换为true, 其他的字符串都转换为false
    		boolean1 = new Boolean("adfasfaslf");
    		System.out.println( boolean1 );
    		//注意3: Character包装类只有一个构造方法
    //		character1 = new Character("A");
    		
    		//3)输出常用字段
    		System.out.println( Integer.BYTES); 			//字节数, 4
    		System.out.println( Integer.SIZE);				//位数:  32
    		System.out.println( Integer.TYPE);				//基本类型 : int
    		System.out.println( Integer.MIN_VALUE);
    		System.out.println( Integer.MAX_VALUE);
    


    包装类的基本操作

    		Integer i1 = new Integer(123);
    		Integer i2 = new Integer("456");
    		
    		//1)从Number继承的 方法, 可以把包装类对象转换为基本类型数据
    		byte bb = i1.byteValue();
    		double dd = i2.doubleValue();
    		
    		//2)包装类实现了Comparable接口,重写了compareTo()方法, 根据包装类的value字段比较大小
    		//每个包装类都有一个value字段,保存对应基本类型的数据
    		System.out.println( i1.compareTo(i2) ); 		//-1
    		Character c1 = new Character('A');
    		Character c2 = new Character('a');
    		System.out.println( c1.compareTo(c2));  		//-32
    		Boolean b1 = new Boolean(true);
    		Boolean b2 = new Boolean(false);
    		System.out.println( b1.compareTo(b2));  		//1
    		
    		//3)equals(), 根据value字段进行判断是否相等
    		System.out.println( i1.equals(i2));
    		
    		//4) static int parseInt(String s)   可以把字符串转换为基本类型数据, 经常用
    		int num = Integer.parseInt("789");  	
    		dd = Double.parseDouble("45.78");
    
    		//注意, 字符串要符合数字格式
    		num = Integer.parseInt("adf");  //java.lang.NumberFormatException
    		
    		//5)valueOf() 把基本类型/字符串转换为包装类对象
    		i1 = Integer.valueOf(369);
    		i2 = Integer.valueOf("258");
    


    装箱与拆箱

    • 装箱:

      把基本类型转换为包装类对象

    • 拆箱:

      把包装类对象转换为基本类型


    		Integer i1 = 147; 		//自动装箱
    		int num = i1; 			//自动拆箱
    		
    		Integer i2 = 666; 		//根据基本类型数据666创建了一个包装类对象, 把这个包装类对象的引用赋值给i2
    		Integer i3 = 666;		//重新创建了一个包装类对象
    		System.out.println( i2.equals(i3));  	//true
    		System.out.println( i2 == i3 ); 		//false
    		
    		Integer i4 = 77;
    		Integer i5 = 77;
    		System.out.println( i4 == i5 ); 		//true
    		/*
    		 * Java认为-128~127之间的整数使用最频繁, 所以这个范围内整数创建的包装类对象采用享元模式 , 即把包装类对象存储到共享池中
    		 * 在执行 i4 = 77时, 系统根据77创建一个Integer对象, 把该对象存储到共享池中
    		 * 当执行i5 = 77时, 系统直接把共享池中的Integer对象的引用赋值给i5
    		 */
    		
    		Long gg1 = 15L;
    		Long gg2 = 15L;
    		System.out.println( gg1 == gg2 ); 		//true
    
  • 相关阅读:
    Java EE部分-- 各框架对比与项目优化
    Java EE部分--Mybatis
    Java EE部分--MVC
    Java EE部分--Hibernate、Struts
    Java EE部分--spring(二)
    Java EE部分--spring(一)
    IO和NIOAIO
    JDK、 反射

    线程(二)
  • 原文地址:https://www.cnblogs.com/huochemeiyouhuo/p/12534038.html
Copyright © 2011-2022 走看看