`

Integer.ValueOf(int)和new Integer(int)性能比较

    博客分类:
  • JAVA
 
阅读更多
JDK的源码,看到Integer.ValueOf(int)里面做了优化

	public static Integer valueOf(int i) {
		final int offset = 128;
		if (i >= -128 && i <= 127) { // must cache
			return IntegerCache.cache[i + offset];
		}
		return new Integer(i);
	}

	private static class IntegerCache {
		private IntegerCache() {
		}

		static final Integer cache[] = new Integer[-(-128) + 127 + 1];

		static {
			for (int i = 0; i < cache.length; i++)
				cache[i] = new Integer(i - 128);
		}
	}

从源代码可以知道,ValueOf对-128~127这256个值做了缓存(IntegerCache),如果int值的范围是:-128~127,在ValueOf(int)时,直接返回IntegerCache的缓存值。

	public static void main(String[] args) {

		Integer a = 100;
		Integer b = 100;
		System.out.println(a == b);
		Integer c = new Integer(100);
		Integer d = new Integer(100);
		System.out.println(c == d);
	}


结果是:

true
false

java在编译的时候 Integer a = 100; 被翻译成-> Integer a = Integer.valueOf(100);,所以a和b得到都是一个Cache对象,并且是同一个!而c和d是新创建的两个不同的对象,所以c自然不等于d。

ps:比较是用的==
分享到:
评论

相关推荐

    JAVA试题——初级

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

    实验二 使用MIDP用户界面API编程.doc

    i = Integer.valueOf(s).intValue(); tf1.setString(i*0.45359 + ""); } else if(!s.equals("") && tf2.getString().equals("")) { i = Integer.valueOf(s).intValue(); tf2.setString(i*2....

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

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

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

    在 Java 编程中,经常需要对数字类型的数据进行...例如,在上面的示例代码中,若输入的 BigDecimal 值为 2147483648 时,intValue() 方法将抛出“Out of range”异常。此时,可以使用 BigInteger 类型来表示大整数。

    PKCard 2

    Java实现蜘蛛纸牌

    Android实验4

    public int compare_130(int a,int ... String msg = String.valueOf(a) + " compare with " + String.valueOf(b) + ",the " + String.valueOf(result)+" is bigger"; labelView.setText(msg); } });

    Android实验动态生成数

    动态生成数的运用 ... String msg = String.valueOf(a) + " compare with " + String.valueOf(b) + ",the " + String.valueOf(result)+" is bigger"; labelView.setText(msg); } });

    MD5加密与byte数组与16进制相互转换

    包含MD5加密,同时拥有多种方式进行byte或者byte[]与16...方式一:Integer.toHexString(int) 对应的是: Integer.parseInt(String, int)或者Integer.valueOf(String, int) 方式二:位运算(& 与 |) 方式三:算术运算

    Java常用方法大全

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

    android 上传文件

    int length = Integer.valueOf(position); while( (len = fileOutStream.read(buffer)) != -1){ outStream.write(buffer, 0, len); length += len; Message msg = new Message(); ...

    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 String转int还有其它几种写法.docx

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

    java常用方法大全

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

    可以滑动界面切换tab

    int tabID = Integer.valueOf(tabId); for (int i = 0; i &lt; tabWidget.getChildCount(); i++) { if (i == tabID) { tabWidget.getChildAt(Integer.valueOf(i)).setBackgroundColor(R.color.bule); } ...

    java中数据类型转换

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

    基于servlet的购物车

    int bookNum = Integer.parseInt(request.getParameter(String.valueOf(bookid))); System.out.println(bookNum); //封装成line对象 Line line = new Line(book, bookNum); System.out.println(line); ...

    Java实现Excel导入导出

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

    javaScript 数值型和字符串型之间的转换

    1.数值型到String型的转化 假设该数值型(int/float/double)变量为:num 其转化后得到的字符串为:str 则其转化为字符串的方式为有三种,分别如下: (1) str = ... (2) num=Integer.valueOf(str).intValue(); 这部分比

    Java 用法明细介绍

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

Global site tag (gtag.js) - Google Analytics