Java 包装类

包装类

基本数据类型不是面向对象的,因此很多地方使用起来不方便,包装类可以很好的解决这个问题;

一、包装类的分类

  1. 包装类是针对八种基本数据类型相应的引用类型;

  2. 有了类的特点,就可以调用相应的类方法;

基本数据类型包装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble

二、包装类和基本数据类型

  1. jdk5 前的手动装箱和拆箱的方式。

    1. 装箱:基本类型 -> 包装类型
    2. 拆箱:包装类型 -> 基本类型
    // 手动装箱
    int n1 = 100;
    Integer integer = new Integer(n1);
    Integer integer1 = Integer.valueOf(n1);
    // 手动拆箱
    int i = integer.intValue();
    
  2. jdk5 以后自动拆箱和自动装箱。

    1. 自动装箱底层调用的是 valueOf() 方法;
    2. 自动拆箱底层调用的是 IntValue( ) 方法;
    // 自动装箱
    int n2 = 200;
    // 底层使用的是 Integer.valueOf(n2) 方法
    Integer integer2 = n2;
    // 自动拆箱
    // 底层使用的是 IntValue() 方法
    int n3 = integer2;
    

三、包装类型和 String 类

  • 包装类型与 Integer 类型的转换案例
public class SwapIntToStr {
    public static void main(String[] args) {
        // 自动装箱
        Integer integer = 100;
        // 包装类 -> String
        String str1 = integer + "";
        String str2 = String.valueOf(integer);
        String str3 = integer.toString();
        // String -> 包装类
        String str = "123456";
        Integer integer1 = Integer.parseInt(str);
        Integer integer2 = new Integer(str);
    }
}

四、Integer 和 character 常用方法

public class Method {
        public static void main(String[] args) {
            // 返回最小值
            System.out.println(Integer.MIN_VALUE);
            // 返回最大值
            System.out.println(Integer.MAX_VALUE);
            // 判断是不是数字
            System.out.println(Character.isDigit('a'));
            // 判断是不是字母
            System.out.println(Character.isLetter('a'));
            // 判断是不是大写
            System.out.println(Character.isUpperCase('a'));
            // 判断是不是小写
            System.out.println(Character.isLowerCase('a'));
            // 判断是不是空格
            System.out.println(Character.isWhitespace('a'));
            // 转成大写
            System.out.println(Character.toUpperCase('a'));
            // 转成小写
            System.out.println(Character.toLowerCase('A'));
        }
    }

五、Integer 使用注意细节

  1. 如果基本数据类型值在 IntegerCache.low(-128)~IntegerCache.high(127) ,就直接从数组返回;
  2. 如果不在缓存的范围内,就直接使用 new Integer( );
  3. 使用 == 没有算数运算的话,包装类不会自动拆箱,所以 new 出来的两个对象不等;
  4. 开发的时候建议使用 equals( ) 方法;某些开发公约不允许使用 == 判断包装类是否相等;
/**
 * @author River
 * @datetime 2022/4/8 10:29
 */
public class Method {
        public static void main(String[] args) {
            // 自动装箱在 -127~128 之间,使用 == 二者相等
            Integer integer1 = 1;
            Integer integer2 = 1;
            System.out.println(integer1 == integer2);
            // 超过 127 使用 new Integer(),使用 == 二者不相等
            integer1 = 128;
            integer2 = 128;
            System.out.println(integer1 == integer2);
            // 直接使用构造器生成的实例, 使用 == 二者不相等;
            Integer integer3 = new Integer(1);
            Integer integer4 = new Integer(1);
            System.out.println(integer3 == integer4);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值