javascript - 使用String重写StringBuilder类

查看:121
本文介绍了javascript - 使用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:


public class Test {

    public static void main(String[] args) {
        iStringBuilder test = new iStringBuilder("HelloWorld");
        iStringBuilder tail = new iStringBuilder("!~~~~~~~");
        System.out.println(test);
        System.out.println(tail);
        
        test.append(tail);
        System.out.println(test);
        test.append(1);
        System.out.println(test);
        System.out.println(test.charAt(5));
        System.out.println(test.toLowerCase());
        System.out.println(test.toUpperCase());
        System.out.println(test.length());
        System.out.println(test.toString());
    }
}

然后是输出:

iStringBuilder@15db9742
iStringBuilder@6d06d69c
iStringBuilder@15db9742
iStringBuilder@15db9742
W
helloworldistringbuilder@6d06d69c1
HELLOWORLDISTRINGBUILDER@6D06D69C1
34
iStringBuilder@15db9742

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

解决方案

  1. 你并没有修改String类啊。主要表现在你没有继承之,当然,final的类你继承不了。

  2. System.out.print(Object o)相当于System.out.print(o.toString())你想打印出HelloWorld必须要重写toString()方法,这个方法来自于Object,所以所有对象都支持,默认的toString方法就是返回地址的。toLowerCase函数时能打印出helloworld是因为它返回的是StringString是重写了toString方法的。

这篇关于javascript - 使用String重写StringBuilder类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆