黑马程序员技术交流社区

标题: 关于String类型转为Integer类型 [打印本页]

作者: 曾公亮    时间: 2011-9-23 14:37
标题: 关于String类型转为Integer类型
String类型转为Integer类型不是有三种方法嘛!
其中一种就是int height=new Integer(args[1]).intValue();
这句也可以这样写:int height=new Integer(args[1]);
它们在执行效率上有什么区别吗?
作者: 匿名    时间: 2011-9-23 15:05
我个人的理解是第一种效率高一点,第一种是利用intValue()方法把Integer对象里面的值赋给height
第二种利用java新特性中的自动拆箱,把Integer对象拆箱成int值,效率不如第一种高。
作者: 许晨峰    时间: 2011-9-23 15:07
一般情况使用静态的方法进行转换:

例1:[code=html]a):Integer temp1 = Integer.valueOf("1");[/code][code=html]b):Integer temp2 = Integer.parseInt("1");[/code]例2:[code=html]a):Integer temp3 = new Integer("1");[/code]例1中的a)和例2中的a)的效果一样,例2是将“1”作为构造函数的参数,在构造函数中使用其静态方法parseInt()进行转换,相比之下,例2中a)实际多了一个将"1"实例化的操作;

再来讲一下valueOf和parseInt两种Integer类中的静态方法,看了源代码可以知道,在valueOf方法中先将传入的参数使用parseInt方法将参数返回为int类型,然后再将参数传入valueOf方法中,返回一个Integer对象。


一般情况下,要转换的字符串的值在-127到128之间,使用parseInt效果最佳,其实最主要的是返回的类型不同。
[ 本帖最后由 许晨峰 于 2011-09-23  15:10 编辑 ]
作者: 匿名    时间: 2011-9-23 15:47
你这两个方法都是要创建一个Integer对象,Integer类里面有一个成员变量value,当你通过构造方法传递进去的值会赋给value,int height=new Integer(args[1]).intValue()你的这第一种方法是直接返回Integer类里面的value成员变量,int height=new Integer(args[1])而这第二种方法还要涉及到拆箱,应该是第一种方法效率比较高,上面的一位兄弟也说了,你可以在eclipse里按下ctrl键然后点击Integer这个关键字,就可以打开源代码了,有空看看源代码里的东西就明白了
作者: 匿名    时间: 2011-9-23 21:37
看来以后直接用Integer的两种方法就行了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2