1 基本数据类型对象包装类
八大基本数据类型有:byte、int、short、long、float、double、char、boolean。
基本数据类型对象包装类,就是按照面向对象的方法,讲基本数据类型包装成对象。
这样,就可以通过调用对象的方法,来对基本数据类型进行操作,
还可以实现基本数据类型和字符串之间的转换,以及不同进制间的转换。
基本数据类型 引用数据类型(对象包装类)
byte Byte
short Short
int Integer **
long Long
boolean Boolean
float Float
double Double
char Character **
基本数据类型对象包装类的最常见作用:
就是用于基本数据类型和字符串类型之间做转换。
1,基本数据类型转成字符串。
基本数据类型+""
基本数据类型.toString(基本数据类型值);
如:Integer.toString(34); //将整数34变成字符串"34"
2,字符串转成基本数据类型。
static int parseInt(String str):将字符串参数作为有符号的十进制整数进行解析。
xxx a = Xxx.parseXxx(String);
例:
int num = Integer.parseInt("123");
double num = Double.parseDouble("12.34");
boolean b = Boolean.parseBoolean("true");
方法二(非静态):
Integer的非静态方法intValue(),使用前要创建Integer对象。
例: Integer i = new Integer("123");
int num = i.intValue();
3,十进制转成其他进制。
toBinaryString(); 转成二进制
toHexString(); 转成十六进制
toOctalString(); 转成八进制
4,其他进制转成十进制。
static int parseInt(String str, int radix);
将字符串参数str解析为以radix为基数的有符号整数的十进制形式。
即把str看作radix进制的数,再转成十进制。
parseInt("110",10); //把字符串"110"转成十进制数。
parseInt("110",2); //把字符串"110"看成二进制数,再转成十进制值为6,结果为6。
代码示例:
class IntegerDemo{ public static void main(String[] args){ method_parseInt(); method_to(); method_2(); } public static void sop(Object obj){ System.out.println(obj); } public static void method_parseInt(){ int num = Integer.parseInt("123"); //字符串类型转换成基本数据类型 sop("num="+(num+4)); } public static void method_to(){ sop(Integer.toBinaryString(6)); //十进制转成二进制。 sop(Integer.toBinaryString(-6)); //十进制转成二进制。 } public static void method_2(){ int x = Integer.parseInt("110",10); //把十进制的110转成十进制 sop("x="+x); int y = Integer.parseInt("110",2); //把二进制的110转成十进制 sop("y="+y); int z = Integer.parseInt("3c",16); //把十六进制的3c转成十进制 sop("z="+z); }}
2. 基本数据类型对象包装类 JDK1.5新特性
JDK1.5 之后出现的新特性
自动装箱,自动拆箱。
Integer num = 12; //进行了自动装箱,将基本数据类型int类型的12,包装成Integer对象。
int count = num+1; //进行了自动拆箱,将Integer对象num拆箱为int类型,再与int类型的1相加,结果为int类型。
byte范围内的(-128~127),如果该数值的对象已经存在,则不会再开辟新的空间.
详见代码:
class IntegerDemo2{ public static void main(String[] args){ //Integer x = new Integer(4); Integer x = 4; //自动装箱,4是一个对象,相当于 new Integer(4) x = x + 2; //x+2: x进行了自动拆箱,变成了int类型,和2进行加法运算,再将和进行装箱赋给x。 //自动拆箱原理:x.intValue(); Integer m = 128; Integer n = 128; sop("m==n:"+(m==n)); //结果为false,因为是两个对象,内存地址值不同 Integer a = 127; Integer b = 127; sop("a==b:"+(a==b)); //结果为true,因为a和b指向了同一个Integer对象, //因为当数值在byte范围内时,对于新特性,如果该数值的对象已经存在,则不会再开辟新的空间。 //byte的范围:-128~127 } public static void sop(Object obj){ System.out.println(obj); } public static void method(){ Integer x = new Integer("123"); //此对象表示字符串参数所指示的int值 Integer y = new Integer(123); //此对象表示指定的int值 sop("x==y:"+(x==y)); //两个对象,内存地址不同,false sop("x.equals(y):"+x.equals(y)); //两个对象内容相同,即int值相同,true }}