包装类的分类:
包装类是针对基本数据类型相应的引入类型——包装类,有了类的特点,就可以调用包中的特点。
八大包装类对应八大基本数据类型。
Character类实现了Comparable和Serializable接口,继承父类Object.
Boolean类实现了Comparable和Serializable接口,继承父类Object.和Character相同。
Byte,Integer,Long,Float,Double,Short都继承与Number类实现Comparable接口。
包装类和 基本数据类型的转换:
这里以int和Integer演示
/**
* 演示装箱和拆箱
*/
public class integer01 {
public static void main(String[] args) {
int n1=100;
//在jdk5前是手动装箱和拆箱
// 手动装箱 int转化-Integer
// Integer integer=new Integer(n1); 该方法已被弃用
Integer integer=Integer.valueOf(n1);
//手动拆箱 Integer转化-int
int i=integer.intValue();
//jdk5后,自动装箱或拆箱
int n2=200;
Integer integer1=n2;//自动装箱,底层使用的是valueOf(n2),本质上和手动上一样
System.out.println(integer1);
// 自动拆箱
int n3=300;
n3=integer;//底层使用的是intValue()方法
}
包装类和String类型的转换
public class WrapperVSString {
public static void main(String[] args) {
Integer i=100;
//自动装箱
//包装类(Integer)转换String
//方式一
String str=i+"";
System.out.println(str);
//方式二
String str2=i.toString();
System.out.println(str2);
//方式三
String str3=String.valueOf(i);
System.out.println(str3);
//string 转换Integer
String str4="12345";
Integer a=Integer.parseInt(str4);//用Integer提供的封装方法ParseInt转换
System.out.println(a);
// Integer b=new Integer(str4);
}
}
System.out.println(Integer.MIN_VALUE);//返回最小值
System.out.println(Integer.MAX_VALUE);//返回最大值
System.out.println(Character.isDigit('a'));//判断是不是数子
System.out.println(Character.isLetter('a')); //判断是不是字母
System.out.println(Character.isUpperCase('a')); 判断是不是大写
System.out.println(Character.isLowerCase('a'));//判断是不是小写
System.out.println(Character.isWhitespace('a'));//判断是不是空格
System.out.println(Character.toUpperCase('a'));//转成大写
System.out.println(Character.toLowerCase('A'));//转成小写
部分Integer和Character常用的方法
一道题:
第一个false的原因是,==判断的是对象地址是否相等,即是否为同一个对象。
i和j显然不是,第二个Interger m=1,Interger n=1,这是自动装箱,实际上是Integer.valueOf(),追到源码查看:
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
意思是如果形参的数如果小于一个范围或大于一个范围,则返回一个新new 的Integer对象。
范围是-128-127,第二个没有超过范围为true,第三个超出范围false
如果没有超出范围则从数组cache返回,超出了就返回一个新数组