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条经验 获得超12个赞
字符串是不可变的 - 使用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条经验 获得超7个赞
是的,字符串是不可变的,如果需要线程安全,只需使用 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");
}
添加回答
举报