StringBuffer buff = new StringBuffer();
不要使用buff.length()>0方法,还有什么方法么?
似乎equals 和 == 都不行啊,请教在String str = new String()中
str.equals("")则可以判断出str为空
不要使用buff.length()>0方法,还有什么方法么?
似乎equals 和 == 都不行啊,请教在String str = new String()中
str.equals("")则可以判断出str为空
解决方案 »
- List集合包含元素的问题
- JAVA如何提取数据库里各个表的当天的记录(假设1个库里各个表的时间的字段名不一定)
- 为什么后缀名为jsf网页弹出自动关闭??
- 抛出异常出错的程序!
- JTextField 侦听文本改变时间,出现:java.lang.IllegalStateException: Attempt to mutate in notification异常,帮帮我,急死了!
- 一个Java Applet程序的与服务器的数据交换问题
- 主页设置被更改,没法改回,怎么办?
- 过新年散分,求得招财进宝,儿孙满堂!
- JDBC连Mysql,每次执行操作都要重新获取一次connection吗?
- 类的继承性问题
- 写了一个awt systemTray 程序,但eclipse编译不通过。jcreator却可以编译运行。
- 又是一道继承题
的话还真不会了MARK下
基于上述情况,我想不常用判断StringBuffer。如果非要判断的话,一般都会toString之后再说。
public boolean equals(Object obj) {
return (this == obj);
}
StringBuffer没有重写equals方法,所以
StringBuffer a = new StringBuffer(“a”);
StringBuffer b = new StringBuffer(“a”);
a.equals(b);这句跟a==b的效果一样,返回是false。string则重写了equals方法。
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
至于为什么StringBuffer不重写equals方法呢?难道toString已经包含了,
还是因为StringBuffer是可改变的?希望高手解答
另外,至于StringBuffer为什么不提供类似String的比较功能,毕竟StringBuffer不是String,用途不一样,正如2楼说的一样
再说,也没多少必要去搞清楚这个