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
    
  • 相关阅读:
    pip不是内部或外部命令也不是可运行的程序或批处理文件的问题
    动态规划 leetcode 343,279,91 & 639. Decode Ways,62,63,198
    动态规划 70.climbing Stairs ,120,64
    (双指针+链表) leetcode 19. Remove Nth Node from End of List,61. Rotate List,143. Reorder List,234. Palindrome Linked List
    建立链表的虚拟头结点 203 Remove Linked List Element,82,147,148,237
    链表 206 Reverse Linked List, 92,86, 328, 2, 445
    (数组,哈希表) 219.Contains Duplicate(2),217 Contain Duplicate, 220(3)
    重装系统
    java常用IO
    端口
  • 原文地址:https://www.cnblogs.com/huochemeiyouhuo/p/12534038.html
Copyright © 2011-2022 走看看