一、包装类:
基本类型-包装类
byte-Byte
short-Short
int-Integer
long-Long
float-Float
double-Double
char-Character
boolean-Boolean
二、包装类对象的创建
character包装类构造方法只有一个,根据基本类型创建包装类对象
其他的包装类构造方法都有两个,根据基本类型创建包装类对象,根据字符串创建包装类对象
public class Test01 { public static void main(String[] args){ //1。根据包装类基本类型创建包装类对象 Boolean bb= new Boolean(true); Character cc = new Character('A'); Integer ii = new Integer(123); Double dd = new Double(3.14); //2.根据字符串创建包装类对象,Character没有这个构造方法 Integer i = new Integer("456"); Double d = new Double("5.68"); //注意:根据字符串创建包装类对象时,字符串要符合对应的格式 //i= new Integer("aaa");//java.lang.NumberFormatException: For input string: "aaa" d = new Double("2e3");//2乘以10的3次方,科学计数法 System.out.println( d ); //Boolean会把true字符串转化为true,其他的字符串全部转化为false Boolean b = new Boolean("true"); System.out.println( b ); Boolean bbb = new Boolean("hello"); System.out.println( bbb ); } } |
三、包装类的常量
public class Test02 { public static void main(String[] args){ System.out.println(Integer.BYTES);//4 System.out.println(Integer.SIZE);//32 System.out.println(Integer.MAX_VALUE);//2147483647 System.out.println(Integer.MIN_VALUE);//-2147483648 System.out.println(Integer.TYPE);//int System.out.println(Double.POSITIVE_INFINITY);//Infinity System.out.println(Double.NEGATIVE_INFINITY);//-Infinity System.out.println(Double.NaN);//NaN //System.out.println(10/0); //java.lang.ArithmeticException: / by zero System.out.println(10/0.0); //Infinity System.out.println(-10/0.0); //-Infinity System.out.println(0/0.0); //NaN not a number System.out.println(Character.MAX_VALUE); System.out.println(Character.MIN_VALUE); System.out.println((int)Character.MIN_VALUE);//0 System.out.println((int)Character.MAX_VALUE);//65535 } }
四、包装类常用的方法
public class Test03 { public static void main(String[] args){ Integer i = new Integer(147); //每个包装类都有一个value字段,保存的是这个包装类对应的基本类型数据 //1。从Number继承的方法,可以把包装类对象转换为基本数据类型,实际上是把value字段强制类型转换 double d = i.doubleValue(); byte b = i.byteValue(); System.out.println( i );//147 System.out.println( d );//147 System.out.println( b );//-109 //2、包装类都实现了Comparable接口,重写了comparaTo()的方法,可以比较两个包装类的大小,根据value字段 Integer i2 = new Integer("258"); System.out.println(i.compareTo(i2)); //-1 表示i小于i2 Boolean b1 = new Boolean(true); Boolean b2 = new Boolean(false); System.out.println(b1.compareTo(b2)); //1 表示不相等 //3、重写了equals方法 System.out.println(i.equals(i2));//false System.out.println(b1.equals(b2));//false //小数采用近似值保存,有时不准确,如0·1在计算机中是无法准确的表示 System.out.println(Double.doubleToLongBits(1.1));//4607632778762754458 System.out.println(Double.doubleToLongBits(0.9));//4606281698874543309 System.out.println(2-1.1);//0.8999999999999999 System.out.println(Double.doubleToLongBits(2-1.1));//4606281698874543308 System.out.println(Double.doubleToLongBits(2-1.1)==Double.doubleToLongBits(0.9));//false //4、Integer.parseInt(String)可以把字符串转换为int类型数据 String text = "456"; int num = Integer.parseInt(text); System.out.println( num ); //Double.parseDouble(String)可以把字符串转化为double数据 double pi = Double.parseDouble("3.14"); //Boolean.parseBoolean(String)可以把字符串转化为boolean数据 boolean flag = Boolean.parseBoolean("true"); //在把字符串转化为基本数据类型数据时,字符串要符合目标类型的规则 //num = Integer.parseInt("3.14");//java.lang.NumberFormatException: For input string: "3.14" //5、把十进制数转化为二进制,八进制,十六进制 System.out.println(Integer.toBinaryString(100));//1100100 System.out.println(Integer.toOctalString(100));//144 System.out.println(Integer.toHexString(100));//64 //6、toString(int)可以把基本类型转化为字符串 text = Integer.toString(100);//100 System.out.println(text); text = Double.toString(3.14);//3.14 System.out.println(text); text = Boolean.toString(true);//true System.out.println(text); //valueOf()把基本类型/字符串转换为包装类对象 i =Integer.valueOf(258);//258 System.out.println(i); i = Integer.valueOf("147");//147 System.out.println(i); Double double1 = Double.valueOf(3.14);//3.14 System.out.println(double1); double1 = Double.valueOf("3.56");//3.56 System.out.println(double1); Boolean boolean1 = Boolean.valueOf(false);//false System.out.println(boolean1); boolean1 = Boolean.valueOf("ddffd");//false System.out.println(boolean1); } }
五、装箱与拆箱
public class Test04 { public static void main(String[] args){ Integer i1=789;//自动装箱,系统化根据基本数据类型数据789自定创建一个包装类对象,把该对象引用保存到i1中 Integer i2=789;//自动装箱,系统化根据基本数据类型数据789自定创建一个包装类对象,把该对象引用保存到i2中 int num = i1;//自动拆箱,系统把i1对象的value字段值赋给num //包装类对象判等 System.out.println(i1.equals(i2));//true System.out.println(i1==i2);//false Integer i3=88; Integer i4=88; System.out.println(i3==i4);//true /** * java认为-128~127之间的整数是使用最频繁的,这个范围内的整数装箱后采用享元模式 * -128~127之间的整数生成的包装类对象储存在方法区的常量池中 * 在执行i3=88时,会在常量池中创建一个包装类对象, * 在执行i4=88时,直接把常量池中的保重类对象的引用赋值给i4,即现在的i3和i4引用了常量池中同一个包装类对象 */ Long long1 = 123L; Long long2 = 123L; System.out.println(long1==long2);//true } }