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));