在 JAVA 中如何处理不可变字符串?



我正在解决一个小问题。我知道 StringBuilder 类在 JAVA 中用于处理可变字符串。我正在处理的问题要求我将字符串传递给返回 void 并就地反转字符串的函数。我不知何故无法完成这项工作,因为我在 main 中的函数调用后引用的字符串不再是我作为函数参数发送的字符串。有没有办法让我不必返回即可获得该字符串?

import java.io.*;
import java.util.Scanner;
public class first {
void rev(String s) {
StringBuilder sb = new StringBuilder(s.length()+1);
sb.append(s);
sb.reverse();
System.out.println(sb);
s=sb.toString();
System.out.println(s);
}
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter a string");
String s;
first fs = new first();
s=br.readLine();
fs.rev(s);
System.out.println(s);
}
}

你应该通过 StringBuilder 而不是像这样传递 String。

void rev(StringBuilder sb) {
sb.reverse();
System.out.println(sb);
String s = sb.toString();
System.out.println(s);
}
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter a string");
Main fs = new Main();
StringBuilder s = new StringBuilder(br.readLine());
fs.rev(s);
System.out.println(s);
}

Java 是按值传递的,所以不能这样做。但是,您可以通过拥有一个保存字符串的成员变量来破解它(并对其进行操作(

最新更新