为什么打印String s1={“abc”}时,输出的不是s1的地址值
时间: 2024-04-09 13:32:05 浏览: 112
在Java中,当你打印一个对象时,会自动调用该对象的`toString()`方法来获取其字符串表示形式。对于`String`类来说,它已经重写了`toString()`方法,以返回字符串本身而不是地址值。
所以,当你打印`String s1 = "abc"`时,输出的是字符串"abc"而不是内存地址值。如果你想打印出对象的地址值,可以使用`System.out.println(s1)`来实现。
相关问题
string s1=abc和new string
s1 是一个字符串变量,它被赋值为 "abc"。
new string 是 C# 中用于创建新字符串对象的语法。例如:string s2 = new string("abc"); 意思就是创建一个新的字符串对象,值为 "abc",并将其赋值给变量 s2。
String s1 = "abc"; String s2 = "abc"; System.out.println(s1 == s2); String s3 = "abc" + s1 + "def"; String s4 = "abcabcdef"; System.out.println(s3 == s4); String s5 = s3.intern(); System.out.println(s4 == s5);
s1和s2的结果是true,因为它们都指向字符串常量池中的同一个字符串对象"abc"。
s3和s4的结果是false,因为s是通过字符串拼接生成的新的字符串对象,在堆内存中分配。而s4是直接指向字符串常量池中的对象"abcabcdef"。
s5的结果是true,因为调用s3.intern()方法后,会在字符串常量池中查找是否存在"abcabcdef"这个字符串对象。由于之前已经创建过,所以s5会指向它。所以s4和s5都指向了同一个字符串对象。
阅读全文