`

Java的Integer.valueOf(int i)

    博客分类:
  • Java
阅读更多
先看代码:

public static void main(String[] args){
	Integer a = 100;
	Integer b = 100;
	System.out.println(a == b);
}

结果:true

public static void main(String[] args){
	Integer a = new Integer(100);
	Integer b = new Integer(100);
	System.out.println(a == b);
}

结果:false

public static void main(String[] args){
	Integer a = 200;
	Integer b = 200;
	System.out.println(a == b);
}

结果:false

注意:以上在jdk1.5以上可以通过。

第二个很容易理解。
为啥第一个返回true呢?而第三个又返回false?
继续修改,发现在127跟128是个分界线
当-128 <= ab <= 127时候,返回true
此外,返回false

通过反编译得知,
Integer a = 200;
变成了
Integer a = Integer.valueOf(200);

再看看java.lang.Integer中关于valueOf的源代码是怎样的:
  public static Integer valueOf(int i) {
    final int offset = 128;
    if (i >= -128 && i <= 127) {
      return IntegerCache.cache[i + offset];
    }
    return new Integer(i);
  }
结论:
当这个值在-128和127之间时,会用缓存保存起来,供多次使用,以节约内存。
如果不在这个范围内,则创建一个新的Integer对象。

这个问题的本质是Integer的valueOf()方法。
分享到:
评论
2 楼 coolcat9527 2011-02-23  
谢谢LZ指点
1 楼 zhangcong170 2009-10-17  
谢谢了   你的这篇文章我转载了

相关推荐

    JAVA试题——初级

    适合应届生的java试题,很简单,但有些地方容易出错,请不要眼高手低。

    java中long类型转换为int类型-java long转int.pdf

    long转int 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出...int ii = Integer.parseInt(String.valueOf(ll)); 这三种方法都比较简单明了。

    PKCard 2

    Java实现蜘蛛纸牌

    将 BigDecimal 类型转换为 Integer 类型.pdf

    当 BigDecimal 值大于 Integer.MAX_VALUE 时,intValue() 方法将抛出 java.lang.ArithmeticException 异常。例如,在上面的示例代码中,若输入的 BigDecimal 值为 2147483648 时,intValue() 方法将抛出“Out of ...

    java中数据类型转换

    java中数据类型转换 收藏 java中数据类型转换 1如何将字串 String 转换成整数 int? A.... int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异.

    Java中BigInteger.docx

    java 中BigInteger应用import java.util.Scanner; import java.math.... BigInteger m=BigInteger.valueOf(2);//给高精度的数赋值; m=m.pow(n);//Integer类的方法 System.out.print(m.toString()); } } }

    Java常用方法大全

    int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...

    java水仙花源代码

    n=Integer.valueOf(inputLine).intValue(); } catch (Exception exc) { System.out.println("输入的不是合法的数!"); return; // TODO: handle exception } Shuixianhua2 sxh=new ...

    java函数大全

    int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...

    java常用方法大全

    int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...

    Java String转int还有其它几种写法.docx

    第一种,使用 Integer.valueOf(),它将返回一个包装器类型 Integer,当然可以通过自动拆箱的方式将其转成 int 类型。

    java代码获取myeclipse注册码.txt

    licenseNum = nf.format(Integer.valueOf(licenseNum)); String verTime = new StringBuilder("-").append(new java.text.SimpleDateFormat("yyMMdd").format(cal.getTime())).append("0").toString(); String ...

    JAVA初学者,gui实现简单计算器

    package GUI; import java.awt.*; import java.awt.event.*; public class TFMathTest extends Frame{ TextField num1;... int i1 = Integer.parseInt(s1);... tfmt.sum.setText(String.valueOf(i1 + i2)); } }

    Java实现Excel导入导出

    String.valueOf(item.getStockPrice().multiply(new BigDecimal(item.getStockAmount()))), "01".equals(item.getSalesSource()) ? "线上订单" : "线下订单", item.getGoodsNameAttrs(), String.valueOf(item....

    Java 用法明细介绍

    int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...

    java仓库管理

    supplierData.put(Integer.valueOf(resultSet.getInt("sup_id")), resultSet.getString("sup_name")); } catch (Exception e) { e.printStackTrace(); } return supplierData;//返回映射关系 } public ...

    java编写智能合约-简单的用java代码实现智能合约.pdf

    int size = Integer.parseInt(String.valueOf(file.length())); int offset; int read =0; //int result = fis.read(buffer,0,Integer.parseInt(String.valueOf(file.length()))); // 虽然知道了file⽂件的长度,...

    java编的简单计算器

    int nu=Integer.parseInt(String.valueOf(nu2)); while(nu&gt;1){ nu1=nu1*num;nu--;} jt.setText(String.valueOf(nu1)); } j=0; st1=e.getActionCommand(); } }...

    java哈夫曼压缩

    public void Huff()throws IOException { System.out.print("程序正huff运行!"); String s;... value[1][i]=Integer.parseInt(s); valueNode[0][i]=i; valueNode[1][i]=Integer.parseInt(s); }

    Java 自学宝典 第二章 数据类型

    valueOf(): 将字符串解析为布尔对象 11 2. 2. 6. toString(): 返回布尔的字符串值 11 2. 3. 整数数据类型 12 2. 3. 1. Java的整数数据类型:内存和长度 12 2. 3. 2. 整数计算 12 2. 3. 3. 二进制和十进制值表 12 2....

Global site tag (gtag.js) - Google Analytics