`
xinyonda
  • 浏览: 6157 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Integer的new和valueof()的区别

 
阅读更多
Integer instance = new Integer(1)
Integer a = Integer.valueOf(1);
上述表达式主要区别:
两个都是得到一个Integer对象,但是Integer.valueOf的效率高。为什么呢?因为Integer.valueOf用到了缓存。
如Integer.valueOf()源代码:
public static Integer valueOf(int i) {
        if(i >= -128 && i <= IntegerCache.high)
            return IntegerCache.cache[i + 128];
        else
            return new Integer(i);
}
当传入的整数i:-128<i<=127时,从缓存里取出整数对应的Integer对象,否则创建一个Integer对象。
分享到:
评论

相关推荐

    Java Integer.valueOf()和Integer.parseInt()的区别说明

    Java Integer.valueOf()和Integer.parseInt()的区别说明 Java 中的 Integer 类中有两个静态方法,Integer.valueOf(String s) 和 Integer.parseInt(String s),它们都可以将字符串转换为整型,但它们之间有着很大的...

    Java Integer.ValueOf()的一些了解

    这是因为在Integer.ValueOf()方法中,会首先判断传入的整数值是否在-128到127之间,如果在这个范围内,就从IntegerCache中取出对应的缓存对象返回,因为i01和i02都是59,所以他们实际上是同一个对象的引用。...

    Integer类的使用方法

    - **valueOf方法**:`valueOf`方法可以将字符串或特定进制的字符串转换为`Integer`对象。 ```java Integer i = Integer.valueOf("1234"); // 或者 Integer.valueOf("1234", 8); 如果字符串是八进制表示 ``` 总之...

    第7讲 int和Integer有什么区别1

    查看`Integer`的源码可以帮助我们更深入地理解其内部机制,比如`Integer.valueOf()`方法如何实现值缓存,以及`Integer`对象的比较操作是如何进行的。 6. **扩展讨论**: - 自动装箱/拆箱发生的时间:这些操作发生...

    通过实例了解Java Integer类和int的区别

    在Java中,我们可以直接声明Integer i = 10,这将自动装箱变为Integer i = Integer.valueOf(10);同时Integer i 也可以自动拆箱为 i.intValue()。 知识点2:Integer.valueOf()方法 Integer.valueOf()方法会将int...

    javascript中tostring()和valueof()的用法及两者的区别

    提到了Java中的`parse()`、`valueOf()`和`toString()`,虽然这不是JavaScript中的概念,但可以简单对比一下:在Java中,`parseInt()`或`parseFloat()`用于将字符串转换为整数或浮点数,而`valueOf()`则用于将字符串...

    Integer创建对象

    实际上,Java编译器会自动执行`Integer.valueOf(40)`方法,这是由于Java的自动装箱机制。`Integer.valueOf()`方法的目的是优化性能,因为它利用了对象池机制。对象池在`Integer`类中以内部类`IntegerCache`的形式...

    java中int_char_string三种类型的相互转换

    Integer integer = Integer.valueOf(str); 三、将 int 转换成 String 将 int 转换成 String 可以使用以下三种方法: 1. 使用 String.valueOf() 方法 String s = String.valueOf(i); 2. 使用 Integer.toString()...

    Java中Integer两种转int方法比较

    在Java编程语言中,将`Integer`对象转换为基本数据类型`int`有两种常见的方法:`Integer.parseInt()`和`Integer.valueOf()`。理解这两种方法的区别和应用场景对于编写高效且正确的Java代码至关重要。 首先,我们来...

    进制之间的互相转换

    十进制与八进制与十六进制之间的转换可以使用 Integer.toOctalString() 方法、Integer.toHexString() 方法和 Integer.valueOf() 方法。例如: ```java int dec = 150; String octal = Integer.toOctalString(dec);//...

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

    当 BigDecimal 的值超过 Integer 的最大值 `Integer.MAX_VALUE`(即 `2^31 - 1`),调用 `intValue()` 方法时,会抛出 `java.lang.ArithmeticException`,提示“Out of range”。例如: ```java BigDecimal ...

    java数据类型转换

    可以通过`Integer.valueOf()`或`Integer.parseInt()`方法实现: ```java String str = "25"; int i = Integer.valueOf(str).intValue(); // 使用valueOf // 或者 int i = Integer.parseInt(str); // 使用parseInt `...

    Integer类的缓存机制

    `这行代码中,由于110在Integer缓存的范围内(-128到127),所以Integer#valueOf(int i)方法会从缓存中获取已经存在的110对应的Integer对象,因此a和b指向的是同一个对象,`a == b`的结果为`true`。 而在`Integer c...

    Java 基础.pdf_电子版pdf版

    Integer z = Integer.valueOf(123); Integer k = Integer.valueOf(123); System.out.println(z == k); // 输出 true,因为使用了缓存 ``` 5. Integer的valueOf方法实现 valueOf方法首先检查给定的数值是否在缓存池...

    张海 复习1

    另一方面,对于-128到127之间的Integer对象,Java提供了缓存机制,因此`Integer.valueOf(-128) == Integer.valueOf(-128)`为真。对于大于127的值,如`Integer.valueOf(128)`,缓存行为未定义,因此比较结果不确定。...

    Java实训教程 Java软件开发实战 Java类库 第3章 包装器类等 共40页.pptx

    Integer iVal = Integer.valueOf(100); Long lVal = Long.valueOf(100L); Boolean bVal = Boolean.valueOf(false); ``` ##### 四、特定包装器类 - **`Boolean`类**: - 用于处理需要将`boolean`原始类型转换为...

    java包装类练习.doc

    Integer i = new Integer(xxx) 和 Integer i = xxx 的区别在于,前者创建了一个新的对象,而后者可能会从常量池中返回该对象的引用。如果 xxx 的值在 -128 到 127 之间,那么 Integer i = xxx;就可能会从常量池中...

    day04-常用API&异常1

    - `Integer.valueOf(String s)`:返回保存指定字符串值的Integer对象,同样,如果字符串不能解析为int,会抛出`NumberFormatException`。 2. **int与String类型的相互转换** - **int转String**:通常有两种方式...

    55丨享元模式(下):剖析享元模式在JavaInteger、String中的应用1

    当我们调用valueOf()方法时,如果值在这个范围内,就会从缓存池中获取对象,而不是每次都new一个新的对象。例如,`Integer i1 = 56; Integer i2 = 56;`虽然这两行代码看起来像是创建了两个Integer对象,但实际上,...

    JAVA中Integer值的范围实例代码

    ` 语句时,Java 会将其转换为 `Integer a = Integer.valueOf(100);`。由于 100 在缓存范围内,因此 Java 会从缓存中取出对应的对象。然后,我们执行 `Integer b = 100;`,同样地,Java 也会从缓存中取出对应的对象。...

Global site tag (gtag.js) - Google Analytics