2017-07-27 114 views
-3

我如何添加一个passStringBuilder()方法来创建一个和passString()一样工作的新方法?我需要使用StringBuilder对象而不是String对象。问候。用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); 
} 
+1

第一*格式*代码正确 – Lino

+1

检查'StringBuilder'的Javadoc。你会发现称为'lastIndexOf','delete'和'append'的方法可以使用。 –

+0

我试过但没有,如果有人有我的例子将是完美的...顺便说一句,这是我的第一个帖子抱歉的第一个格式的代码。 –

回答

0

StringBuilder是,你可以通过任何其他对象的类:

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。您可以使用substringtoString

从Java 8开始,将它用于并置是没有意义的,因为String + String被Java自动更改为StringBuilder

+0

男人你是最好的,谢谢你花时间回答我。 –

-1

没有要求在本质上是纯学术的,我建议

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

这将如何帮助理解passBy机制? – xenteros

+0

Op正在询问如何将对象传递给方法以执行相同的功能。除非是学术问题,否则这是要求的最清晰表示,我应该如何使用StringBuilder。 –