做Excel文件批量导入报价,校验"证书"并连接多个"证书"时的JAVA代码如下:
[c-sharp] view plaincopy
1 StringBuffer certify = new StringBuffer();
2
3 ……
4
5 case 11: // 校验证书(1):FAA8130-3 FORM
6 if (rowData[11] != null && !rowData[11].equals(""))
7 certify.append("FAA8130-3 FORM");
8
9 case 12: // 校验证书(2):EASA FORM1
10 if (rowData[12] != null && !rowData[12].equals("")) {
11 if (certify.toString().equals(""))
12 certify.append("EASA FORM1");
13 else
14 certify.append(", EASA FORM1");
15 }
原先用的certify.equals("")方法判断StringBuffer的值是否为空值,但是发现certify为空值时,if返回都是false,后来上网看到这段才恍然大悟:
原来Object的equals()方法跟 == 是一样的 ,
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类型certify.equals("")判断的是certify和字符""是否为同一个对象,结果肯定不是。所以需要判断StringBuffer字符值是否相等,需要用certify.toString().equals("")判断才行。
相关推荐
StringBuffer解析
String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别
StringBuffer练习.doc
String ,StringBuffer与StringBuilder的区别
String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的
string和Stringbuffer使用方法浅谈
StringBuffer的常用方法实例,如:append、insert等等。其中,StringBuffer与String的区别详细做了例子。
String的效率低于StringBuffer,开发时最好选用StringBuffer。
String StringBuffer和StringBuilder 区别之源码解析 从源码角度简单对它们之间的区别进行了验证
StringBuffer:字符创变量 StringBuilder:字符创变量 从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段代码:
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供的字符串进行修改.当你知道字符数据要改变的时候...
方便人们把sql转化为StringBuffer拼接语句,也可以转为String拼接语句,jdk要在1.6以上,并且配置了JAVAHOME才能运行
string和StringBuffer的区别
StringBuffer的特点,Stringbuffer是字符串缓冲区: 是一个容器。
StringBuffer类的常用方法.md
详解string与stringbuffer的区别,详述了String 是不可变,以及他们的再字符串连接时的效率区别!
StringBuffer和String_区别 java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的...
介绍了String、StringBuffer、StringBuilder的使用方法,以及理论知识
简单的介绍了String、StringBuffer和StringBuilder的区别