java中字符串连接池的笔试题小结

 

题目:

import java.util.*; 
class StringTest{
public String hello ="Hello";
public String hel ="Hel";
public String lo ="lo"; 
}
class MyTest{ 
public MyTest(){}
public static void main(String[] args){
StringTest st = new StringTest();
String str1 ="Hello";
String str2 ="Hel";
String str3 ="lo";
String str4 ="Hel"+"lo";
String str5 =str2+str3;
String str6 =st.hel+st.lo;

(1)System.out.println(str1==str4);
(2)System.out.println(str1==str5);
(3)System.out.println(str1==st.hello);
(4)System.out.println(str1==str6);

}

 

输出的结果是true false true false 。
分析 :
String str5 =str2+str3; //相当于new("Hello")、相当于new("Hel"+"lo")。
(1)中,str4是字符串常量和常量的拼接,也是常量,在字符串常量池中,str4会重用str1指向的“Hello”字符串。所以为true;
(2)中,str5是包含变量的字符串连接符“+”,str5在程序运行时创建的对象,存在内存中的堆中,所以str1!==str5。
(3)中,st.hello是字符串字面量,即字符串常量,是存在方法区的字符串常量池中,(3)结果是true。
(4)中,str6是包含变量的字符串连接符“+”,所以str6是运行时创建的对象,在堆中,str1在字符串常量池中,所以为false。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值