Java包装类

概念

Java中的包装类是将基本数据类型转换为对象的机制,它们提供了基本数据类型与对象之间的桥梁

以下是一些关于包装类的关键点:

  • 装箱和拆箱:装箱是指将基本类型值转换为包装类对象的过程,而拆箱则是相反的操作,即将包装类对象转换回基本类型值。这两个过程可以自动进行,也可以手动进行。自动装箱和拆箱是在Java 5中引入的,目的是让程序员更方便地在基本类型和对象之间切换。
  • 缓存机制:对于Integer类型来说,Java提供了一个内部的缓存机制,用于缓存一定范围内的数值。例如,使用Integer.valueOf()方法时,如果数值在-128到127之间,会直接从缓存中返回相应的Integer对象,而不是创建新的对象。这个机制有助于提高性能和节省内存。
  • 字符串与包装类的转换:String类与基本类型及其包装类之间可以通过各种方法相互转换,例如使用valueOf方法或构造函数等。

八种基本数据类型对应的包装类:

基本类型对应的包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

Integer类

Java中的Integer类是一个包装类,用于将基本数据类型int封装成对象

以下是一些关于Integer类的关键点:

  • 字段与构造方法:Integer类包含一个int类型的字段。它有两个构造方法,一个接受int值作为参数,另一个接受String值作为参数,并尝试将其转换为int值。
  • 装箱与拆箱:装箱是指将int基本类型值转换为Integer对象的过程,而拆箱则是将Integer对象转换回int基本类型值。这两种操作可以自动进行,也可以手动进行。自动装箱和拆箱是在Java 5中引入的,目的是让程序员更方便地在基本类型和对象之间切换。
  • 缓存机制:对于Integer类型来说,Java提供了一个内部的缓存机制,用于缓存一定范围内的数值。例如,使用Integer.valueOf()方法时,如果数值在-128到127之间,会直接从缓存中返回相应的Integer对象,而不是创建新的对象。这个机制有助于提高性能和节省内存。
  • 字符串与整数的转换:Integer类提供了多种方法来在int类型和String类型之间进行转换,如Integer.parseInt(String s)可以将字符串转换为int,而Integer.toString(int i)则将int转换为字符串。
  • 其他方法和常量:除了基本的转换功能,Integer类还提供了一些有用的常量和方法,比如用于二进制操作的方法(如highestOneBitnumberOfTrailingZeros)。

代码展示 :

public class IntegerExample {
    public static void main(String[] args) {
        // 装箱操作
        int num = 10;
        Integer integerObj = Integer.valueOf(num); // 自动装箱
        System.out.println("integerObj: " + integerObj);

        // 拆箱操作
        int unboxedNum = integerObj.intValue(); // 自动拆箱
        System.out.println("unboxedNum: " + unboxedNum);

        // 字符串与整数的转换
        String str = "123";
        int parsedInt = Integer.parseInt(str); // 将字符串转换为int
        System.out.println("parsedInt: " + parsedInt);

        String intStr = Integer.toString(parsedInt); // 将int转换为字符串
        System.out.println("intStr: " + intStr);

        // 其他方法和常量
        int binaryNum = 1010;
        int highestOneBit = Integer.highestOneBit(binaryNum); // 获取最高位的二进制值
        System.out.println("highestOneBit: " + highestOneBit);

        int trailingZeros = Integer.numberOfTrailingZeros(binaryNum); // 获取末尾零的个数
        System.out.println("trailingZeros: " + trailingZeros);
    }
}

自动装箱与自动拆箱

Java中的自动装箱和拆箱是Java 5引入的一个新特性,它允许在基本数据类型和对应的包装类之间进行自动转换。

自动装箱是指将基本数据类型自动转换为对应的包装类对象。例如,将int类型的值赋给Integer类型的变量时,Java会自动将int值转换为Integer对象。

自动拆箱是指将包装类对象自动转换为对应的基本数据类型。例如,将Integer对象赋给int类型的变量时,Java会自动将Integer对象转换为int值。

以下是一个简单的示例:

public class AutoBoxingUnboxingExample {
    public static void main(String[] args) {
        // 自动装箱:将int值赋给Integer对象
        int num = 10;
        Integer integerObj = num; // 自动装箱
        System.out.println("integerObj: " + integerObj);

        // 自动拆箱:将Integer对象赋给int值
        Integer anotherIntegerObj = new Integer(20);
        int anotherNum = anotherIntegerObj; // 自动拆箱
        System.out.println("anotherNum: " + anotherNum);
    }
}

输出结果:

integerObj: 10
anotherNum: 20

在上述示例中,我们首先将一个int值赋给了一个Integer对象,Java自动进行了装箱操作。然后,我们将一个Integer对象赋给了一个int值,Java自动进行了拆箱操作。

自动装箱和拆箱可以简化代码,提高开发效率。但是,过度使用自动装箱和拆箱可能会导致性能问题,因为每次装箱和拆箱都会创建新的对象。因此,在使用自动装箱和拆箱时需要权衡代码的简洁性和性能。

基本类型与字符串之间的转换

基本类型转换为字符串

在Java中,可以使用以下方法将基本类型转换为字符串:

  1. 使用String.valueOf()方法:该方法接受一个参数,可以是任何基本类型或对象,并返回其对应的字符串表示形式。

    int num = 42;
    String str = String.valueOf(num);
    System.out.println("str: " + str); // 输出:str: 42
    
  2. 使用包装类的静态方法:例如,Integer.toString()Double.toString()等方法可以将相应的基本类型转换为字符串。

    int num = 42;
    String str = Integer.toString(num);
    System.out.println("str: " + str); // 输出:str: 42
    
  3. 使用+运算符连接字符串和基本类型:当基本类型与字符串相加时,Java会自动将基本类型转换为字符串。

    int num = 42;
    String str = num + "";
    System.out.println("str: " + str); // 输出:str: 42
    

字符串转换为基本类型

在Java中,可以使用以下方法将字符串转换为基本类型:

  1. 使用包装类的parseXxx()方法:例如,Integer.parseInt()用于将字符串转换为int类型,Double.parseDouble()用于将字符串转换为double类型。

    String str = "42";
    int num = Integer.parseInt(str);
    System.out.println("num: " + num); // 输出:num: 42
    
  2. 使用Scanner类读取输入:可以使用Scanner类的nextInt()nextDouble()等方法从控制台读取用户输入的字符串,并将其转换为相应的基本类型。

    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入一个整数:");
    int num = scanner.nextInt();
    System.out.println("num: " + num); // 输出:num: 42
    

这些方法都可以将字符串转换为基本类型,你可以根据具体需求选择适合的方法进行转换。需要注意的是,如果字符串无法正确转换为对应的基本类型,将会抛出NumberFormatException异常。因此,在进行转换之前,最好先验证字符串是否符合预期的格式。

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值