Integer.valueOf(String) 方法之惑】的更多相关文章

本文由 ImportNew - 靳禹 翻译自 stackoverflow.欢迎加入翻译小组.转载请见文末要求. 有个仁兄在 StackOverflow 上发起了一个问题,是这么问的: “ 我被下面的代码搞晕了,为什么它们会返回不同的值?” 1 2 3 System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); System.out.println(Integer.valueOf("…
具体问题以前偶然遇到过,好象是一个java答题得分的论坛,当时做错还研究了下怎么回事,但是前两天遇到类似问题却没想起来.巩固下基础,转了下面文章. 以下内容转自:http://www.importnew.com/9162.html-------------分割线---------------------- 有个仁兄在 StackOverflow 上发起了一个问题,是这么问的: “ 我被下面的代码搞晕了,为什么它们会返回不同的值?” System.out.println(Integer.value…
Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么? Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完的对象就具有方法和属性了.而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性. 设有下面两个赋值语句:a=Integ…
通过查看java.lang.Integer的源码可以发现, 它们最终调用的都是 /** * Parses the string argument as a signed integer in the radix * specified by the second argument. The characters in the string * must all be digits of the specified radix (as determined by * whether {@link…
Integer.valueOf(String s);//采用了亨元设计模式: 亨元模式: 它是以一种“节约内存,提高性能”为出发点的设计模式,运用共享技术有效的支持大量细粒度对象的复用. 源码解析: private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; //类加载时提前先把-127到128 static { // h…
在上面的两个篇博客中,我们看到String和Integer不同的常量池的变现形式 我们再看一个例子: public static void main(String[] args) { // TODO Auto-generated method stub String i1 = "hello"; String i2="world"; String i5=new String("helloworld"); System.out.println(i5=…
Integer类有两个看起来很类似的静态方法,一个是Integer.getInteger(String),另外一个是Integer.valueOf(String).如果只看方法名称的话,很容易将这两个方法的功能区分开来,还是让我们来看看Java文档. Integer.getInteger(String)的功能是根据指定的名称得到系统属性的整数值.第一个参数将被认为是系统属性的名称.系统属性可以通过 System.getProperty(java.lang.String)方法访问得到.属性值字符串…
1.Integer.parseInt(): public static int parseInt(String s) throws NumberFormatException { return parseInt(s,10); } public static int parseInt(String s, int radix) throws NumberFormatException{ /* * WARNING: This method may be invoked early during VM…
java.lang 类 Integer java.lang.Object java.lang.Number java.lang.Integer 全部已实现的接口: Serializable, Comparable<Integer> public final class Integer extends Number implements Comparable<Integer> Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包括一个 int 类型…
先看一下下面的结果 1.System.out.println(127==127); //true , int type compare 2.System.out.println(128==128); //true , int type compare 3.System.out.println(new Integer(127) == new Integer(127)); //false, object compare 4.System.out.println(Integer.parseInt("1…
一. 深入代码   在创建数字 1 的对象时, 大多数人会使用 new Integer(1), 而使用 Integer.valueOf(1) 可以使用系统缓存,既减少可能的内存占用,也省去了频繁创建对象的开销.  系统默认只缓存 -128-127 之间的整数.下面我们看一下 Integer.valueOf(int) 方法的代码: public static Integer valueOf(int i) { assert IntegerCache.high >= ; if (i >= Integ…
System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); System.out.println(Integer.valueOf("128")==Integer.valueOf("128")); System.out.println(Integer.parseInt("128")==Integer.valueOf("128…
在Java的Integer类中,有Integer.valueOf(String s)和Integer.parseInt(String s)两个静态方法,他们都能够将字符串转换为整型,他们到底有什么区别呢?今天就来分析下. 本文目录 一.源码分析二.结论三.扩展 一.源码分析 Integer.parseInt(String s)的源码: public static int parseInt(String s) throws NumberFormatException {    return par…
Integer.parseInt()和Integer.valueOf()都是将成为String转换为Int,但是为什么Java会提供两个这样的方法呢,他们如果是同样的操作,岂不是多此一举? 我们来深挖Java源代码一探究竟. Integer.parseInt(),返回一个原子类型int.Integer.valueOf(),返回的是封装的Integer对象. 我们来看一下Integer.parseInt()的源码实现: public static int parseInt(String s) th…
Integer.parseInt()和Integer.valueOf()都是用来将String转换为Int的,但是为什么Java会提供两个这样的方法呢,他们如果是同样的操作,岂不是多此一举? 我们来深挖的Java源代码一探究竟. 的Integer.parseInt()返回一个原子类型INT.Integer.valueOf(),返回的是封装的整数对象. 我们来看一下Integer.parseInt()的源码实现: public static int parseInt(String s) throw…
今天在看公司代码的时候,看到有人在将 String 转为 int 时,用到了Integer.parseInt(String s)方法,我一直用的是Integer.valueOf(String s)方法,parseInt()方法之前只是在JavaScript中看到过,有点感兴趣,就去看了一下他们的源码. 发现 Integer.valueof() 和 Integer.parseInt() 的底层都是用的Integer.parseInt(String s ,int radix)这个方法.在这里给这个方…
1. 引言 在牛客网上看到这样一道题目,判断一下打印的结果 public static void main(String[] args){ Integer i1 = 128; Integer i2 = 128; System.out.println(i1==i2); Integer i3 = 100; Integer i4 = 100; System.out.println(i3==i4); } 刚开始看到是,是这样来判断的:因为 Integer i1 = 128 这条语句,Integer 会启…
他们返回类型的不同是最大的原因. static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析. static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例. static Integer valueOf(String s) 返回保持指定的 String 的值的 Integer 对象. 从返回值可以看出他们的区别 : parseInt()返回的是基本类型int 而valueOf()返回的是包装类In…
jdk的源代码的时候注意到Integer.parseInt(s) 和 Integer.valueOf(s)的具体代码的实现有所区别: Java代码 public static int parseInt(String s) throws NumberFormatException {  return parseInt(s,10);     }  Java代码 public static Integer valueOf(String s) throws NumberFormatException …
参考博客: http://www.importnew.com/9162.html 测试代码如下: public class Main { /** * 备注:结果跟你的JDK版本有关系: * * 我的是java version "1.6.0_16" * *这是JDK中的Integer.java中valueOf的源代码: public static Integer valueOf(String s) throws NumberFormatException { return Integer…
先来看段代码 public class IntegerDemo { public static void main(String[] args) { String num = null; System.out.println( Integer.parseInt(num));// Exception java.lang.NumberFormatException System.out.println( Integer.valueOf(num));// Exception java.lang.Num…
public class IntegerDemo { public static void main(String[] args) { Integer i01 = ; ; Integer i03 = Integer.valueOf(); Integer i04 = ); System.out.println(i01 == i02);//true System.out.println(i01 == i03);//true System.out.println(i03 == i04);//false…
先来说明一下Integer.parseInt(String s, int radix)的功能. Integer.parseInt(String s, int radix)就是将整数字符串s(radix用来指明s是几进制)转换成10进制的整数,显然前提是s为整数字符串.比如 s可以为“1314520”.“5201314”等.不可以为“我爱你一生一世”或者“I love you  forever”等之类的非整数字符串. 那么,Integer.pareseInt("10086",10)就是将…
原文  http://javacat360.iteye.com/blog/2024378 主题 Java 昨天,一同事问我一个问题,估计是他前段日子面试遇到的 问题很简单,String.valueof(null)的返回值 起初我想了想,应该是String类型的字面量null,可后来上机一试才发现原来返回空指针异常 查看String源码,发现valueof方法被重载多次,其中String.valueof(null)却意外的进入了valueof(char[] data)方法,如下图所示 valueo…
Integer为什么要提供功能与new Integer(xx)一样的valueOf(xx)方法呢,看了源代码之后,我发现了惊人的内幕. public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.…
1.==符号使用 Integer a = 1000,b=1000; Integer c = 100,d=100; System.out.println(a==b); System.out.println(c==d); 大家如果不去思考肯定会直接说为true ,true.这个时候就该去补补基础去了... 首先说一下运行答案是 false,true,我们应该都知道==这个时候比较的是对象的引用,这就应该输出的是false,false,这就是为甚我在这里说这个题的原因!!!!! 大家先看一下Integ…
object先转为字符串,然后通过int 的封装类(Integer)的pasreInt()方法转为int 例如: Object  ob = 123; Integer.parseInt(String.valueOf(ob));  //Object转Integer String.valueOf(ob); //Object转String…
Integer Interger 是int基本数据类型的包装类,在Integer内部封装了一个final int value的属性. 构造方法: Integer类提供了两种构造方法:它们都会返回一个Integer对象 (1)Integer(int value); (2)Integer(String s);    //要注意的是字符串不能包含非数字字符,否则会抛出NumberFormatException. (3)除此之外,还可以给Integer对象直接赋值,如:Integer a = 10; i…
在jdk1.5的环境下,有如下4条语句: 1 2 3 4 Integer i01 = 59; int i02 = 59; Integer i03 =Integer.valueOf(59); Integer i04 = new Integer(59). 以下输出结果为false的是: 正确答案: C System.out.println(i01== i02); System.out.println(i01== i03); System.out.println(i03== i04); System.…
从一道选择题开始 分析 选项A   选项A中比较的是i01和i02,Integer i01=59这里涉及到自动装箱过程,59是整型常量,经包装使其产生一个引用并存在栈中指向这个整型常量所占的内存,这时i01就是Integer 的引用.   而int i02=59由于int是基本类型,所以不存在引用问题,直接由编译器将其存放在栈中,换一句话说,i02本身就是59.那么System.out.println(i01== i02)结果任何呢?这里涉及到了拆箱的过程,因为等号一边存在基本类型所以编译器后会…