private void tree(Connection conn, int id, int level) {
Statement stmt = null;
ResultSet rs = null;

StringBuffer strPre = new StringBuffer("");
for(int i=0; i<level; i++) {
strPre.append("    ");
}

try {
stmt = conn.createStatement();
String sql = "select * from article where pid = " + id;
rs = stmt.executeQuery(sql);
while(rs.next()) {
System.out.println(strPre + rs.getString("cont"));
if(rs.getInt("isleaf") != 0)
tree(conn, rs.getInt("id"), level + 1);
}

} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
rs = null;
}
if(stmt != null) {
stmt.close();
stmt = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
大家好,我在学习的过程里看到一段代码,StringBuffer strPre = new StringBuffer("");在这里是什么意思?起到什么作用啊?我是新手,请大家赐教

解决方案 »

  1.   

    没有其他的,String是一个不变模式,不适合处理根据条件灵活改变的sql语句,用StringBuffer实现而已。
      

  2.   

    是在显示返回结果的时候为了让显示更直观的作用。StringBuffer可以append。而String就不行。StringBuffer strPre = new StringBuffer(""); 
    for(int i=0; i <level; i++) { 
    strPre.append("    "); 
    } 这个就是每一个level都加上"   "的作用..
      

  3.   

    就是一个实例化,后面不是有System.out.println(strPre + rs.getString("cont")); 吗,出现字符串的拼接时,推荐用这个,而不是String,节省开销;
      

  4.   

    现在StringBuilder用的也挺多的,不过它不是线程安全的.而StringBuffer是线程安全的.这两个除此之外功能基本相同.
      

  5.   

    同意3楼的,问的是StringBuffer在这段代码中的作用嘛,就是创建一个StringBuffer对象,然后在后面添加字符串,为了显示的美观用的
    用String也行,level的数量真的大到会影响效率时,用StringBuffer或者StringBuilder,要不就String,不会太影响你的执行效率的。
      

  6.   

    就是实例化一个StringBuffer对象,没什么特别的,初始化值为""而已
      

  7.   

    String是不可变类,StringBuffer是可变类,
    String的对象创建后,内容无法改变。
    而StringBuffer中的append()方法,replaceAll()等方法可以
    改变字符缓冲区中的字符串内容。在这里的append()是往字符串后面追加内容。
      

  8.   

    利用StringBuffer对字符串作处理时是在内存开辟一块存储空间,在里面可以增加字符,如果满了的话,再增加存储空间。而String是一个常量,是不可改变的,new String()所指向的是一个新的实例,进行连接时,会创建一个新的String对象,如果进行连接很频繁的话用StringBuffer,用String的效率比较低.
      

  9.   


    StringBuffer是可变长度的字符串类型