java基础 a a

java基础 a a1 String a abc 首先在栈中定义了一个引用变量 a 检查字符串常量池 中是否已经存在 abc 如果存在直接将 a 指向这个地址 注意 指向的是字符串常量池中的地址 如果字符串常量池中不存在 abc 则进行如下操作 1 在栈中创建三个 char 型的值 a b c 然后在堆中 new 一个 String 对象 它的值是刚才在栈中创建的三个 char 型值组成的数组 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);

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

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

3、比较

 String a = "abc"; String b = "abc"; String c = new String("abc"); String d = new String("abc"); System.out.println(a == b); System.out.println(a == c); System.out.println(c == d);

执行结果:

true

false

false

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

小讯
上一篇 2024-12-26 11:59
下一篇 2025-01-01 23:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/1167.html