Java——包装类

一、概述

Java中的基本数据类型没有方法和属性,而包装类就是为了让这些拥有方法和属性,实现对象化交互。

基本数据类型 包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

二、常量池

  1. 包装类对象的初始值为null(是一个对象)
  2. Java中除了float和double的其他基本数据类型,都有常量池
  • 整数类型:[-128, 127]值在常量池
  • 字符类型:[0, 127]对应的字符在常量池
  • 布尔类型:true、false在常量池

因为有常量池的存在,所以有下列现象出现

public class IntegerTest {
    public static void main(String[] args) {
        Integer num1 = 100;   // 可以理解为String类的赋值方式
        Integer num2 = new Integer(100);
        Integer num3 = 100;
        System.out.println(num1 == num2);   // false
        System.out.println(num1 == num3);   // true
    }
}

因为new了之后,会在堆内存中开辟空间,所以先打印false、再打印true。但是常量池有范围是-128到127之间,如下

public class IntegerTest {
    public static void main(String[] args) {
        Integer num1 = 1000;   // 可以理解为String类的赋值方式
        Integer num2 = new Integer(1000);
        Integer num3 = 1000;
        System.out.println(num1 == num2);   // false
        System.out.println(num1 == num3);   // false
    }
}

超出了范围,打印结果就都为false了。

三、自动装箱和拆箱

  • 自动装箱和拆箱是JDK1.5开始的。
  • 基本数据数据类型自动转换为包装类型叫做装箱
  • 包装类型自动转换为基本数据类型叫做拆箱
public class IntegerTest {
    public static void main(String[] args) {
        Integer num1 = 100;   // 自动装箱  
        Integer num2 = num1 + 200;   // num1自动拆箱为基本数据类型然后进行计算
    }
}

分开分析

// 自动装箱
Integer num = 100;
// 100是基本数据类型(int类型)
// 原始代码:Integer num = Integer.valueof(100)

---

Integer num1 = 100;   // 自动装箱  

Integer num2 = num1 + 200;   
// 先自动拆箱、计算完后,再自动装箱
// 拆箱代码:num.iintvalue()
// 运算:num.intvalue() + 100
// 装箱:Integer.valueof(num.intvalue() + 100)

四、基本数据类型与字符串的转换

在开发过程中数据在不同平台之间传输都以字符串形式存在的,有些数据表示的数值含义,如果要用于计算我们就需要将其转换为基本数据类型。

4.1、字符串转换为基本数据类型

包装类型除了Character之外,都存在一个静态方法:parseXxxx,如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出java.lang.NumberFormatException异常。

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基本类型

例子

// 必须保证字符串是要即将转换的格式,否则异常
System.out.println(Integer.parseInt("100"));   // 100
System.out.println(Boolean.parseBoolean("true"));   // true

4.2、基本数据类型转换为字符串

(1)、可以直接在数字后加一个空字符串

int num = 100;
String str = num + "";
System.out.println(num);   // 100

(2)、通过String类静态方法valueOf()

int num = 100;
String str = String.valueOf(num);
System.out.println(num);   // 100

  

  

原文地址:https://www.cnblogs.com/xulinjun/p/14770041.html