A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潘天功 中级黑马   /  2012-11-26 14:10  /  1839 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

老师上课时已经详细地讲解了String类的各种概念,其中有一条特性是String的内容一旦声明则不可改变,如果改变,则改变的肯定是String的引用地址,那么如果现在的情况是一个字符串要被经常改变,此时就必须使用StringBuffer类。从老师的讲课中大家已经清楚地知道,在String类中可以通过“+”进行字符串的连接,但在StringBuffer中却只能使用append()方法进行字符串的连接。下面我就个人理解给大家展示一下StringBuffer类中的一些方法。

1、字符串的连接操作

在程序中使用append()方法可以进行字符串的连接,而且此方法返回了一个StringBuffer类的实例,这样就可以采用代码链的形式一直调用append()方法,代码如下所示:

通过append()方法连接各种类型的数据

public class StringBufferDemo1{

            public static void main(String[] args){

                          StringBuffer  buf  =  new  StringBuffer();                   // 声明StringBuffer对象

                           buf.append("Hello");                                                // 向StringBuffer中添加内容

                           buf.append("World").append("!!!");                         // 可以连续调用append()方法

                           buf.append("\n");                                                     // 添加一个转义字符表示换行

                           buf.append("数字=").append(1).append("\n");         // 可以添加数字

                           buf.append("字符=").append('c').append("\n");        // 可以添加字符

                          System.out.println(buf);                                             //内容输出

        }

}

在这里我就不说运行结果了,有兴趣可以自己运行一下,看看结果是什么。除了上面外StringBuffer的内容是可以修改的、在这就不详说了。

2、在任意位置处为StringBuffer添加内容

可以直接使用insert()方法在指定的位置为StringBuffer添加内容,代码如下:

public class StringBufferDemo2{

               public static void main(String[] args){

                                  StringBuffer buf = new StringBuffer();               // 声明StringBuffer对象

                                  buf.append("World!!");                                      // 向StringBuffer中添加内容

                                  buf.insert( 0 , "Hello");                                       // 在所有内容之前添加                           

                                  System.out.println(buf);                                     //将修改后的内容输出

                                  buf.insert(buf.length() , “潘天功");                      // 在最后添加

                                  System.out.println(buf);                                      //将内容输出

           }

}

3、字符串反转操作

在StringBuffer中专门提供了字符串反转的操作方法,所谓的字符串反转就是指将一个是“Hello”的字符串转为“olleH”.代码如下:

public class StringBufferDemo3{

            public static void main(String[] args){

                            StringBuffer buf = new StringBuffer();                              // 声明StringBuffer对象

                            buf.append("World!!");                                                    // 向StringBuffer中添加内容

                            buf.insert( 0 , "Hello");                                                     // 在所有内容之前添加

                            String  str  =   buf.reverse().toString();                            // 将内容反转后变为String类型

                            System.out.println(str);                                                    // 将内容输出

         }

}

以上的程序通过append()和insert()方法向Stringbuffer加入数据后,使用reverse()方法将所有的内容以逆序的方式输出。在字符串的操作中,反转是一种较为常见的操作。

4、替换指定范围的内容

在Stringbuffer类中也存在replace()方法,使用此方法可以对指定的内容进行替换,代码体现如下:

public class StringBufferDemo4{

             public static void main(String[] args){

                            StringBuffer buf = new StringBuffer();                          // 声明StringBuffer对象

                            buf.append("Hello").append("World!!");                       // 向StringBuffer中添加内容

                            buf.replace(6,11,"潘天功");                                           // 将World替换为潘天功

                            System.out.println(buf);                                                 //删除替换后的内容     

           }

}

注意:在String中如果要进行替换,则使用的是replaceAll()的方法,而在Stringbuffer中使用的是replace()方法。

5、字符串截取

通过substring()方法可以直接从Stringbuffer的指定范围中截取内容,具体代码如下:

public class StringBufferDemo5{

            public static void main(String[] args){

            StringBuffer buf = new StringBuffer();                     // 声明StringBuffer对象

            buf.append("Hello").append("World!!");                 // 向StringBuffer中添加内容

            buf.replace(6,11,"潘天功");                                    // 将World替换为潘天功

            String  str  =  buf.substring(6 , 11);                        // 指定截取范围,并把内容转化为String类型

            System.out.println(str);                                           //将截取后的结果输出   

         }

}

6、删除指定范围的字符串

因为StringBuffer本身的内容是可更改的、所以也可以通过delete()方法删除指定范围的内容

public class StringBufferDemo6{

          public static void main(String[] args){

                            StringBuffer buf = new StringBuffer();                             // 声明StringBuffer对象

                             buf.append("Hello").append("World!!");                          // 向StringBuffer中添加内容

                             buf.replace(6,11,"潘天功");                                             // 将World替换为潘天功

                             String str = buf.delete(6 , 11).toString();                         // 删除指定范围的字符串

                             System.out.println(str);                                                    //将删除之后的结果输出

        }

}

7、查找指定的内容是否存在

通过indexOf()方法可以查找指定内容,如果查找到了,则返回内容的位置,如果没有查找到则返回-1

public class StringBufferDemo7{

           public static void main(String[] args){

                         StringBuffer  buf  =   new  StringBuffer();            // 声明StringBuffer对象

                         buf.append("Hello").append("World!!");              // 向StringBuffer中添加内容

                         if(buf.indexOf("Hello").append = = -1){

                                        System.out.println("没有查找到指定的内容");

                    }else{

                                         System.out.println("可以查找到指定的内容");

                  }

        }

}     



总结:当时老师讲课时就说这个类很重要、由于当时课程比较紧、所以没有很好地理解这个类。现在重新整理下,感觉轻松多了。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

1 个回复

正序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马