2017-07-27 109 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。 –