[原创]Java包装类详解_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2174 | 回复: 1   主题: [原创]Java包装类详解        下一篇 
ming.chen
注册用户
等级:中尉
经验:444
发帖:8
精华:0
注册:1970-1-1
状态:离线
发送短消息息给ming.chen 加好友    发送短消息息给ming.chen 发消息
发表于: IP:您无权察看 2016-5-11 18:03:01 | [全部帖] [楼主帖] 楼主

    在Java语言中,八大基本数据类型都有对应的包装类,那么什么是包装类呢?我们都知道,Java是一种面向对象的编程语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用过程中有很多不便的地方,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类代表,这样和八个基本数据类型对应的类称为包装类,有些地方也翻译成外覆类和数据类型类,当然叫什么我们不用太关注。

    包装类均位于Java.lang包,包装类和基本数据类型的对应关系如下表:

            包装类对应表

byte
Byte
boolean
Boolean
short
Short
char
Character
int
Integer
long
Long
float
Float
double
Double

    在这八个类里,除了Integer和Character之外,其他六个类的名称和基本数据类型一致,只是第一个字母大写而已。

    对于包装类来说,主要用途在以下两个方面:

(1)包含每种基本类型的相关属性,如最大值、最小值等,以及相关的操作方法。

(2)作为和基本数据类型相对应的类类型存在,方便设计到对象的操作,例如Map,List这些集合类里,像int,double这样的基本数据类型是放不进去的。

    八个包装类的使用比较类似,下面就以最常见的int基本数据类型和Integer类作为例子介绍实际包装类的使用。

    1.实现int和Integer类之间的相互转换

int n=10;
Integer in=new Integer(100);
//将int转换为Integer
Integer in1=new Integer(n);
//将Integer转换为int
int n1=in.intValue();

    2.Integer类的一些常用方法

    在Integer类中包含了一些对于int操作相关的方法,都是比较常用的方法:

    (1)parseInt()方法

public static int parseInt(Stirng s);

    该方法的作用是将数字字符串转换为int数值。使用范例如下:

String s="123";
int n =Integer.parseInt(s);

    此时变量n的值就是123。如果字符串里不全为数字的话,程序执行会产生异常。

    另一个parseInt()方法:

public static int parseInt(String s,int radix);

    则字符串按照radix进制转换为int,使用示例如下:

//2进制,“110”对应的n1是6
int n1=Integer.parseInt("110",2);
//8进制,“110”对应的n2是71
int n2=Integer.parseInt("110",8); 
//10进制,“110”对应的n3是110
int n3=Integer.parseInt("110",10);

    (2)toString()方法

public static String toString(int i);

该方法的作用是将int类型转换成String类型。使用范例如下:

//s的值是String类型的"1"
String s=Integer.toString(1);

另外一个toString()方法

  public static String toString(int i, int radix)

则将int类型按照radix进制转换字符串,使用示例如下:

//2进制,6对应的s1是“110”
String s1=Integer.toString(6,2);
//8进制,72对应的s2是“110”
String s2=Integer.toString(72,8);
//10进制,110对应的s3是“110”
String s3=Integer.toString(110,10);


    其实,自从JDK1.5版本以后,就引入了自动拆装箱的语法,也就是基本数据类型与对应的包装类进行转换的时候,系统将自动进行,这将大大的方便了我们的编程:

//int类型自动转换成Integer类型
int n=10;
Integer in=n;
//Integer类型自动转换成int类型
Integer in1=20;
int n=in1;

    关于Integer,还有一个不得不说的特性,我们知道Integer是类,我们都知道,当类的值相等时(如String类),两个实例对象的地址是不同的,例如:

//会输出false,即s1和s2不相等
String s1="abc";
String s2="abc";
System.out.println(s1==s2);

但是当Integer的值处于某一范围内时,当值相等时,两个Integer对象的地址是相等的,与String类不同。如下所示

//会输出true,即in1和in2相等
Integer in1=1;
Integer in2=1;
System.out.println(in1==in2);

原来当Integer通过自动装箱语法生成对象时,若int的值在[-128,127]之间,会有一个缓冲池存储了这256个值,Integer对象直接指向缓冲池,所以两个Integer的对象地址值会相等。但是,当没有通过自动装箱语法,而是用new关键字生成的Integer对象,就不会指向缓冲池里的值,也就不会地址相等,如下:

//会输出false,即in1和in2不相等
Integer in1=new Integer(1);
Integer in2=new Integer(1);
System.out.println(in1==in2);

关于这个,有兴趣的朋友可以去深入了解,不做赘述。

其他的包装类的用法参照Integer类。




赞(0)    操作        顶端 
duff
注册用户
等级:少校
经验:968
发帖:0
精华:0
注册:2015-7-22
状态:离线
发送短消息息给duff 加好友    发送短消息息给duff 发消息
发表于: IP:您无权察看 2016-5-12 7:44:20 | [全部帖] [楼主帖] 2  楼

学习一下



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论