包装类
- 针对八种基本数据而理性相应的引用类型---包装类
- 有了类的特点,就可以调用类中的方法
基本数据类型 | 包装类 |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
包装类和基本数据类型的转换
基本数据类型和包装类的相互转换
- jdk5前的手动装箱和拆箱方式,装箱:基本类型--->包装类型,反之,拆箱
- jdk5(包含jdk5)以后的自动装箱和拆箱方式
- 自动装箱底层调用的是valueOf方法,比如Integer.valueOf()
java
package com.shedu.wrapper_;
public class Integer01 {
public static void main(String[] args) {
//演示int《--》Integer的装箱和拆箱
//jdk5前是手动装箱和拆箱
//手动装箱
int n1 = 100;
Integer integer = new Integer(n1);
Integer integer1 = Integer.valueOf(n1);
//手动拆箱
//Integer ------》int
int i = integer.intValue();
//jdk5后,就可以自动装箱和自动拆箱
int n2 = 200;
//自动装箱 int---->Integer
Integer integer2 = n2;//底层使用的是:integer.valueOf(n2)
//自动拆箱Integer------>int
int n3= integer2;//底层使用的仍然是intValue()方法
}
}
包装类型和String类型的相互转换
java
package com.shedu.wrapper_;
public class WrapperVSString {
public static void main(String[] args) {
//包装类(Integer)-->String
Integer i = 100;//自动装箱
//方式1
String s1 = i+"";
//方式2
String s2 = i.toString();
//方式3
String s3 = String.valueOf(i);
//String --> 包装类(Integer)
String s4 = "123";
Integer i1 = Integer.parseInt(s4); // 使用到自动装箱
Integer i2 = new Integer(s4);
}
}
包装类的常用方法
练习
java
package com.shedu.wrapper_;
public class WrapperExercise02 {
public static void main(String[] args) {
methods();
}
public static void methods() {
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i == j);//false
/*
源码:
1. 如果i在IntegerCache.low(-128)~IntegerCache.high(127)范围内,之际从数组中返回
2.如果不在这个范围内,就直接new Integer()
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
*/
//当范围在-126 ------127之间时,直接返回值
Integer m = 1;//底层调用Integer.valueOf();
Integer n = 1;//底层调用Integer.valueOf();
System.out.println(m == n); //true
//当范围在-126 ------127之间时,直接返回值
//否则,就new Integer();
Integer x = 128;
Integer y = 128;
System.out.println(x == y);//false
//当有基本数据类型进行比较,比较的就是数值
int n11 = 128;
System.out.println(n11 == x);//true
}
}