2016-04-21 100 views
0

我正在进行一项练习,其中包括创建我自己的String类实现,以及此类中存在的一些方法。我在创建一个返回子字符串的工作方法时遇到了一些麻烦。到目前为止,我的课程实施如下所示:创建我自己的字符串类/子字符串方法

public class MyString2 { 

    private String s; 

    public MyString2(String s) { 
     this.s = s; 
    } 

    public MyString2 substring(int begin) { 

     String substring = ""; 

     for (int i = begin; i < s.length(); i++) { 
      substring += s.charAt(i); 
     } 
     return new MyString2(substring); 
    } 

} 

该方法背后的想法非常简单;

创建一个空白子字符串,然后从输入字符串中从选定索引开始,对每个字符进行连接。下面是测试类的主要方法:

public static void main(String[] args) { 

     MyString2 s1 = new MyString2("string");  
     MyString2 substring = s1.substring(3); 

     System.out.println(substring); 

    } 

程序返回[email protected],谁能告诉我什么是错我的程序?

回答

9

目前,您正在打印对象而不是其内容。您可以在MyString2类中重写toString()改变这种行为:

@Override 
public String toString() { 
    return s; 
} 
+0

非常感谢,这工作就像一个魅力!我应该自己想过这个,但在练习描述中,toString()方法不在该类应包含的方法列表中。 – Esben86

+0

这可能是因为它不是您自己实现的方法,而是,Java中的每个对象都是https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html的子类。包含'toString()','hashCode()'和'equals()'等方法,您可以使用自己的实现来覆盖所有这些方法。 – nbokmans

相关问题