Java中的包装类

包装类 ->基础数据类型的封装。
实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。

int     -> Integer
short   -> Short
byte    -> Byte
long    -> Long
float   -> Float
double  -> Double
char    -> Character
boolean -> Boolean

1.自动封箱和自动拆箱 指基本数据类型和对应的包装类之间可以直接转换
public class Main {
    public static void main(String[] args) {
        byte b1 = 1;
        short s1 = 1;
        int i1 = 1;
        long l1 = 1L;
        float f1 = 1.0f;
        double d1 = 1.0;
        char c1 = 'a';
        boolean bl1 = true;
        
        //自动封箱,等同于 Integer I = new Integer(i); 忽略new这个过程就是自动封箱
        Byte B = b1;
        Short S = s1;
        Integer I = i1;
        Long L = l1;
        Float F = f1;
        Double D= d1;
        Character C= c1;
        Boolean BL = bl1;

        //自动拆箱,可以直接将包装类对象赋值给对应的基础类型
        byte b2 = B;
        short s2 = S;
        int i2 = I;
        long l2 = L;
        float f2 = F;
        double d2 = D;
        char c2= C;
        boolean bl2 = BL;
    }
}

2.常用方法 
2.1 equals(Object o) 比较两个对象的值是否相同,需要注意的是比较之前会校验对象是否相同,即使Byte和Integer两个对象的值相同但equals方法的返回依旧是false。

2.2 xxxValue() 这里的xxx是泛指,该方法主要用于数值类型转换,返回值是基础类型。这里用Integer举例
public class Main {
    public static void main(String[] args) {
        Integer i1 = 1;
        int i = i1.intValue();
        byte b = i1.byteValue();
        short s = i1.shortValue();
        long l = i1.longValue();
        double d = i1.doubleValue();
        float f = i1.floatValue();
    }
}

2.3 valueOf(String str) 将入参转换为对应包装类类型,入参可以是String类型/对应基本类型
public class Main {
    public static void main(String[] args) {
        //入参是对应基本类型,返回值是Integer
        Integer i1 = Integer.valueOf(1);

        //入参是String
        Integer i2 = Integer.valueOf("1");;

        //当入参是String时可以规定进制
        Integer i3 = Integer.valueOf("1",2);

        int i =1;
        double d = 1.0;
        //会报错,需要强制类型转换成int
        Byte.valueOf(i);
        //不回报错,入参已经隐式类型转换成了long
        Long.valueOf(i);
        //会报错,Boolean的valueOf只允许传入boolean和String
        Boolean.valueOf(i);
        //会报错,Boolean的valueOf只允许传入char和String
        Character.valueOf(i);
        //不会报错,已经隐式类型转换
        Double.valueOf(i);
        //会报错,需要强制类型转换
        Float.valueOf(d);
        //会报错,需要强制类型转换
        Integer.valueOf(d);
    }
}

2.4 toSting() 以字符串形式返回值。

2.5 parseXxx(String str) 这里的Xxx是泛指,入参为String,返回值是对应的基础类型,用于类型转换
public class Main {
    public static void main(String[] args) {
        //将字符串转为基本数据类型
        byte b = Byte.parseByte("1");
        short s =Short.parseShort("1");
        int i = Integer.parseInt("1");
        long l = Long.parseLong("1");
        float f = Float.parseFloat("1");
        double d =Double.parseDouble("1");
        boolean bl =Boolean.parseBoolean("true");
        
    }
}
注意:parseXxx(String str) 和Xxx.valueOf(String str)两个方法
前者返回的是基本数据类型,后者返回的是包装类。
虽然可以通过自动拆箱,自动封箱完成包装类和基本数据类型之间的转换,但最好根据实际需求使用不同的方法。
Xxx.valueOf(String str)方法底层逻辑是先将传入的String字符串通过parseXxx(String str)方法转成对应基本类型,
再new一个新对象把值传进去,所以parseXxx(String str)要更好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值