自定义'字符串'类

Zac*_*ack 1 java string stringbuilder

我试图弄清楚java类是如何工作的.

当我创建一个StringBuilder:

StringBuilder testString = new StringBuilder("Hello World!);
Run Code Online (Sandbox Code Playgroud)

如果我想,比如说,获取testSting引用的值,我可以简单地称之为:System.out.println(testString);

这是很酷的行为,但我不确定如何在我制作的类中复制它.

例如,如果我尝试重新实现我自己的版本StringBuilder,我将采取的方法(作为初学者)将是这样的:

class MyBuilder {
    char[] string; 


public MyBuilder(String s) {
    string = new char[s.length()];
    string = s.toCharArray();

}
Run Code Online (Sandbox Code Playgroud)

因此,要使字符串成为数组,我必须将其存储在类的数据字段中.但是,要在我的代码中访问它,我不能通过简单地调用变量名来打印它.我必须使用.property语法.因此,为了复制上面的例子,我必须键入System.out.println(testString.value);哪个不是很漂亮.

如何创建一个类,使其行为像String或StringBuilder并返回其值而无需手动访问数据字段?

pb2*_*b2q 6

实现一个toString方法.

toString是一个方法Object,所以每个java对象都继承一个.您继承的默认实现仅对获取类类型以及区分一个对象和另一个对象有用.格式为:ClassName @ HashCode.您的实施没有独特的细节.

在您自己的类中,为了获得您想要的描述,您需要覆盖该toString方法,以便在String期望a的上下文中,例如在您调用时System.out.println(myObject.toString());,使用您自己的格式.

这样做通常是一个好主意,以获得对象的更易读的描述.您始终可以在自己的输出中调用super.toString包含默认值 - ClassName @ HashCode的输出.