使用String重写StringBuilder类

我重写的StringBuiler类:iStringBuilder


public class iStringBuilder {

    String target = new String();

    

    public iStringBuilder(String newString) {

        target = newString;

    }

    

    public void append(iStringBuilder newString) {

        target = target + newString;

    }

    

    public void append(int i) {

        String istr = i + "";

        target = target + istr;

    }

    

    public int length() {

        return (target.length());

    }

    

    public char charAt(int i) {

        return (target.charAt(i));

    }

    

    public String toLowerCase() {

        return (target.toLowerCase());

    }

    

    public String toUpperCase() {

        return (target.toUpperCase());

    }

}

然后是我用来测试类的测试类 Test:

https://img.mukewang.com/5bf661b20001971004350333.jpg

然后是输出:

https://img2.mukewang.com/5bf661bc000177c202630152.jpg

问题是:打印最初的字符串test时为什么不是HelloWorld而是一个地址,如果说我的方法彻底写错的话那为什么在toLowerCase函数时能打印出helloworld……求诸位指教(我知道String类不可变,但是我写入编译器的时候编译器没有报错,然后翻书百度未果,故来提问……)

HUX布斯
浏览 599回答 1
1回答

侃侃无极

你并没有修改String类啊。主要表现在你没有继承之,当然,final的类你继承不了。System.out.print(Object o)相当于System.out.print(o.toString())你想打印出HelloWorld必须要重写toString()方法,这个方法来自于Object,所以所有对象都支持,默认的toString方法就是返回地址的。toLowerCase函数时能打印出helloworld是因为它返回的是String,String是重写了toString方法的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript