坑!!!

StringBuilder的equals方法

当我们使用StringBuilder创建对象时,会在内存中开辟一个新的地址用于存放对象内容。但即使StringBuilder对象中存放的内容与其它字符串的内容相等时,使用equals方法来判断也是返回的false,例:

    public boolean isPalindrome(int x) {
        StringBuilder str = new StringBuilder(String.valueOf(x));
        StringBuilder copyStr = new StringBuilder(str);
        if (copyStr.equals(str.reverse())) {
            return true;
        } else {
            return false;
        }
    }

原因:StringBuilder并没有重写equals方法,源代码如下:

    public boolean equals(Object obj) {
        return (this == obj);
    }

Arrays.asList方法得到的List不能进行add remove clear操作

    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1, 2, 3);
        //以下三个操作都是非法的
        list.add(1);
        list.remove(1);
        list.clear();
    }

执行结果:

Exception in thread "main" java.lang.UnsupportedOperationException

原因:asList方法得到对的List是只读的。决解方式如下:

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值