看看这两个语句
Integer a=new Integer(1)
Integer a=Integer.valueOf(1);
两个都是得到一个Integer对象,但是Integer.valueOf的效率高。
为什么呢?因为Integer.valueOf用到了缓存。
看看Integer.valueOf的代码:
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);
}
当传入的整数i:-128<i<=127时,从缓存里取出整数对应的Integer对象,否则创建一个Integer对象。基本上平时的程序中,这个范围的整数是最常用的。
IntegerCache是什么?看看源码
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);
}
}
}
可见,IntegerCache预先创建了这些Integer对象。
所以,要注意的是,new Integer返回的永远是不同的对象,但是当整数范围在-128<i<=127时,Integer.valueOf返回的是同一个对象。看看下面代码:
Integer a=new Integer(1);
Integer b=new Integer(1);
//整数范围在-128到127之间,返回的是同一个对象
Integer c=Integer.valueOf(1);
Integer d=Integer.valueOf(1);
//返回的不是同一个对象
Integer e=Integer.valueOf(200);
Integer f=Integer.valueOf(200);
System.out.println(a==b);
System.out.println(c==d);
System.out.println(e==f);
输出为
false
true
false
结论:在没有对Integer创建有特殊要求时,比如纯数字计算或比较,最好用Integer.valueOf。
【From Javaeye.com】
分享到:
相关推荐
Java Integer.ValueOf()的一些了解 在Java中,Integer.ValueOf()方法是一个非常重要的方法,它可以将整数类型的值转换为Integer对象。下面我们就来详细了解一下这个方法的实现原理和使用方式。 首先,让我们来看...
Java Integer.valueOf()和Integer.parseInt()的区别说明 Java 中的 Integer 类中有两个静态方法,Integer.valueOf(String s) 和 Integer.parseInt(String s),它们都可以将字符串转换为整型,但它们之间有着很大的...
* 使用 `Integer.valueOf()` 方法:`String str = "25"; int i = Integer.valueOf(str).intValue();` 字符串到浮点型 将字符串转换为浮点型可以使用以下方法: * 使用 `Double.parseDouble()` 方法:`String str ...
Integer integer = Integer.valueOf(str); 三、将 int 转换成 String 将 int 转换成 String 可以使用以下三种方法: 1. 使用 String.valueOf() 方法 String s = String.valueOf(i); 2. 使用 Integer.toString()...
Integer i = Integer.valueOf("300"); Long l = Long.valueOf("400"); System.out.println(b + " " + s + " " + i + " " + l); ``` 7.2 System类 System类提供了与系统环境相关的功能,如获取系统属性、控制输入...
Integer k = Integer.valueOf(123); System.out.println(z == k); // 输出 true,因为使用了缓存 ``` 5. Integer的valueOf方法实现 valueOf方法首先检查给定的数值是否在缓存池范围内,如果在则直接返回缓存的对象...
在Java中,`Integer.parseInt()` 和 `Integer.valueOf()` 方法默认将字符串转换为32位有符号整数。这意味着它们能够处理的范围是 `-2^31` 到 `2^31 - 1`,即 `-2147483648` 到 `2147483647`。因此,当试图将 `'...
在Java编程语言中,将`Integer`对象转换为基本数据类型`int`有两种常见的方法:`Integer.parseInt()`和`Integer.valueOf()`。理解这两种方法的区别和应用场景对于编写高效且正确的Java代码至关重要。 首先,我们来...
Integer i = Integer.valueOf("100"); Long l = Long.valueOf("100"); Boolean b = Boolean.valueOf("false"); Integer iVal = Integer.valueOf(100); Long lVal = Long.valueOf(100L); Boolean bVal = ...
十进制与八进制与十六进制之间的转换可以使用 Integer.toOctalString() 方法、Integer.toHexString() 方法和 Integer.valueOf() 方法。例如: ```java int dec = 150; String octal = Integer.toOctalString(dec);//...
- **valueOf方法**:`valueOf`方法可以将字符串或特定进制的字符串转换为`Integer`对象。 ```java Integer i = Integer.valueOf("1234"); // 或者 Integer.valueOf("1234", 8); 如果字符串是八进制表示 ``` 总之...
Integer integer = Integer.valueOf(intStr); return integer.intValue(); } // 将整数类型转换为字符串类型 public static String intToString(int value) { Integer integer = new Integer(value); return...
- **使用`Integer.valueOf().intValue()`**:将字符串转换为整型。 ```java String str = "25"; int i = Integer.valueOf(str).intValue(); ``` - **使用`Integer.parseInt()`**:将字符串转换为整型。 ```java...
8. **数值转换**:`Integer.parseInt("123")`将字符串转换为整数,`Integer.valueOf("123").intValue()`也是同样的效果。`Integer.parseInt("123")`和`Integer.valueOf("123").intValue()`返回的都是`a`,因为它们是...
在装箱阶段,Java 会自动调用 valueOf 方法,而在拆箱阶段,Java 会自动调用 xxxValue 方法。这样可以简化代码和提高性能。 4. Java 包装类型的自动装箱拆箱机制 Java 包装类型的自动装箱拆箱机制是指在(assign)...
可以通过`Integer.valueOf()`或`Integer.parseInt()`方法实现: ```java String str = "25"; int i = Integer.valueOf(str).intValue(); // 使用valueOf // 或者 int i = Integer.parseInt(str); // 使用parseInt `...
Integer wInt = Integer.valueOf(sInt); ``` - **从包装类到基本数据类型** - 使用包装类提供的转换方法: ```java Integer wInt = new Integer(500); int pInt = wInt.intValue(); ``` - **从字符串到...
这一过程在后台由Java编译器完成,无需开发者显式调用`Integer.valueOf()`方法。 **自动拆箱**则是相反的过程,即把包装类对象转换为基本数据类型的过程。例如,将`Integer`对象转换为`int`类型。同样,这一过程也...
2. 使用 `Integer.valueOf()` 方法:`int i = Integer.valueOf("123").intValue();` 这两种方法都可以将字符串转换为整数,但需要注意的是,如果字符串不能被转换为整数,那么将抛出 `NumberFormatException` 异常...
在Java中,我们可以直接声明Integer i = 10,这将自动装箱变为Integer i = Integer.valueOf(10);同时Integer i 也可以自动拆箱为 i.intValue()。 知识点2:Integer.valueOf()方法 Integer.valueOf()方法会将int...