日期:2014-05-20  浏览次数:20825 次

parseInt与valueOf的不同在哪里?
下面的程序得到了相同的结果,所以我很疑惑它们的区别在哪里

import java.util.*;

public class Test2
{
public static void main(String[] args)
{
int b = Integer.parseInt("10");
System.out.println(b);

int c = Integer.valueOf("10");
System.out.println(c);

if(b == c)
{
System.out.println("b and c is equal.");
}
else
{
 System.out.println("b and c is not equal.");
}

}
}
得到的结果


E:\java练习程序\practice\Test2>java Test2
10
10
b and c is equal.

------解决方案--------------------
一样的,valueOf内部也是调用parseInt的,只是valueOf返回值是包装类Integer,parseInt返回的是int
------解决方案--------------------
parseInt
public static int parseInt(String s)
                    throws NumberFormatException将字符串参数作为有符号的十进制整数进行解析。除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予 parseInt(java.lang.String, int) 方法一样。 

参数:
s - 包含要解析的 int 表示形式的 String。 
返回:
用十进制参数表示的整数值。 
抛出: 
NumberFormatException - 如果字符串不包含可解析的整数。

##########################

valueOf
public static Integer valueOf(String s)
                       throws NumberFormatException返回保存指定的 String 的值的 Integer 对象。将该参数解释为表示一个有符号的十进制整数, 就好像将该参数赋予 parseInt(java.lang.String) 方法一样。结果是一个表示字符串指定的整数值的 Integer 对象。 
换句话说,该方法返回一个等于以下值的 Integer 对象: 

new Integer(Integer.parseInt(s))

参数:
s - 要解析的字符串。 
返回:
保存字符串参数表示的值的 Integer 对象。 
抛出: 
NumberFormatException - 如果字符串不能解析为一个整数。

##########################
intValue
public int intValue()以 int 类型返回该 Integer 的值。 

指定者:
类 Number 中的 intValue
返回:
转换为 int 类型后该对象表示的数值。
#################################33
你后面的写法不对,应该是int c = Integer.valueOf("10").intValue();这样返回的才是int类型。


------解决方案--------------------
引用:
另外,我定义Integer a;与int a;是一样的吗?如果不一样,会有什么后果?

如果仅是数值计算,int 和 Integer无异
如果要进行页面空值和0输出时,Integer可以为空,而int为0
------解决方案--------------------
返回值不同.
------解决方案--------------------
楼主,这个查看JavaSE api中 Integer类可以解决。
Interger类里:
public static int parseInt(String s) throws NumberFormatException //将字符串参数作为有符号的十进制整数进行分析。

public static Integer valueOf(String s)throws NumberFormatException //返回保持指定的 String 的值的 Integer 对象。源代码里默认是十进制。
     * @param      s   the string to be parsed.
     * @return     an {@code Integer} object holding the value
     *             represented by the string argument.
     * @exception  NumberFormatException  if the string cannot be parsed
     *             as an integer.
     */
    public static Integer valueOf(String s) throws NumberFormatException {
        return Integer.valueOf(parseInt(s, 10));
    }

可以看出来 调用这两个方法,返回值的类型是不同的。parseInt返回int基本数据类型,valueOf返回的是Integer类型,但是结果却是相同的,是因为java有自动装箱拆箱功能。
1 Integer i = 10;        //装箱  
                    2 int t = i;                 //拆箱