java append()_append()方法的坑
我们经常会用到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()方法的坑相关推荐
- 关于Java中repaint()方法的坑,循环调用repaint()方法并没有重新绘制
1.关于repaint(),paint(),和update(),自己查询,这里不逼逼 推荐一个网站,自行了解https://blog.csdn.net/wangdingqiaoit/article/d ...
- java list接口方法_java List集合接口的坑
原标题:java List集合接口的坑 java推荐面向接口编程,我们一般写函数参数的时候总会选择接口的声明,然后根据接口的方法来进行操作.这里说说list的一个坑. 说起list的实现类,你一定能想 ...
- java append方法
java append方法 StringBuffer buf = new StringBuffer("Hard "): String aString = "Waxw ...
- 你知道为什么Java的main方法必须是public static void?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://suo.im/6v9d64 Main 方法是我 ...
- java字符串反转方法【全】
搜集的java字符串反转方法,一般用于面试,项目中用的很少··· package com.wsheng.aggregator.algorithm.string;import java.util.Sta ...
- 程序员必备:Java 日期处理的十个坑
前言 整理了Java日期处理的十个坑,希望对大家有帮助. 一.用Calendar设置时间的坑 反例: Calendar c = Calendar.getInstance(); c.set(Calend ...
- Java之toString()方法详解
Java之toString()方法详解 Java中 toString()方法在Object类中和Intent类中都有定义,作用类似,但显示形式有点区别 一.Object类中toString()方法 t ...
- el-date-picker设置默认日期_程序员必备:Java 日期处理的十个坑
前言 整理了Java日期处理的十个坑,希望对大家有帮助. 一.用Calendar设置时间的坑 反例: Calendar c = Calendar.getInstance(); c.set(Calend ...
- Java 调用 Python 方法学习笔记
文章转载自: 作者:IT_xiao_bai 来源:CSDN 原文:https://blog.csdn.n ...
- JAVA刷题方法整理
JAVA刷题方法整理 一.String->String[] 利用String.split()实现 注:在使用String.split 方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我 ...
最新文章
- 如何修改可运行Jar包,如何反编译Jar包
- python3 UDP TCP 调试回射命令行
- js javascript js控制分页打印,打印分页
- (转)Servlet
- linux console 下载 jdk
- 展讯平台实现维吾尔语的几种方法
- 5步绘制软件开发流程图
- .NET 配置系统未能初始化”异常
- 35万推特僵尸账号发现始末:这只是开始?
- openssl密码套件详解
- 坐标转换-大地坐标系与空间直角坐标系(附软件下载)
- 计算机普通用户禁止修改c盘,win10系统禁止Guest账户访问C盘的设置技巧
- Redhat之SSH
- 企业WiFi认证 保护企业的信息
- 使用python manage.py startapp myapp未报错,但是没有创建出myapp
- css 鼠标经过显示禁止符号
- OpenCV - imwrite保存透明PNG
- Win7 系统下配置WinCE 5.0 模拟器网络环境
- 国货美妆新宠“完美日记”爆发,给传统企业的数字化营销带来哪些启发?
- JavaScript走动的小人
热门文章
- linux五笔教程,RHEL6 64位操作系统安装极点五笔输法
- 【Beta】 第四次Daily Scrum Meeting
- java 两张图片合成
- 关于手机app合并m3u8文件失效,pc端合成方法
- 吊打全球的顶级毫米波数字阵列项目-MIDAS
- QQ群文件下载速度慢怎么办
- linux bond 网卡带宽,Linux网卡绑定实现带宽翻倍
- 淘客基地教你如何推广淘客小程序
- 戴尔计算机更新程序,戴尔电脑如何更新显卡驱动 其实很简单-电脑显卡怎么升级...
- jscript php,PHP, JScript和VBScript函数和类的语法