Java常量池与java包装类

在Java中常量池在java中用于保存编译期已经确定的,它包括了关于类,方法,接口中的常量,也包括字符串常量。例如
String s = “Java” 这种声明的方式。产生的这种"常量"就会被放到常量池,常量池是JVM的一块特殊的内存空间。
使用Java常量池技术,是为了方便快捷地创建某些对象,当你需要一个对象时候,就去这个池子里面找,找不到就在池子里面创建一个。但是必须注意 如果对象是用new 创建的。那么不管是什么对像,它是不会放到池子里的,而是向堆申请新的空间存储。

public class L {
	public static void main(String [] args){
		Integer a =128;
		Integer b = 128;
		if (a==b){
			System.out.println("ture");
		}
		else{
			System.out.println("false");
		}
	}
}

这里的输出结果时false

public class L {
	public static void main(String [] args){
		Integer a =127;
		Integer b = 127;
		if (a==b){
			System.out.println("ture");
		}
		else{
			System.out.println("flase");
		}
	}
}

这里的输出结果时ture
包装类Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值小于等于127大于-128时才可使用对象池如果超出了127则需要new一个堆内存的空间。所以在上述代码中127与127之间比较是在常量池中的数相比较所以是相等的,对于128和128的比较则是错误的因为该数值已经超出了常量池,需要申请新的空间”“ 我们知道比较的是引用的地址(其实java不要允许用户直接对内存进行操作的的)。new出来的新地址虽然存放的数值一样但是地址不同比较的是地址所以Integer a =128;Integer b = 128;中a!=b;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值