java 字符串变量赋值例如 String a="abc"; String b; b=a; b="
java字符串变量赋值例如Stringa="abc";Stringb;b=a;b="abcd";为什么输出a时还是abc??令b=a;不是令b与a同时管理abc这个字符串...
java 字符串变量赋值例如
String a="abc";
String b;
b=a;
b="abcd";
为什么输出a时还是abc??令b=a;不是令b与a同时管理abc这个字符串吗??刚学,求大神解答 展开
String a="abc";
String b;
b=a;
b="abcd";
为什么输出a时还是abc??令b=a;不是令b与a同时管理abc这个字符串吗??刚学,求大神解答 展开
2个回答
展开全部
String a = "abc"; // 定义了一个 "abc" 字符串 ,a 指向 这个字符串
String b;
b = a; // 使b也指向 a现在指向的那个字符串("abc")
b = "abcd"; // 定义了一个"abcd" 字符串,b 指向 这个新的字符串
在内存中大致的示意图如下:
所以最后 a =“abc”,b=“abcd”
java中字符串是一个较为特殊的存在,如果感兴趣可以找资料详细了解
2018-01-27 · 百度知道合伙人官方认证企业
尚学堂科技有限公司
北京尚学堂科技有限公司是一家从事JAVA、大数据、web前端、网络在线教育、互联网架构师、Android、ios技术开发、咨询为一体的软件公司。公司由海外留学人员和国内IT人士创建。
向TA提问
关注
展开全部
关于字符串需要理解以下两点:
字符串是常量,它们的值在创建之后不能更改(final),可以共享。
当常量池中存在常量abc时,当声明String b="abc";的时候首先会去检查常量池中是否已经存在常量abc,如果存在就不会再去分配一个abc,而是直接将已有对象abc的地址赋值给栈中的b(此过程是编译器的化)。
此题解释在注释中:
public class Test {
public static void main(String[] args) {
// 栈中变量a指向字符串常量池中的"abc"
String a = "abc";
// 声明一个变量b
String b;
// 把a的地址赋给b,此时变量a和b同时指向字符串常量池中的"abc"
b = a;
// 把字符串常量池中的"abcd"的地址重新赋值给b,此时的b指向字符串常量池中的"abcd",而不是指向常量"abc"
b = "abcd";
System.out.println(a);
System.out.println(b);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询