我们经常会用到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()方法,那么当你像下面的栗子一样使用append()方法时,请注意判空,负责会发生神马。。。。。。我神马都不知道,我神马都没说[捂脸]!!!:

append(coupon.getName());

改为:

String couponName = coupon.getName();

if(StringUtils.isNotBlank(couponName )){

append(couponName );

}

java append()_append()方法的坑相关推荐

  1. 关于Java中repaint()方法的坑,循环调用repaint()方法并没有重新绘制

    1.关于repaint(),paint(),和update(),自己查询,这里不逼逼 推荐一个网站,自行了解https://blog.csdn.net/wangdingqiaoit/article/d ...

  2. java list接口方法_java List集合接口的坑

    原标题:java List集合接口的坑 java推荐面向接口编程,我们一般写函数参数的时候总会选择接口的声明,然后根据接口的方法来进行操作.这里说说list的一个坑. 说起list的实现类,你一定能想 ...

  3. java append方法

    java append方法 StringBuffer buf = new StringBuffer("Hard "): String  aString  =  "Waxw ...

  4. 你知道为什么Java的main方法必须是public static void?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://suo.im/6v9d64 Main 方法是我 ...

  5. java字符串反转方法【全】

    搜集的java字符串反转方法,一般用于面试,项目中用的很少··· package com.wsheng.aggregator.algorithm.string;import java.util.Sta ...

  6. 程序员必备:Java 日期处理的十个坑

    前言 整理了Java日期处理的十个坑,希望对大家有帮助. 一.用Calendar设置时间的坑 反例: Calendar c = Calendar.getInstance(); c.set(Calend ...

  7. Java之toString()方法详解

    Java之toString()方法详解 Java中 toString()方法在Object类中和Intent类中都有定义,作用类似,但显示形式有点区别 一.Object类中toString()方法 t ...

  8. el-date-picker设置默认日期_程序员必备:Java 日期处理的十个坑

    前言 整理了Java日期处理的十个坑,希望对大家有帮助. 一.用Calendar设置时间的坑 反例: Calendar c = Calendar.getInstance(); c.set(Calend ...

  9. Java 调用 Python 方法学习笔记

    文章转载自: 作者:IT_xiao_bai                         来源:CSDN                         原文:https://blog.csdn.n ...

  10. JAVA刷题方法整理

    JAVA刷题方法整理 一.String->String[] 利用String.split()实现 注:在使用String.split 方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我 ...

最新文章

  1. 如何修改可运行Jar包,如何反编译Jar包
  2. python3 UDP TCP 调试回射命令行
  3. js javascript js控制分页打印,打印分页
  4. (转)Servlet
  5. linux console 下载 jdk
  6. 展讯平台实现维吾尔语的几种方法
  7. 5步绘制软件开发流程图
  8. .NET 配置系统未能初始化”异常
  9. 35万推特僵尸账号发现始末:这只是开始?
  10. openssl密码套件详解
  11. 坐标转换-大地坐标系与空间直角坐标系(附软件下载)
  12. 计算机普通用户禁止修改c盘,win10系统禁止Guest账户访问C盘的设置技巧
  13. Redhat之SSH
  14. 企业WiFi认证 保护企业的信息
  15. 使用python manage.py startapp myapp未报错,但是没有创建出myapp
  16. css 鼠标经过显示禁止符号
  17. OpenCV - imwrite保存透明PNG
  18. Win7 系统下配置WinCE 5.0 模拟器网络环境
  19. 国货美妆新宠“完美日记”爆发,给传统企业的数字化营销带来哪些启发?
  20. JavaScript走动的小人

热门文章

  1. linux五笔教程,RHEL6 64位操作系统安装极点五笔输法
  2. 【Beta】 第四次Daily Scrum Meeting
  3. java 两张图片合成
  4. 关于手机app合并m3u8文件失效,pc端合成方法
  5. 吊打全球的顶级毫米波数字阵列项目-MIDAS
  6. QQ群文件下载速度慢怎么办
  7. linux bond 网卡带宽,Linux网卡绑定实现带宽翻倍
  8. 淘客基地教你如何推广淘客小程序
  9. 戴尔计算机更新程序,戴尔电脑如何更新显卡驱动 其实很简单-电脑显卡怎么升级...
  10. jscript php,PHP, JScript和VBScript函数和类的语法