当前位置 : 主页 > 网络编程 > 其它编程 >

stringa=java_JAVA基础知识|Stringa=abc;Stringa=newString(abc);

来源:互联网 收集:自由互联 发布时间:2023-07-02
1、Stringaabc;首先在栈中定义了一个引用变量a检查字符串常量池中是否已经存在abc如果存在直接将a指向这个地址注意 1、String a "abc"; 首先在栈中定义了一个引用变量a检查字符串常量池中
1、Stringaabc;首先在栈中定义了一个引用变量a检查字符串常量池中是否已经存在abc如果存在直接将a指向这个地址注意

1、String a "abc";

首先在栈中定义了一个引用变量a检查字符串常量池中是否已经存在"abc"如果存在直接将a指向这个地址注意指向的是字符串常量池中的地址

如果字符串常量池中不存在"abc"则进行如下操作1、在栈中创建三个char型的值a,b,c然后在堆中new一个String对象它的值是刚才在栈中创建的三个char型值组成的数组{a,b,c}接着这个String对象会被存放进字符串常量池中最后将a指向这个对象在字符串常量池中的地址。

String a "abc";

等效于

char data[] {a, b, c};

String a new String(data);

53cadff9462c06f1eb9d690493cd425c.png

2、String a   new String("abc");

首先在栈中定义了一个引用变量a然后在堆中new一个String对象a指向这个对象然后new出来的String对象再指向常量池中的abc。

48f0f0c22d63dc9a6bfeeaf8c976cc68.png

3、比较

String a "abc";

String b "abc";

String c new String("abc");

String d new String("abc");

System.out.println(ab);

System.out.println(ac);

System.out.println(c d);

执行结果

true

false

false

注意new String("abc") 无论字符串常量池中是否存在“abc”都会在堆中生成一个新的对象所以a、c、d三者不相等。

以上为个人理解如果有误欢迎指正。

上一篇:使用DubboMonitor监控中心
下一篇:没有了
网友评论