1.包装类
包装类就是讲基本数据类型封装在类中。
eg:自己定义一个包装类
class IntDemo{
private int num;
public IntDemo(int num){
this.num = num;
}
public int intValue(){
return this.num;
}
}
这时候的IntDemo实际上就是int 数据类型的包装类,利用IntValue就可以实现基本数据类型变为对象的需求。
eg:IntDemo的使用:
public static void main(String[] args) {
Object obj = new IntDemo(55);
//向下转型
IntDemo temp = (IntDemo) obj;
//取出里面的基本数据类型
System.out.println(temp.intValue());
}
结论:
将基本数据类型包装为一个类对象的本质就是使用Object进行接收处理。
Java为了方便开发,专门提供了包装类的使用,而对于包装类的使用,提供; 俩种类型:
- 对象型(Object的直接子类):Boolean ,Character(char);
- 数值型(Number的直接子类):Byte , Double ,Short , Long ,
Interger(int) , Floart
2.装箱与拆箱
在包装类与基本数据类型之中存在俩个概念:
- 装箱:将基本数据类型变为包装类对象,利用每一个包装类提供的构造方法实现装箱处理。
- 拆箱:将包装类中包装的基本数据类型取出。利用Number 类中提供的六种方法。
eg:手工装箱与拆箱:
//装箱
Integer num = new Integer(55);
//拆箱
int data = num.intValue();
System.out.println(data);
在JDK1.5以后,提供了自动拆装箱的机制,最为重要的是由于此类机制的存在,可以直接利用包装类的对象进行各种数学计算。
eg:自动装箱与拆箱处理:
//自动装箱
Integer x = 55;
//可以直接利用包装类对象操作
System.out.println(x * 5);
比较:“==” 和 “equals” 问题:
eg:
Integer num1 = new Integer(10);
Integer num2 = new Integer(10);
System.out.println(num1 == num2); //false
System.out.println(num1 == new Integer(10)); //false
System.out.println(num1.equals(new Integer(10))); //true
- 对于手动装箱的对象来说,都是在堆上开辟了新空间。使用“==”比较时,结果一定是false。
- 自动装箱时:Integer var = ? 在-128至 127 范围内的赋值,Integer对象是在IntegerCache.cache 产生,会复用已有对象。这个区间的Integer 值可以直接使用“==” 进行判断,但是这个区间之外的所有数据,都会在堆上产生,不会复用已有对象。
阿里编码规范:所有的相同类型的包装类型的包装类对象之间值的比较,全部使用equals方法比较。
3.字符串与基本数据类型转换
- String类变为int类型:
public static int parseInt(String s) throws
- String变为double类型:
public static double parseDouble(String s)throws
- String变为Boolean类型:
public static boolean parseBoolean(String s)
eg:将字符串变为int型
String str = "123";
int num = Integer.parseInt(str);
System.out.println(num);
将字符串变为double型:
String str = "123";
double num = Double.parseDouble(str);
System.out.println(num);
需要注意的是,将字符串转为数字的时候,字符串的组成有非数字,那么转换就会出现错误NumberFormatException。所以在进行字符串与数值转换时,首先判断字符串是否由纯数字组成。
而字符串与boolean转换就不受影响。转boolean类型时,只要字符串不为“true”,结果都为false。
eg:
String str = "123";
boolean num = Boolean.parseBoolean(str);
System.out.println(num);
4. 基本数据类型转为字符串:
①任何数据类型使用了“+”连接空白字符串就变为了字符串类型。
②使用String类中提供的valueOf()方法。
String str = String valueOf(100);
System.out.println(str);