Java中的基本数据类型没有方法和属性,而包装类就是为了让这些拥有方法和属性,实现对象化交互。
基本数据类型 | 包装类型 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
因为有常量池的存在,所以有下列现象出现
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了。
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)
在开发过程中数据在不同平台之间传输都以字符串形式存在的,有些数据表示的数值含义,如果要用于计算我们就需要将其转换为基本数据类型。
包装类型除了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
(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