Java 这是内存中String和StringBuffer程序的正确表示形式吗?

Java 这是内存中String和StringBuffer程序的正确表示形式吗?,java,memory-management,heap-memory,stack-memory,Java,Memory Management,Heap Memory,Stack Memory,包装串 //概览:Memmory中的字符串和字符串缓冲区表示 公共类字符串{ public static void main(String args[]){ String s=new String("Hello"); String t=new String("Hello"); StringBuffer sb=new StringBuffer("He"); StringBuffer tb=sb; String s1="Hello"; Stri

包装串

//概览:Memmory中的字符串和字符串缓冲区表示

公共类字符串{

public static void main(String args[]){
    String s=new String("Hello");
    String t=new String("Hello");


    StringBuffer sb=new StringBuffer("He");

    StringBuffer tb=sb;

    String s1="Hello";
    String t1="Hello";

    sb.append("llo");
    tb.append(" goodbye!");
    s.concat("goodbye!");
    t=s.concat("goodbye!");


}
}

内存表示

否。字符串文字被合并,因此,每次只出现一次。

是的,这是在集合映射中正确表示的键值中使用的键概念字符串,为什么sun被指定为字符串g作为不可变对象,为什么String类equals和hashCode方法是多余的方法,但在stringBuffer类中,这些方法不是多余的方法

sb和tb引用相同的StringBuffer,因此更改一个也会更改另一个。s、 混凝土。。。返回一个新的合并字符串并返回它。如果未分配或使用,连接的字符串将丢失。字符串和StringBuffer是不同的:字符串不可变=不可更改,而StringBuffer可变=可更改。@MarkusKull和append如何?@MarkusKull如果使用新关键字创建字符串而不使用new怎么办。两者是否具有相同的引用或都指向相同的对象?append更改可变StringBuffer。用new创建的字符串总是一个不同的对象,但这并不重要,因为字符串是不可变的,不能更改。