String类型错题整理

如下程序打印的结果是什么呢?

public class AnimalFarm{
	public static void main(String[] args){
		final String pig = "length: 10";
		final String dog = "length: " + pig.length();
		System.out. println("Animals are equal: " + pig == dog);
	}
}

false:
先拼接"Animals are equal: " + pig得到新的字符串,然后在比较==
如果代码这样写:

public class AnimalFarm{
	public static void main(String[] args){
		final String pig = "length: 10";
		final String dog = "length: " + pig.length();
		System.out. println(pig == dog);
	}
}

返回的也是false,因为 pig.length() 是要经过运算得出来的,他不是字面值常量。所以 pig.length() 和 字面值常量 "length: 10"的拼接运算,要在堆中进行。
然而,pig 指向的是方法区中字面值常量的地址, dog 指向的是堆中, pig.length() 和 字面值常量 "length: 10"拼接 后得到的String对象的地址。 所以返回false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值