Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用StringBuilder替换字符串?_Java_String_Stringbuilder - Fatal编程技术网

Java 用StringBuilder替换字符串?

Java 用StringBuilder替换字符串?,java,string,stringbuilder,Java,String,Stringbuilder,如何添加passStringBuilder()方法以创建与passStringBuilder()工作相同的新方法?我需要使用StringBuilder对象而不是字符串对象。问候 import intertech.MyDate; public class PassByExperiment { public static void main(String[] args) { MyDate date = new MyDate(1, 20, 2008); Sy

如何添加passStringBuilder()方法以创建与passStringBuilder()工作相同的新方法?我需要使用StringBuilder对象而不是字符串对象。问候

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);
}
是可以作为任何其他对象传递的类:

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
返回一个
String
,该字符串是一个子字符串,保持
sb
不变。您需要删除某些字符

基本上,
StringBuilder
保存字符并允许您轻松地操作它们。稍后,它允许您从中提取
String
。您可以使用
substring
toString


由于Java 8,使用它进行连接是没有意义的,因为Java会自动将
String+String
更改为
StringBuilder

我建议,这种要求在本质上不是纯学术性的

public static void passStringBuilder(StringBuilder sb) {
    passString(sb.toString());
}

首先正确设置代码格式检查JavaDoc中的
StringBuilder
。你可以使用名为
lastIndexOf
delete
append
的方法。我试过了,但如果有人给我举个例子,没有什么是完美的。。。顺便说一句,这是我的第一篇文章,很抱歉第一个格式代码。有很多例子,你只需要搜索它们。“我试过了,但什么都没做”是不太可能的。张贴您尝试过的内容。@Tom(附件中有)这对理解传递机制有何帮助?Op询问如何将对象传递给方法以执行相同的功能。这是对需求最清晰的表述,除非是一个学术问题,即我如何使用StringBuilder。伙计,你是最好的,谢谢你花时间回答我。