有个朋友说
Stringbuffer里用加号,和用append追加数据是一样的。
自己搜了下没有找到答案。StringBuffer sql = new Stringbuffer();
//这种情况sql.append("abc"+"123");
//和这种情况 sql.append("abc").append("123");个人认为在StringBuffer中使用+号貌似就等于在用string+string,也是很消耗内存的操作……求大牛简单解释下
Stringbuffer里用加号,和用append追加数据是一样的。
自己搜了下没有找到答案。StringBuffer sql = new Stringbuffer();
//这种情况sql.append("abc"+"123");
//和这种情况 sql.append("abc").append("123");个人认为在StringBuffer中使用+号貌似就等于在用string+string,也是很消耗内存的操作……求大牛简单解释下
解决方案 »
- SHH整合添加Hibernate时不能用
- 最简单的链接ORACLE,看看哪里错了
- 关于struts2多线程的几个疑点---参与有分,欢迎光临!
- hibernate qbc 时间段的查询
- 请教下在Struts 里封装好的validator.ValidatorForm的作用?怎么调用?
- 如何将List里的数据换位置?
- Struts中的web.xml在描述<taglib>的问题。
- 小弟想学J2EE,有些小问题问前辈
- 启动J2EE1.4的问题----急切希望得到大家帮助!!!!!!
- jsch在通过用户名密码创建session,之后在connect时提示220-##
- 请问这个access数据库怎么写插入数据的语句
- spring 注解 @Autowired 和 @Inject 两个功能是一样的吗
因为sql.append("abc"+"123");是先把括号里面的两个字符串通过+操作符拼接成一个字符串后再追加到sql后面的,这样在+操作符时会额外消耗内存!~
“+变量+” 这种形式,虽然sql语句很长,但是用+拼起来是要好些的
sql.append("abc"+"123");
就是StringBuffer的一次append方法调用,而方法的参数是先执行了一次String+String得来的。
这样写虽然稍微耗点内存,但是是允许的。因为这里连接的是sql语句,可读性的要求大于性能的要求。
比如一条sql语句单行 很长
String str ="1111………………";写成
String str= "111111"+
"111111"+
"111111"+
"111111"+
"111111"+
"111111";
这样,和上面的相比,虽然提高了可读性,但是内存的消耗也变了呢?
发现PL/SQL中就给了一个复制到java的小功能
就是将美化好的sql 用+号拼接起来 方便复制到java代码中
感觉一条很长的sql这样写到代码里消耗很大。
而且这样的sql很多很多,不敢下手啊
"111111"+
"111111"+
"111111"+
"111111"+
"111111";
与StringBuffer str = new StringBuffer("111111")
.append("111111")
.append("111111")
.append("111111")
.append("111111");
在可读性上没啥区别。
sql.append("abc"+"123");的原因是因为这样类型的语句:String sql = "select * from table"
+ "where"
+ " aa like \'%\'||" + ? + "||\'%\'";
测试StringBuffer就应该写成StringBuffer sql = new StringBuffer("select * from table")
.append(" where");
.append(" aa like \'%\'||" + ? + "||\'%\'");
.append(" where");
.append(" aa like \'%\'||" + "?" + "||\'%\'");以微量的性能换取了可读性,
而StringBuffer sql = new StringBuffer("select * from table")
.append(" where");
.append(" aa like \'%\'||")
.append(?)
.append("||\'%\'");则是牺牲了可读性换取微量的性能。
貌似现在的结果是JDK1.4以后
string的+和stringBuffer的append已经没有差别了?