java中Integer.valueOf和new Integer的区别 - 面试宝典
【摘要】 在Java中,Integer.valueOf()和new Integer()是创建Integer对象的两种方式,它们之间有一些区别。返回类型:Integer.valueOf()方法返回一个Integer对象,而new Integer()返回一个new Integer的实例。缓存:Integer.valueOf()方法在内部使用了一个缓...
在Java中,Integer.valueOf()
和new Integer()
是创建Integer对象的两种方式,它们之间有一些区别。
- 返回类型:
Integer.valueOf()
方法返回一个Integer
对象,而new Integer()
返回一个new Integer
的实例。 - 缓存:
Integer.valueOf()
方法在内部使用了一个缓存,它会缓存在范围-128到127之间的所有整数对象,这样在创建这些整数对象时,会直接返回缓存中的对象,而不会创建新的对象。而new Integer()
则会每次都创建一个新的整数对象。 - 自动拆箱:
Integer.valueOf()
方法返回的是一个Integer
包装类对象,可以直接赋值给int
类型的变量,会自动进行拆箱操作。而new Integer()
返回的是一个Integer
对象,需要通过调用intValue()
方法才能获取其对应的int
值。 - 内存占用:由于
Integer.valueOf()
方法使用了缓存,所以在频繁创建小于等于127的整数对象时,可以减少内存占用。而new Integer()
每次都会创建一个新的对象,可能会造成内存浪费。 综上所述,推荐使用Integer.valueOf()
方法来创建Integer
对象,特别是在创建整数对象范围在-128到127之间的情况下,可以减少内存占用并提高性能。但在需要创建不在缓存范围内的整数对象时,需要使用new Integer()
方法来创建新的对象。
以下是使用Integer.valueOf()
和new Integer()
创建Integer
对象的示例代码:
javaCopy code// 使用 Integer.valueOf() 方法创建 Integer 对象
Integer num1 = Integer.valueOf(10); // 使用缓存,返回缓存中的对象
Integer num2 = Integer.valueOf(10); // 使用缓存,返回缓存中的对象
System.out.println(num1 == num2); // 输出 true,表示为同一个对象
// 使用 new Integer() 方法创建 Integer 对象
Integer num3 = new Integer(10); // 创建新的 Integer 对象
Integer num4 = new Integer(10); // 创建新的 Integer 对象
System.out.println(num3 == num4); // 输出 false,表示为不同的对象
// 使用 Integer.valueOf() 方法进行自动拆箱
int value1 = Integer.valueOf(10); // 自动拆箱为 int 类型
int value2 = new Integer(10).intValue(); // 手动拆箱为 int 类型
System.out.println(value1); // 输出 10
System.out.println(value2); // 输出 10
需要注意的是,==
运算符用于比较对象引用是否相等,而不是比较对象的值是否相等。如果要比较对象的值是否相等,应该使用.equals()
方法:
javaCopy codeSystem.out.println(num1.equals(num2)); // 输出 true
System.out.println(num3.equals(num4)); // 输出 true
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)