A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 闫江龙 于 2011-12-20 16:36 编辑

new Integer(String s) )和Integer.valueOf(String s)区别

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

8 个回复

倒序浏览
杨强 黑马帝 2011-12-20 10:59:41
沙发
new Integer(String s)
          构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值
Integer.valueOf(String s)
          返回保存指定的 String 的值的 Integer 对象。
前面建立新对象  后面是用调用valueOf 返回指定的对象

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
刘博 黑马帝 2011-12-20 11:08:27
藤椅
new是创建空间,而Integer.valueOf(String s)是拿以前的来用,自己没有在内存中开辟自己的空间,直接用别人的,我是这么理解的.
回复 使用道具 举报
static int parseInt(String s)
          将字符串参数作为有符号的十进制整数进行分析。

static Integer valueOf(int i)
          返回一个表示指定的 int 值的 Integer 实例。
回复 使用道具 举报
本帖最后由 为梦而战 于 2011-12-20 11:20 编辑

两个都是得到一个Integer对象,但是Integer.valueOf的效率高。因为Integer.valueOf用到了缓存。new Integer()每次返回的是不同的对象,但是当整数范围在-128<i<=127时,Integer.valueOf()返回的是同一个对象。这个范围的整数是最常用的。
      Integer a=new Integer(1);  
          Integer b=new Integer(1);  
         
        //整数范围在-128到127之间,返回的是同一个对象  
       Integer c=Integer.valueOf(1);  
            Integer d=Integer.valueOf(1);  
         
        //返回的不是同一个对象  
       Integer e=Integer.valueOf(300);  
            Integer f=Integer.valueOf(300);  
         
           System.out.println(a==b);  
           System.out.println(c==d);  
           System.out.println(e==f);
输出是:
false
true
false

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
nteger.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完的对象就具有方法和属性了。
而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性。
回复 使用道具 举报
郭繁森 黑马帝 2011-12-20 11:59:36
7#
本帖最后由 guofansen 于 2011-12-20 12:00 编辑

Integer.ValueOf().intValue和Integer.parseInt的区别?
总的来说,这两种写法的功能是一样的。区别之处,Integer.ValueOf().intValue()   
  会比Integer.parseInt()多创建一个Integer对象。   
  实际上,如果你看看java的源代码你就知道了:Integer.ValueOf()就是通过parseInt()   
  实现的。   
  如下:   
  public static Integer valueOf(String s) throws NumberFormatException   
  {   
  return new Integer(parseInt(s, 10));   
  }   

intValue(),valueOf()这两个方法,是数据类型转化的方法。  
intValue()  
如Integer类型,就回有intValue()方法意思是说,把Integer类型转化为Int类型。其他类似,都是一个意思  

valueOf()  
如String就有valueOf()方法,意思是说,要把参数中给的值,转化为String类型,Integer的valueOf()就是把参数给的值,转化为Integer类型。其他类似,都是一个意思。

好像和你问的有点区别。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
new Integer(String s)和Integer.valueOf(String s)内部都用parseInt(s, 10)进行s的转换,前者回new一个Integer对象,而后者就是当一个工具类使用。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
闫江龙 黑马帝 2011-12-20 16:35:31
9#
只有5楼靠谱啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马