integer常量池在哪_java 常量池

integer常量池在哪_java 常量池常量池java中存在字符串常量池,维护了所有String对象使用Strings=”zx”的时候是使用String.valueOf(“zx”)从常量池中找了个对象返回在使用new的时候是直接创建一个新的对象Integer中也有常量池其中缓存了-128到127之间的数字(一个字节八位大小)Integera=127与Integerb=127相等吗对于对象引用类型:==比较的是对象的内存地址。对于基本数据类型:==比较的是值。如果整型字面量的值在-128到127

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目录

常量池

Integer a= 127 与 Integer b = 127相等吗


常量池

java中存在字符串常量池,维护了所有String对象

使用String s=”zx”的时候是使用String.valueOf(“zx”)从常量池中找了个对象返回 如果不存在则将内容放入常量池中

在使用new的时候是直接创建一个新的对象在堆中

Integer中也有常量池 其中缓存了-128到127之间的数字(一个字节八位大小)

Integer a= 127 Integer b = 127相等吗

对于对象引用类型:
==
比较的是对象的内存地址。
对于基本数据类型:
==
比较的是值。
如果整型字面量的值在-128

127
之间,那么自动装箱时不会
new 新的Integer
对象,而是直接引用Integer常量池中的
Integer
对象,超过范围
a1==b1
的结果是
false
public static void main(String[] args) {
  Integer a = new Integer(3);  
  Integer b = 3; // 将3自动装箱成Integer类型  
  int c = 3; 
  System.out.println(a == b); 
  // false 两个引用没有引用同一对象(比较的是引用)
  System.out.println(a == c); 
  // true a自动拆箱成int类型再和c比较(比较的是值)  
  System.out.println(b == c); 
  // true



//如果整型字面量的值在-128到127之间,
//那么自动装箱时不会new 新的Integer 对象,
//而是直接引用常量池中的Integer对象,
//超过范围 a1==b1的结果是false
  Integer a1 = 128;
  Integer b1 = 128; 
  System.out.println(a1 == b1); 
  // false 
  Integer a2 = 127;  
  Integer b2 = 127; 
  System.out.println(a2 == b2); 
  // true 
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195655.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号