zoukankan      html  css  js  c++  java
  • 区分Integer.getInteger和Integer.valueOf、Integer.parseInt() 的使用方法

    Integer类有两个看起来很类似的静态方法,一个是Integer.getInteger(String),另外一个是Integer.valueOf(String)。如果只看方法名称的话,很容易将这两个方法的功能区分开来,还是让我们来看看Java文档。

        Integer.getInteger(String)的功能是根据指定的名称得到系统属性的整数值。第一个参数将被认为是系统属性的名称。系统属性可以通过 System.getProperty(java.lang.String)方法访问得到。属性值字符串将被解释成一个整数,并且以表示这个值的Integer对象形式返回。可能出现的数字格式的详细说明可以在 getProperty 的定义说明里找到。

        Integer.valueOf(String)的功能是获取给定的字符串所代表的整数。

        那么就让我来看看是否理解了:

    • Integer.valueOf(String)方法假设String参数表达的是一个数值,会把该数值String转化成Integer。也就是说, Integer.valueOf("123") 得到一个Integer对象,其值是123。
    • Integer.getInteger(String)方法假设String参数是一个系统属性数值的名称,会读取该系统属性,然后把系统属性的值转换成一个数字。也就是说, Integer.getInteger("12345") 应该是得到 null(假设没有名为12345的系统属性)。


        虽然这两个方法的功能是不一样的,但是从方法的名称上并没有明显的区分开来,常常容易让人混淆。有很多bug就是因为想使用valueOf的功能但是错误的使用了getInteger方法而导致的。

        这是在Java语言中会产生歧义的一个糟糕的例子。另外一个糟糕的例子是Boolean.getBoolean("true")。Boolean.getBoolean(String)的功能和Integer.getInteger(String)是类似的。通常我们都不会有一个名为“true”的系统属性,因此Boolean.getBoolean("true")通常会返回Boolean.FALSE。这里甚至比Integer.getInteger(String)还要糟糕,还不如返回一个null更容易让人发现错误。

    还有一个就是Integer.parseInt() 返回的是一个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
    若该串不包含一个可分析的整数。

    例题:
    设有下面两个赋值语句:
    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

    转自:http://blog.csdn.net/mingtianhaiyouwo/article/details/51351159

  • 相关阅读:
    连接过滤器
    插件使用 之 Bmap
    插件使用 之 ztree、nicescroll
    插件使用 之 layui、echart
    插件使用 之 bootstrap
    jquery显隐特效 动画 事件
    jquery js对比 加载 操作内容 属性 样式 元素 选择器
    js三级联动练习(地址填写)
    js时间、定时器、移动div块、轮播
    js DOM操作
  • 原文地址:https://www.cnblogs.com/zl1991/p/6669582.html
Copyright © 2011-2022 走看看