6 回答

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
String
對(duì)象是不可變的,而變量 studentDetails
不是。
當(dāng)您調(diào)用時(shí) studentDetails += stu.getFirstName()
,您創(chuàng)建了一個(gè)新String
對(duì)象并將其分配給變量 studentDetails

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用StringBuilder:
public void displayString(Student[] students)
{
StringBuilder studentDetails = new StringBuilder();
for (Student stu : students)
{
studentDetails.append(stu.getFirstName());
studentDetails.append(' ');
studentDetails.append(stu.getLastName());
studentDetails.append(' ');
studentDetails.append(stu.getAge());
studentDetails.append('\n');
}
System.out.println("Student Details are: ");
System.out.println(studentDetails.toString());
}
String 是不可變的,studentDetails 不是一個(gè)單一的 String 對(duì)象嗎
不,因?yàn)槊看斡?附加兩個(gè)Strings 時(shí)+=,都會(huì)創(chuàng)建一個(gè)新String的。

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
字符串是不可變的 - 使用StringBuilder或StringBuffer(線程安全)代替
public void displayString(Student[] students)
{
StringBuilder studentDetails = new StringBuilder();
for (Student stu : students)
{
studentDetails.append(stu.getFirstName());
studentDetails.append(" ");
studentDetails.append(stu.getLastName());
studentDetails.append(" ");
studentDetails.append(stu.getAge());
studentDetails.append("\n");
}
System.out.println("Student Details are: ");
System.out.println(studentDetails.toString());
}

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
是的,java中的字符串對(duì)象是不可變的。字符串中的任何更改都將創(chuàng)建新的字符串對(duì)象。而 stringBuilder 和 StringBuffer 是可變的

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
是的,String
對(duì)象是不可變的,這就是為什么需要使用StringBuilder
or StringBuffer
。以下是顯示的步驟StringBuilder
創(chuàng)建類型變量
StringBuilder
使用
append()
方法連接String
調(diào)用
toString()
將其轉(zhuǎn)換為String

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
是的,字符串是不可變的,如果需要線程安全,只需使用 StringBuilder 或 stringBuffer ....
StringBuilder studentDetails = "";
for (Student stu : students)
{
studentDetails.append(stu.getFirstName());
studentDetails.append(" ");
studentDetails.append(stu.getLastName());
studentDetails.append(" ");
studentDetails.append(stu.getAge());
studentDetails.append("\n");
}
添加回答
舉報(bào)