Java包装类

Java包装类,第1张

Java包装类

文章目录
        • 包装类
          • 基本数据类型与包装类
            • 包装类来由:
            • 关系:
          • 基本数据类型与包装类的转换
            • 装箱auto-boxing
            • 拆箱auto-unboxing
            • int 与 Integer的区别:
          • 基本数据类型与String的转换:
            • 基本 —> String
            • String —-> 基本
          • 包装类与String的
            • 包装类 —> String
            • String —-> 包装类
            • 代码:

包装类 基本数据类型与包装类 包装类来由:
  • java并不是纯面向对象的,八种基本数据类型正是原因
  • 所以有了对应的包装类,让八种基本数据类拥有对象的特征,通过包装类来完善Java面向对象的特性
  • 用基本数据类型原因是它数据存储起来占内存小,效率高,方便快捷,用它来做底层存储,然后用包装类去的对象去做
关系: 基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean 基本数据类型与包装类的转换 装箱auto-boxing
  • 装箱:基本类型转换为引用类型【包装类】

  • 装箱的过程:

    • 堆中分内存
    • 值拷贝
    • 返回引用
  • 代码:

    Integer t1 = new Integer(129);
    Integer t2 = Integer.valueOf(120); 
    // 原码:static修饰的 判断如果值在缓存池则返回池中数【数组方式返回】 不然返回 new Integer(value)的值
    		
    Integer t3 = 5;	
    // 算不上装箱 -128 ~ 127 之内值系统已经装箱好了【缓存池】 用就可以了 看原码 它们取按数组方式取的 
    
  • 其它类似,方法是 包装类名.valueOf(对应的基本数据类型);

拆箱auto-unboxing
  • 拆箱:引用类型转换为基本类型

  • Integer.intValue()

  • 拆箱的过程

    • 分配内存
    • 值拷贝
    • 返回变量
  • 代码:

    // 过程:栈里面分内存 将 return value 赋值给栈内存的基本变量 ;  
    		Integer t1 = new Integer(122);
    		int n1  = t1.intValue();
    		
    		int n2 = Integer.MAX_VALUE;	// 返回Integer的最大最小值
    		int n3 = Integer.MIN_VALUE;
    		System.out.println(n2 + " " + n3);
    
  • 别的类型如byte 调Byte的对象.bytevalue(); return (byte)value;

int 与 Integer的区别:
  • 概念上:Integer 是一个Java int 类型的包装类, int 是Java的一种基本数据类型
  • 存储上:int 是基本数据类型,在栈里面开辟一个空间直接存值, Integer 是引用数据类型,它在栈里面声明一个该类型的变量存在堆里面存具体数据的地址,是对象的引用,当 new 一个 Integer 时,实际上生成一个指针指向此对象。
  • 使用上:Integer 必须实例化才能使用, int 声明就可以直接使用。
  • 默认值:Integer 是引用数据类型,所以默认值是 null, int 默认是 0 。
  • 继承上:Integer有父类Object,拥有Object类定义的方法,int没有父类。
基本数据类型与String的转换: 基本 —> String
  • String与其它数据拼接

  • 任何数据类型与字符串拼接后都是字符串类型

  • valueOf()方法

  • 它是String的一个static方法

  • 代码:

    • String str0 = String.valueOf('A');
      String str01 = String.valueOf(5);
      System.out.println(str0 + " " + str01);
      
String —-> 基本
  • 对应包装类.parse对应包装类("数值型的或者true或者false"); char没有

  • 代码:

    		String str = "AB";
    		int n4 = Integer.parseInt("5");
    		byte b1 = Byte.parseByte("12");
    		double d1 = Double.parseDouble("3"); // 如果不是数值型会报错 NumberFormatException
    //		double d2 = Double.parseDouble(str);
    //		char c = Character.PARAGRAPH_SEPARATOR
    		boolean flag = Boolean.parseBoolean("true");
    		char c1 = str.charAt(1);	// 将字符串索引处元素转化为字符类型
    		System.out.println(c1);
    
包装类与String的 包装类 —> String
  • 包装类对象.toString();
String —-> 包装类
  • 包装类.valueOf();
代码:
		// 包装类 ---> String :包装类对象.toString();
		String s = t1.toString();
		System.out.println(s);
		
		// String ---> 包装类 :包装类.valueOf();
		Integer t01 = Integer.valueOf(s);

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4747554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-08
下一篇 2022-11-08

发表评论

登录后才能评论

评论列表(0条)

保存