前言
给3个建议:
1.没有在循环体中修改字符串的情况,不要轻易用StringBuilder,如果理解不深,容易适得其反;
2.在代码中写sql有时候很长,直接用“+”号拼接;
3.代码中sql的参数用问号代替,用预编译的形式,产生的垃圾对象是最少的。
如果要问为什么,请看下面;
开篇三问
1问下面代码产生了再会产生几个对象
private static String test1() {
String str = "hello " + "word" + "!!";
return str;
}
答:在不考虑前后代码关系的情况下,这里只会产生1个对象!具体分析很简单,通过class文件反编译就能看到结果“”
private static String test1() {
String str = "hello word!!";
return str;
}
反编译之后,那些“+”号已经被java编译器处理了,这段代码运行过程大概是这样的:1.产生一个匿名字符串对象"hello word!!"直接入池;2.str指向常量池"hello word!!"地址。
2问不考虑前后影响,下面代码会产生几个对象,str指向的是不是常量池;
private static String test2() {
Strin