基本类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
包装类型Integer
Integer类在对象中包装了一个基本类型int的值,Integer类型的对象包含一个int类型的字段。Integer提供了多个方法,能在int类型和String类型之间相互转换,还提供了处理int类型是非常有用的一些常量和方法。
将10进制num转为16进制
int num = 100;基本类型,无法直接调用方法
Integer n = Integer.valueOf(num);将基本类型转为其包装类后才能调用包装类的方法
静态方法,建议使用类名调用
Integer.toBinaryString(num);将num转成2进制,输出后的是String类型的数据//1100100
Integer.toHexString(num);将num转成16进制//64
int max = Integer.MAX_VALUE;//int类型的最大值2^31 - 1
int min = Integer.MIN_VALUE;//int类型的最小值-2^31
构造方法
public Integer(int value);
public Integer(String s);
//新建Integer类型时需要int类型和String类型的数值
int num = 100;
Integer n = new Integer(num);
String s = n.toString();
System.out.println(s);//"100"
//传入Stirng类型时必须是int类型的字符串表现,否则就会报错
NumberFormatException:For input string:"str"数字格式化异常
int和String类型的相互转换
int==》String
int num = 100;
1.String str = num+"";//拼串
2.String s = String.valueOf(num);//最简单明了
3.new Integer(num).toString();//toString
String==》int
String s = "100";
1.String=>Integer=>int
Integer ig = new Integer(s);//String转Integer
int i = ig.intValue();//Integer转int
2.使用Integer中的parseInt,将数字的字符串表现转为数字
int i = Integer.parseInt(s);//将字符串转为数字
num = 100;
手动装箱 Integer ig = Integer.valueOf(num);
手动拆箱 int i = ig.intValue();
JDK1.5之后可以自动拆装箱
自动装箱:将基本类型直接包装成它的包装类型
自动拆箱:将包装类型自动转换成它所对应的基本类型
自动装箱
int n = 100;
Integer num = n;//基本类型n自动转为其包转类型后,在赋值给其包装类的num
自动拆箱
Integer i1 = new Integer(10);
Integer i2 = new Integer(20);
System.out.println(i1+i2);//两个包装类型相加时自动拆箱为基本类型之后再相加
Integer的面试题
Integer i1 = new Integer(127);
Integer i2 = new Integer(127);
System.out.println(i1 == i2);//false
System.out.println(i1.equals(i2));//true Integer重写了Object类的equals()方法,比较的是两个值是否相等
Integer i3 = new Integer(128);
Integer i4 = new Integer(128);
System.out.println(i3 == i4);//false
System.out.println(i3.equals(i4));//true
Integer i5 = 128;
Integer i6 = 128;
System.out.println(i5 == i6);//false
System.out.println(i5.equals(i6));//true
Integer i7 = 127;
Integer i8 = 127;
System.out.println(i7 == i8);//true
System.out.println(i7.equals(i8));//true
//Integer i7 = 127 我们采用自动装箱这种方式给它赋值的时候,这个值如果子啊-128--127之间那么它会从内部缓存中取对象,不会创建新对象,两个地址值也就相等;如果超过则会重新new一个对象
其他包装类型
char<==>Character
char ch = 'a';
Character.isDigit(ch);//判断是否为数字
Character.isLetter(ch);//判断是否为子母
Character.isLowerCase(ch);//判断是否为小写子母
Character.isUpperCase(ch);//判断是否为大写子母