Integer.parseInt()和Integer.valueOf()有什么区别

Integer.parseInt()和Integer.valueOf()有区别吗?

 

当然有   他们有本质区别

Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完的对象就具有方法和属性了。 

而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性


 


Integer.parseInt()把String   型转换为Int型,   
    

Integer.valueOf()把String   型转换为Integer对象。


大概知道一点了,就是说Integer.valueOf(S)是针对包装类来说的,而Integer.parseInt(s) 是针对变量而言


 


 


不是很复杂,知道以下的知识就够了:


1.Java 包括两种数据类型:
   原始数据类型(primitive data type):int, byte, float, long, boolean ...
   对象(Object):其他的都是对象,包括数组。




2.每种 原始数据类型 都有一个相对应的包装类(Wrapper Class):
   如 int 对应 Integer, float 对应 Float,有如下特性:


     1)包装类里的数值是无法修改的


     2)都有一个 构造方法,参数为 对应的原始数据类型,比如:
       new Integer (10), new Boolean (true)


     3)都有一个 构造方法,参数为一个字符串,把字符串转换为值,比如:
       new Integer ("10"), new Boolean ("true")

 

    4)有一个方法,可以把存在包装类里的值取出来:
        Integer.intValue(), Float.floatValue()&#59;


     5)有一个静态方法,不用创建一个对象就可以把字符串转换为值,比如:
        int i = Integer.parseInt("10")&#59;




3.String 和 StringBuffer
   每一个 Object 都有一个 toString() 函数。
   Java 里使用 操作符重载的地方只有一个: + 操作:
   如果两个操作数中有一个是 String,就调用另一个操作数的 toString,结果就变成
   两个 String 的相加。


   常用在 Exception 的处理中,比如:
   try {
   }catch (Exception e){
     System.out.println ("Error: " + e)&#59;
   }
   处理过程:"Error: " + e ->; "Error: " + e.toString()


   如果是 String 和 基本数据类型相加,就先把这个基本数据类型用他的包装类处理。
   "String" + 123 ->; "String" + Integer(123) ->; "String" + Integer(123).toString()

 

  String + String 的过程,Java 的内部处理过程(1.4以后)实际上是这样的:
   "String1" + "String2" ->; new StringBuffer("String1").append("String2").toString()


   先建立一个 StringBuffer, 再用 append 计算,最后把 StringBuffer 转换成 String
   原因是 String 是 不可修改的,StringBuffer 是可以修改的,字符串计算时还是用
   StringBuffer 比较快


所以,数据转换:
   int ->; String
    String newValue = "" + 10&#59;
   String ->; int
    int i = (new Integer("10")).intValue()&#59;
    int i = Integer.parseInt("10")&#59;

 

 

 学语言 ,最根本的还是查看官方文档 ,下面查查API 吧 

 

new Integer.valueof()返回的是Integer的对象。
Integer.parseInt() 返回的是一个int的值。
new Integer.valueof().intValue();返回的也是一个int的值。

 

parseInt

public static int parseInt(String s, int radix) throws NumberFormatException

以第二个参数所指定基数将字符串参数分析为一个带符号的整数。除了第一个字符可以用 ASCII 的减号 '-'来表示一个负值外,字符串中的字符必须是指定基数的数(由 Character.digit 是否返回非负值决定)。返回作为结果的整数值。

 

参数:

s - 包含整数的 String 。

radix - 使用的进制

返回值:

指定基数的字符串参数所表示的整数。

抛出: NumberFormatException

若该串不包含一个可分析的整数。

parseInt

public static int parseInt(String s) throws NumberFormatException

将字符串参数作为带符号十进制整数来分析。除过第一个字符为 ASCII 字符中减号 '-' 表示的负数,字符串中的字符都必须是十进制数。

 

参数:

s - 串。

返回值:

十进制参数表示的整数。

抛出: NumberFormatException

若该串不包含一个可分析的整数。

valueOf

public static Integer valueOf(String s, int radix) throws NumberFormatException

返回初始化为指定 String 值的新的 Integer 对象。若该 String 不能作为 int 分析,则抛出异常。

 

参数:

s - 待分析的字符串。

返回值:

新创建的 Integer ,将其以指定基数初始化为字符串参数所表示的值。

抛出: NumberFormatException

若 String不包含可分析的整数。

valueOf

public static Integer valueOf(String s) throws NumberFormatException

返回初始化为指定 String 值的新的 Integer 对象。若该 String 不能作为 int 分析,则抛出异常。假设基数为 10 。

 

参数:

s - 待分析的字符串。

返回值:

新创建的 Integer ,将其初始化为字符串参数所表示的值。

抛出: NumberFormatException

如果该串不包含一个可分析的整数。

 

 

static int parseInt(String s)
          将字符串参数作为有符号的十进制整数进行分析。

static Integer valueOf(int i)
          返回一个表示指定的 int 值的 Integer 实例。
static Integer valueOf(String s)
          返回保持指定的 String 的值的 Integer 对象。

从返回值可以看出他们的区别   parseInt()返回的是基本类型int
而valueOf()返回的是包装类Integer  Integer是可以使用对象方法的  而int类型就不能和Object类型进行互相转换

int zhuan=Integer.parseInt(chuan);
int zhuanyi=Integer.valueOf(chuan); 为什么你的程序返回值都可以用int来接收呢?  因为Integer和int可以自动转换
Integer i = 5;   int k  = i;像是这样表示是没有编译错误的

 


例题:

设有下面两个赋值语句:
a = Integer.parseInt(“123”);
b = Integer.valueOf(“123”).intValue();
下述说法正确的是(  d  )。
A、a是整数类型变量,b是整数类对象。
B、a是整数类对象,b是整数类型变量。
C、a和b都是整数类对象并且值相等。 
D、a和b都是整数类型变量并且值相等。

详细解析:
parseInt(String s )方法是类Integer的静态方法,它的作用就是将形参 s 转化为整数,比如:
Interger.parseInt("1")=1;
Integer.parseInt("20")=20;
Integer.parseInt("324")=324;
当然,s 表示的整数必须合法,不然是会抛异常的。
valueOf(String s )也是Integer类的静态方法,它的作用是将形参 s 转化为Integer对象,
什么是Integer对象,Integer就是基本数据类型int型包装类,就是将int包装成一个类,这样在很多场合下是必须的。如果理解不了,你就认为int是Integer的mini版,好用了很多,但也丢失了一些功能,好了,看代码:
Interger.valueOf("123")=Integer(123)
这时候Integer(123)就是整数123的对象表示形式,它再调用intValue()方法,就是将123的对象表示形式转化为基本数据123
所以,选择D

https://www.cnblogs.com/panxuejun/p/6148493.html

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值