黑马程序员技术交流社区

标题: new Integer(String s) )和Integer.valueOf(String s)区别啊? [打印本页]

作者: 闫江龙    时间: 2011-12-20 09:58
标题: new Integer(String s) )和Integer.valueOf(String s)区别啊?
本帖最后由 闫江龙 于 2011-12-20 16:36 编辑

new Integer(String s) )和Integer.valueOf(String s)区别
作者: 杨强    时间: 2011-12-20 10:59
new Integer(String s)
          构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值
Integer.valueOf(String s)
          返回保存指定的 String 的值的 Integer 对象。
前面建立新对象  后面是用调用valueOf 返回指定的对象
作者: 刘博    时间: 2011-12-20 11:08
new是创建空间,而Integer.valueOf(String s)是拿以前的来用,自己没有在内存中开辟自己的空间,直接用别人的,我是这么理解的.
作者: 刘侠光    时间: 2011-12-20 11:13
static int parseInt(String s)
          将字符串参数作为有符号的十进制整数进行分析。

static Integer valueOf(int i)
          返回一个表示指定的 int 值的 Integer 实例。

作者: 为梦而战    时间: 2011-12-20 11:18
本帖最后由 为梦而战 于 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


作者: 冯瑞君老师    时间: 2011-12-20 11:22
nteger.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完的对象就具有方法和属性了。
而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性。
作者: 郭繁森    时间: 2011-12-20 11:59
本帖最后由 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类型。其他类似,都是一个意思。

好像和你问的有点区别。
作者: 周敏2011nc    时间: 2011-12-20 12:33
new Integer(String s)和Integer.valueOf(String s)内部都用parseInt(s, 10)进行s的转换,前者回new一个Integer对象,而后者就是当一个工具类使用。
作者: 闫江龙    时间: 2011-12-20 16:35
只有5楼靠谱啊




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