下面的程序得到了相同的结果,所以我很疑惑它们的区别在哪里
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类型。
------解决方案--------------------
如果仅是数值计算,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; //拆箱