在Java解决方案类中,现在我们创建对象Solution s=new Solution();为什么我们不能做解决方案s=“aaa”;当我们可以做字符串str=“aaa”;[非公开会议]

yhuiod9q  于 2023-01-24  发布在  Java
关注(0)|答案(2)|浏览(136)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

2天前关闭。
Improve this question
我需要你解释一下我的问题。

class Solution {

    public static void main(String []args) {
        String str = "Ankdg";
        Solution s = "dsads"; //is it possible
    }
}
uklbhaso

uklbhaso1#

请参阅Java 17的 *Java语言规范 * 第3.10.5节(字符串文字)
字符串文字由双引号中的零个或多个字符组成。
字符串文本的类型始终为String
还要注意,Stringfinal类,因此不能对其进行扩展。

kxkpmulp

kxkpmulp2#

字符串str =“锚定”;这里我们将字符串对象赋值为文本。Java中存在这个特性是为了提高内存效率。如果我们将字符串对象赋值为文本,它将被存储在字符串池内存(Java堆内存的一部分)中,并且只存储唯一的值。因此,当另一个变量被赋值为相同的值时,它仍然指向字符串池中的同一个对象

字符串str 2 =“Ankdg”字符串str=“Ankdg”字符串str 2和str都将指向字符串池中的相同位置。
String str = new String(“Ankdg”)[如果以这种方式分配对象,则无论对象是否存在于内存中,都会在内存中创建对象。此外,对象将存储在堆内存中,而不是字符串池中]
回到你的问题,解答s =“dsads”;//是否可能
这是不可能的,因为该功能不适用于用户定义的类
希望这能回答你的问题:)

相关问题