用 StringBuilder 替换字符串?
Replace String with StringBuilder?
我如何添加一个 passStringBuilder() 方法来创建一个与 passString() 功能相同的新方法?我需要它与 StringBuilder 对象而不是 String 对象一起使用。问候。
import intertech.MyDate;
public class PassByExperiment {
public static void main(String[] args) {
MyDate date = new MyDate(1, 20, 2008);
System.out.println("Before passing an object " + date);
passObject(date);
System.out.println("After passing an object " + date);
System.out.println("Before passing a primitive " +
date.year);
passPrimitive(date.year);
System.out.println("After passing a primitive " +
date.year);
String x = date.toString();
System.out.println("Before passing a String " + x);
passString(x);
System.out.println("After passing a String " + x);
}
public static void passObject(MyDate d) {
d.year = 2009;
}
public static void passPrimitive(int i) {
i = 2010;
}
public static void passString(String s)
{
int yearSlash = s.lastIndexOf('/');
s = s.substring(0, yearSlash + 1);
s += "2012";
System.out.println("New date string: " + s);
}
}
这是我试过的:
public static void passStringBuilder(StringBuilder sb) {
int yearSlashSB = sb.lastIndexOf('/');
sb = sb.substring(0, yearSlashSB + 1);
sb.append("2012");
System.out.println("New date string: " + sb);
}
StringBuilder 是一个 class,您可以将其作为任何其他对象传递:
public static void passStringBuilder(StringBuilder sb) {
int yearSlash = sb.lastIndexOf("/");
sb.delete(yearSlash + 1, sb.length());
sb,append("2012");
System.out.println("New date string: " + sb.toString());
}
StringBuilder#substring
returns 一个 String
是一个子字符串,sb
保持原样。您需要删除某些字符。
基本上,StringBuilder
保存字符并让您轻松操作它们。稍后,它允许您从中提取 String
。您可以使用 substring
或 toString
.
自 Java 8 起,使用它进行连接没有任何意义,因为 String + String
被 Java 自动更改为 StringBuilder
。
如果要求不是纯粹的学术性质,我建议
public static void passStringBuilder(StringBuilder sb) {
passString(sb.toString());
}
我如何添加一个 passStringBuilder() 方法来创建一个与 passString() 功能相同的新方法?我需要它与 StringBuilder 对象而不是 String 对象一起使用。问候。
import intertech.MyDate;
public class PassByExperiment {
public static void main(String[] args) {
MyDate date = new MyDate(1, 20, 2008);
System.out.println("Before passing an object " + date);
passObject(date);
System.out.println("After passing an object " + date);
System.out.println("Before passing a primitive " +
date.year);
passPrimitive(date.year);
System.out.println("After passing a primitive " +
date.year);
String x = date.toString();
System.out.println("Before passing a String " + x);
passString(x);
System.out.println("After passing a String " + x);
}
public static void passObject(MyDate d) {
d.year = 2009;
}
public static void passPrimitive(int i) {
i = 2010;
}
public static void passString(String s)
{
int yearSlash = s.lastIndexOf('/');
s = s.substring(0, yearSlash + 1);
s += "2012";
System.out.println("New date string: " + s);
}
}
这是我试过的:
public static void passStringBuilder(StringBuilder sb) {
int yearSlashSB = sb.lastIndexOf('/');
sb = sb.substring(0, yearSlashSB + 1);
sb.append("2012");
System.out.println("New date string: " + sb);
}
StringBuilder 是一个 class,您可以将其作为任何其他对象传递:
public static void passStringBuilder(StringBuilder sb) {
int yearSlash = sb.lastIndexOf("/");
sb.delete(yearSlash + 1, sb.length());
sb,append("2012");
System.out.println("New date string: " + sb.toString());
}
StringBuilder#substring
returns 一个 String
是一个子字符串,sb
保持原样。您需要删除某些字符。
基本上,StringBuilder
保存字符并让您轻松操作它们。稍后,它允许您从中提取 String
。您可以使用 substring
或 toString
.
自 Java 8 起,使用它进行连接没有任何意义,因为 String + String
被 Java 自动更改为 StringBuilder
。
如果要求不是纯粹的学术性质,我建议
public static void passStringBuilder(StringBuilder sb) {
passString(sb.toString());
}