包装类介绍

包装类

5.1 概述

Java 提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:

基本类型 对应的包装类(位于 java. Lang 包中)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
除了这个 char 型数据,别的都是首字母大写就好了
包装类总结来说就是以基本数据类型未标桩定义的对象包

5.2 Integer 类

  • Integer 类概述
    包装一个对象中的原始类型 int 的值
  • Integer 类构造方法及静态方法
方法名 说明
public Integer (int value) 根据 int 值创建 Integer 对象 (过时)
public Integer (String s) 根据 String 值创建 Integer 对象 (过时)
public static Integer valueOf (int i) 返回表示指定的 int 值的 Integer 实例
public static Integer valueOf (String s) 返回保存指定 String 值的 Integer 对象
static string tobinarystring (int i) 得到二进制
static string tooctalstring (int i) 得到八进制
static string toHexstring (int i) 得到十六进制
static int parseInt (string s) 将字符串类型的整数转成 int 类型的整数
    public static void main(String[] args) {
    
    
        Integer last1 = new Integer(10); //以前过时的创建方法
        Integer last2= new Integer("1234");  //也是过时的创建方法
        System.out.println(last1);  //10
        System.out.println(last2);  //1234

        //现在的Integer创建方式一般是用这个静态方法直接进行创建
        Integer now1 = Integer.valueOf(10);  //10
        Integer now2 = Integer.valueOf("4567");  //4567
        System.out.println(now1);
        System.out.println(now2);

        //包装类的进制转换
        /*
        * 下面这个也是一种静态方法
        * 主要作用是将这个里面传递的参数转化为一个自己定义的进制
        * */
        String binary= Integer.toBinaryString(10); //十进制
        String binary1= Integer.toOctalString(9); //八进制
        String binary2 = Integer.toHexString(17);//十六进制
        System.out.println(binary);//1010
        System.out.println(binary1);//11
        System.out.println(binary2);//11
    }

其中这个方法是不全的,对于这个 parse 转化,我们可以又 parseInt 也可以有 Double. parseDouble,也可以有 Boolean. parseBoolean
同样对于这个 toXXXString 方法,我们也有一个总方法就是 toString 方法,这个方法可以我们自己自定义这个进制

        String binary3 = Integer.toString(3,2);
        String binary4 = Integer.toString(9,8);
        String binary5 = Integer.toString(10,9);
        System.out.println(binary3);
        System.out.println(binary4);
        System.out.println(binary5);

但是要注意这个 Double 类型虽然也有这个 toString 方法,但是却不能进行进制转化
有关于进制转化的可以看这个文章。一个是 obsidian 的内链,一个是博客的链接
[[二进制, 八进制, 和十六进制的输入和输出]]
博客

5.3 装箱与拆箱

基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:

  • 装箱:从基本类型转换为对应的包装类对象。
  • 拆箱:从包装类对象转换为对应的基本类型。

用 Integer 与 int 为例:(看懂代码即可)
基本数值---->包装对象

Integer i = new Integer (4);//使用构造函数函数
Integer iii = Integer.ValueOf (4);//使用包装类中的 valueOf 方法

包装对象---->基本数值

int num = i.intValue ();

        int i = now1.intValue();
        int i2 = now2.intValue();
        byte a = now1.byteValue();
        byte b = now2.byteValue();
        System.out.println(i);
        System.out.println(i2);
        System.out.println(a);
        System.out.println(b);

对于这个装箱和拆箱的过程,其中拆箱其实就是对这个包装类的成员值变量进行了强制类型转化

    private final int value;
    public byte byteValue() {
    
    
        return (byte)value;
    }

对于这个装箱的过程,我们其实就是对这个包装类的内部成员进行赋值

	private final int value;
    public Integer(int value) {
    
    
        this.value = value;
    }

5.4 自动装箱与自动拆箱

由于我们经常要做基本类型与包装类之间的转换,从 Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成。例如:
Integer i = 4;//自动装箱。相当于 Integer i = Integer.ValueOf (4);
i = i + 5;//等号右边:将 i 对象转成基本数值 (自动拆箱) i.intValue () + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。

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

基本类型转换为 String

  • 转换方式
  • 方式一:直接在数字后加一个空字符串
  • 方式二:通过 String 类静态方法 valueOf()
  • 示例代码
public class IntegerDemo {
    
    
    public static void main(String[] args) {
    
    
        //int --- String
        int number = 100;
        //方式1
        String s1 = number + "";
        System.out.println(s1);
        //方式2
        //public static String valueOf(int i)
        String s2 = String.valueOf(number);
        System.out.println(s2);
        System.out.println("--------");
    }
}

String 转换成基本类型

除了 Character 类之外,其他所有包装类都具有 parseXxx 静态方法可以将字符串参数转换为对应的基本类型

  • public static byte parseByte(String s):将字符串参数转换为对应的 byte 基本类型。
  • public static short parseShort(String s):将字符串参数转换为对应的 short 基本类型。
  • public static int parseInt(String s):将字符串参数转换为对应的 int 基本类型。
  • public static long parseLong(String s):将字符串参数转换为对应的 long 基本类型。
  • public static float parseFloat(String s):将字符串参数转换为对应的 float 基本类型。
  • public static double parseDouble(String s):将字符串参数转换为对应的 double 基本类型。
  • public static boolean parseBoolean(String s):将字符串参数转换为对应的 boolean 基本类型。

[!tip]

除了 Character 类之外,其他所有包装类都具有 parseXxx 静态方法可以将字符串参数转换为对应的基本类型;
为什么 Character 类没有呢
这是因为这些强制转化的参数都是字符串的类型
Character 类表示一个字符,而字符本身就是一个单个的字符,无法像整数或浮点数那样具有多个字符组成的表示形式。因此,从字符串中解析字符的需求不如解析整数或浮点数那样常见。
如果想将一个表示单个字符的字符串转换成 char 类型,可以使用 charAt 方法来提取其中的字符。例如:

String str = "A"; 
char c = str.charAt(0); 
System.out.println(c);  // 输出:A

代码使用(仅以 Integer 类的静态方法 parseXxx 为例)如:

  • 转换方式
    • 方式一:先将字符串数字转成 Integer,再调用 valueOf ()方法
    • 方式二:通过 Integer 静态方法 parseInt ()进行转换
  • 示例代码
public class IntegerDemo {
    
    
    public static void main(String[] args) {
    
    
        //String --- int
        String s = "100";
        //方式1:String --- Integer --- int
        Integer i = Integer.valueOf(s);
        //public int intValue()
        int x = i.intValue();
        System.out.println(x);
        //方式2
        //public static int parseInt(String s)
        int y = Integer.parseInt(s);
        System.out.println(y);
    }
    
}

[!warning]

如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出 java.lang.NumberFormatException 异常。

猜你喜欢

转载自blog.csdn.net/everything_study/article/details/132510399
今日推荐