[总结]Integer.getInteger和Integer.valueOf的区别

来源:互联网 发布:为什么淘宝店铺打不开 编辑:程序博客网 时间:2024/06/03 07:00

valueOf方法获取的是字符串本身能转化的数值,getInteger方法获取的是系统属性对应的数值。

(这里的系统属性是指java通过system.getproperty获得的环境变量,如操作系统配置信息以及软件信息。
有关系统属性可以参考:http://blog.csdn.net/babydavic/article/details/1755718)


平常开发中,字符串转整数用valueOf方法。getInteger方法能不用则不要用。两者完全不一样。

    @Test    public void Test0(){        String s = "123";        Integer getInt = Integer.getInteger(s);        Integer valueOf = Integer.valueOf(s);        System.out.println("Integer.getInteger(\""+ s + "\")=" + getInt);        System.out.println("Integer.valueOf(\""+ s + "\")=" + valueOf);    }

输出结果:

Integer.getInteger("123")=nullInteger.valueOf("123")=123

深入理解getInteger方法:获取系统属性的方法:System.getProperties()

    @Test    public void Test(){    Properties prop = System.getProperties();    Enumeration keys = prop.keys();    while(keys.hasMoreElements()){             String s = keys.nextElement().toString();             Integer i = Integer.getInteger(s);             System.out.println(s + "=" + i);    }    }

输出结果:我的jdk下只有系统属性sun.arch.data.model可转换为相应的Integer对象

java.runtime.name=nullsun.boot.library.path=nulljava.vm.version=nulljava.vm.vendor=nulljava.vendor.url=nullpath.separator=nulljava.vm.name=nullfile.encoding.pkg=nulluser.country=nullsun.java.command=nulljava.home=null...sun.arch.data.model=64...

普通的属性文件不能输出对应的Integer值:这里用数据库配置文件jdbc.properties做个测试
    @Test    public void Test2(){        try{            BufferedReader br = new BufferedReader(new FileReader("config/jdbc.properties"));            Properties p = new Properties();            p.load(br);        Enumeration keys = p.keys();        while(keys.hasMoreElements()){                 String s = keys.nextElement().toString();                 Integer i = Integer.getInteger(s);                 System.out.println(s + "=" + i);        }      }catch(FileNotFoundException e){            e.printStackTrace();      }catch(IOException e){            e.printStackTrace();      }    }
输出结果全是null:

jdbc.maintenanceInterval=nullportNumber.base=nulljdbc.loginTimeout=nulljdbc.maxPoolSize=nulljdbc.minPoolSize=nulldatabaseName.base=nulluniqueResourceName.base=nulljdbc.borrowConnectionTimeout=nulljdbc.xaDataSourceClassName=nulljdbc.maxIdleTime=nulljdbc.poolSize=nulljdbc.logWriter=null...

将普通属性添加到系统属性,则可以访问到该属性值:添加到系统属性的方法:System.setProperties(p)

    @Test    public void Test3(){        try{            BufferedReader br = new BufferedReader(new FileReader("config/jdbc.properties"));            Properties p = new Properties();            p.load(br);        System.setProperties(p);        Enumeration keys = p.keys();        while(keys.hasMoreElements()){                 String s = keys.nextElement().toString();                 Integer i = Integer.getInteger(s);                 System.out.println(s + "=" + i);        }      }catch(FileNotFoundException e){            e.printStackTrace();      }catch(IOException e){            e.printStackTrace();      }    }
输出结果:根据jdbc对应的属性名打印属性值,能转化成Integer型的则输出了数值,不能转化成Integer型的则输出null
jdbc.maintenanceInterval=60portNumber.base=5432jdbc.loginTimeout=60jdbc.maxPoolSize=500jdbc.minPoolSize=5databaseName.base=nulluniqueResourceName.base=nulljdbc.borrowConnectionTimeout=60jdbc.xaDataSourceClassName=nulljdbc.maxIdleTime=60jdbc.poolSize=5jdbc.logWriter=60...

最后:不要被两个方法的表面意思类似迷惑了,老老实实用valueOf方法吧。虽然知道了getInteger的一些用法,但是对本人目前来说,还是觉得没什么用。。。算是涨姿势吧,说不定哪天用上了。。。
0 0
原创粉丝点击