6 回答

TA貢獻1788條經驗 獲得超4個贊
String
對象是不可變的,而變量 studentDetails
不是。
當您調用時 studentDetails += stu.getFirstName()
,您創建了一個新String
對象并將其分配給變量 studentDetails

TA貢獻1836條經驗 獲得超4個贊
使用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 不是一個單一的 String 對象嗎
不,因為每次用 附加兩個Strings 時+=,都會創建一個新String的。

TA貢獻1786條經驗 獲得超13個贊
字符串是不可變的 - 使用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貢獻1812條經驗 獲得超5個贊
是的,java中的字符串對象是不可變的。字符串中的任何更改都將創建新的字符串對象。而 stringBuilder 和 StringBuffer 是可變的

TA貢獻1827條經驗 獲得超9個贊
是的,String
對象是不可變的,這就是為什么需要使用StringBuilder
or StringBuffer
。以下是顯示的步驟StringBuilder
創建類型變量
StringBuilder
使用
append()
方法連接String
調用
toString()
將其轉換為String

TA貢獻2039條經驗 獲得超8個贊
是的,字符串是不可變的,如果需要線程安全,只需使用 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");
}
添加回答
舉報