Java中一个字符串对象一旦被分配,其内容是不可变的原因是什么,是因为String方法中char【】数组被final修饰的原因吗
以下答案引用自GPT-3大模型,请合理使用:
String对象是不可变的,因为它的内容是由char数组组成的。在String类中,char数组的初始化是由final修饰的。因此,如果要修改字符串对象中的内容,必须通过重新创建一个String对象。
编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转,例如将“To be or not to be",变成"oT eb ro ton ot eb."。
package changYongLei;
import java.util.Scanner;
public class FanZhuan_String2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = null;
if(sc.hasNext()) {
str = sc.nextLine();
}
if(str == null){
System.out.println("");
}else {
String[] ss = str.split(" {1,}");
//用多个空格分隔符进行分隔。split(" {1,}").。注意是空格加{1,}。
// 就是说以1个空格或者1个以上空格分隔。如果是用两个或者以上空格split(“ {2,}”)。
for (int i = 0; i < ss.length; i++) {
StringBuilder builder = new StringBuilder();
if (i == ss.length - 1)
System.out.print(builder.append(ss[i]).reverse() + ".");
else
System.out.print(builder.append(ss[i]).reverse() + " ");
}
}
}
}
方法二:(简单的方法,简洁好用)
package changYongLei;
import java.util.Scanner;
public class FanZhuan_String3 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String x=in.nextLine();
String arr[]=x.split(" ");
for(int i=0;i<=arr.length-2;i++) {
StringBuffer sb=new StringBuffer(arr[i]);
System.out.print(sb.reverse()/*.toString()*/+" ");
}
StringBuffer sb=new StringBuffer(arr[arr.length-1]);
System.out.print(sb.reverse()/*.toString()*/+".");
}
}