首页 > 编程知识 正文

java中号与equals方法的区别,陨石坑的制作方法视频

时间:2023-05-05 19:12:03 阅读:251411 作者:4848

我们经常会用到StringBuilder或StringBuffer类的append()方法,然而这里有个坑。

public static void main(String[] args) {

String ab = null;

StringBuffer stringBuffer = new StringBuffer();

stringBuffer.append("测试");

if(null== ab) {

stringBuffer.append(ab);

}

System.out.println(ab);

System.out.println(stringBuffer.toString());

}

输出:

null

测试null

多了一个null字符串。

下面是撸源码时间←_←

java.lang.StringBuffer#append(java.lang.String)

public synchronized StringBuffer append(String str) {

super.append(str); //关键从这里进入

return this;

}

java.lang.AbstractStringBuilder#append(java.lang.String)

/**

* Appends the specified string to this character sequence.

*

* The characters of the {@code String} argument are appended, in

* order, increasing the length of this sequence by the length of the

* argument. 这里: If {@code str} is {@code null}, then the four

* characters {@code "null"} are appended.

* 如果入参str是null,那么就会把“null”字符串给append进去。

*

* Let n be the length of this character sequence just prior to

* execution of the {@code append} method. Then the character at

* index k in the new character sequence is equal to the character

* at index k in the old character sequence, if k is less

* than n; otherwise, it is equal to the character at index

* k-n in the argument {@code str}.

*

* @param str a string.

* @return a reference to this object.

*/

public AbstractStringBuilder append(String str) {

if (str == null) str = "null"; //就是这一步

int len = str.length();

ensureCapacityInternal(count + len);

str.getChars(0, len, value, count);

count += len;

return this;

}

上面的源码注释说的明明白白,jdk给多此一举的转换了[捂脸]!!!

所以如果你在组装返回给前端的数据时,使用到了append()方法,那么xydld像下面的栗子一样使用append()方法时,请注意判空,负责会发生神马。。。。。。我神马都不知道,我神马都没说[捂脸]!!!:

append(coupon.getName());

改为:

String couponName = coupon.getName();

if(StringUtils.isNotBlank(couponName )){

append(couponName );

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。