本帖最后由 创造命运 于 2014-4-7 06:17 编辑
一、java中八种基本数据类型对应的包装类型
基本数据类型 包装类型
byte java.lang.Byte
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java.lang.Float
double java.lang.Double
boolean java.lang.Boolean
char java.lang.Character
二、包装类层次结构图
三、基本数据类型的包装类型是大同小异的,以下以java.lang.Integer为例,理解八种基本数据类型的包装类型。
public class BaoZhuangLei
{
public static void main(String[] args)
{
//获取int类型的最大值和最小值
System.out.println("int最小值"+Integer.MIN_VALUE);
System.out.println("int最大值"+Integer.MAX_VALUE);
//创建Integer类型的对象
Integer i1 = new Integer(10); //int--->Integer
Integer i2 = new Integer("123"); //String---->Integer
System.out.println(i1); //10
System.out.println(i2); //123
//一下程序编译可以通过,但是运行的时候会出错:数字格式化异常
//Integer i3 = new Integer("abc"); //NumberFormatException
/*
将int类型的十进制数据转换成2进制,8进制,16进制
Integer.toBinaryString(int);
Integer.toHexString(int);
Integer.toOctalString(int);
*/
String str = Integer.toBinaryString(10); //1010
/****** Integer int String 三种数据类型相互转换 ******/
// int--->Integer
Integer a1 = Integer.valueOf(10);
// Integer--->int
int a2 = a1.intValue();
// String--->Integer
Integer a3 = new Integer("234");
// Integer--->String
String s1 = a3.toString();
// String--->int
int a4 = Integer.parseInt("234");
// int--->String
String s2 = a4 + "";
String s3= 10 + "";
System.out.println(s2); //234
}
}
四、关于包装类与基本数据类型的自动装、拆箱
/*
1.自动装箱和自动拆箱是程序在编译阶段的一个概念,和程序运行无关
2.自动装箱和自动拆箱的主要目的是方便程序员编码
*/
public class BaoZhuangLei
{
public static void main(String[] args)
{
//JDK5.0之前
//int-->Integer(装箱)
Integer i1 = new Integer(10);
//Integer-->int(拆箱)
int i2 = i1.intValue();
//JDK5.0之后
Integer i3 = 10; //自动装箱
int i4 = i3; //自动拆箱
System.out.println(i3);
Integer i5 = new Ingeter(12);
Integer i6 = new Ingeter(12);
//这里不会有自动拆箱,i5与i6是两个不同的对象,它们的地址是不同的
System.out.println(i5==i6); //false,这里比较的是地址
System.out.println(i5.equals(i6)); //true,表示Integer已经重写了Object中的equals方法
//重点:
Integer i7 = 128; //等同于Integer i7 = new Ingeter(128);
Integer i8 = 128; //等同于Integer i8 = new Ingeter(128);
System.out.println(i7==i8); //false,这里比较的是地址
/*
需要注意的是:
java中引入了一个“整型常量池”,存储在方法区中,该常量池只存储“-128~127”之间的数据
*/
Integer a1 = 127;
Integer a2 = 127;
System.out.println(a1==a2); //true,比较地址,但是a1与a2的地址都是127在整型常量池中的地址
Integer a3 = -128;
Integer a4 = -128;
System.out.println(a3==a4); //true,比较地址,只不过a3与a4的地址都是-128在整型常量池中的地址
Integer a5 = -129;
Integer a6 = -129;
System.out.println(a5==a6); //false,同样此处比较的也是地址,但是-129却没有被保存在整型常量池中
}
}
|
|