String类和StringBuffer类的详谈


JAVA中定义了String和StringBuffer两个类来封装字符串,他们都位于java.lang包中,所以不需要导包就可以直接使用。



String类


String类的构造方法

方法声明

        功能描述

String()

创建一个内容为空的字符串

String(String value)

根据指定的字符内容创建对象

String(char[] value)

根据指定的字符数组创建对象

 

public class Practice {
    public static void main(String[]args){
        String str1 = new String();
        String str2 = new String("abcd");
        char []charArray = new char[]{'A','B','C'};
        String str3 = new String(charArray);
        System.out.println("a"+str1+"b");
        System.out.println(str2);
        System.out.println(str3);
    }
}

 

String类的常见操作

                           方法声明

                                           功能描述

int indexOf(int ch)

返回指定字符在此字符串中第一次出现处的索引

int lastIndexOf(int ch)

返回指定字符在此字符串中最后一次出现处的索引

int indexOf(String str)

返回指定子字符串在此字符串中第一次出现处的索引

int lastIndexOf(Sring str)

返回指定子字符串在此字符串中最后一次出现处的索引

char charAt(int index)

返回字符串中index位置上的字符,其中,index的取值范围是(0~字符长度-1)

boolean endsWith(String suffix)

判断此字符串是否以指定的字符串结尾

int length()

返回此字符串的长度

boolean equals(Object anObject)

将此字符串与指定的字符串比较

boolean isEmpty()

当且仅当字符串长度为0时返回ture

boolean startsWith(String prefix)

判断此字符串是否以指定的字符串开始

boolean contains(CharSequence cs)

判断此字符串是否包含指定的字符序列

String toLowerCase()

使用默认语言环境的规则将String中的所有字符都转换为小写

String toUpperCase()

使用默认语言环境的规则将String中的所有字符都转换为小写

static String valueOf(int i)

返回int参数的字符串表示形式

char [] toCharArry()

将此字符串转换为一个字符数组

String replace(CharSequence

oldstr,CharSequence newstr)

返回一个新的字符串,它是通过用newstr替换此字符串中出现的所有oldstr得到的

String [] split(String regex)

根据参数regex将原来的字符串分割为若干个子字符串

String substring(int beginIndex)

返回一个新字符串,它包含从指定的beginIndex处开始直到此字符串末尾的所有字符

String substring(int beginIndex,int endIndex)

返回一个新字符串,它包含从指定的beginIndex处开始直到索引endIndex-1处的所有字符

String trim()

返回一个新字符串,它去除了原字符串首位的空格

 

字符串的基本操作

public class Temp {
        public static void main(String[]args){
            String s = "ababcdedcba";
            System.out.println("字符串的长度为:"+s.length());
            System.out.println("字符串中的第一个字符:"+s.charAt(0));
            System.out.println("字符c第一次出现的位置:"+s.indexOf('c'));
            System.out.println("字符c最后一次出现的位置:"+s.lastIndexOf('c'));
            System.out.println("子字符串第一次出现的位置:"+s.indexOf("ab"));
            System.out.println("子字符串最后一次出现的位置:"+s.lastIndexOf("ab"));
        }


}


字符串转换操作

public class Temp {
        public static void main(String[]args){
            String str = "abcd";
            System.out.print("将字符串转化为字符数组后的结果:");
            char[]charArray = str.toCharArray();//字符串转换为字符数组
            for(int i = 0;i < charArray.length;i++){
                if (i!=charArray.length-1){
                    System.out.print(charArray[i]+",");
                }
                else {
                    System.out.println(charArray[i]);
                }
            }
            System.out.println("将int值转换为String类型之后的结果:"+String.valueOf(12));
            System.out.println("将字符串转换成大写之后的结果:"+str.toUpperCase());
        }


}


字符串的替换和去除空格操作

public class Temp {
        public static void main(String[]args) {
            String s = "itcast";
            System.out.println("将it替换成cn.it的结果:"+s.replace("it","cn.it"));
            String s1 = "    i t c a s t      ";
            System.out.println("去除字符串两端空格后的结果:"+  s1.trim());
            System.out.println("去除字符串中所有空格后的结果:"+s1.replace(" ",""));
        }

}

注意:trim()方法只能去除两端的空格


字符串的判断操作

public class Temp {
        public static void main(String[]args) {
          String s1 = "String";
          String s2 = "Str";
          System.out.println("判断是否以字符串Str开头:"+s1.startsWith("Str"));
          System.out.println("判断是否以字符串ng结尾:"+s1.endsWith("ng"));
          System.out.println("判断是否包含字符串tri:"+s1.contains("tri"));
          System.out.println("判断字符串是否为空:"+s1.isEmpty());
          System.out.println("判断两个字符串是否相等:"+s1.equals(s2));

        }

}


注意:在程序中可以通过“==”和equals()两种方式对字符串进行比较,但这两种方式有明显的区别。equals()方法用于比较两个字符串中的字符是否相等,==方法用于比较两个字符串对象的地址是否相同。

public class Temp {
        public static void main(String[]args) {
          String s1 = new String("abc");
          String s2 = new String("abc");
          System.out.println(s1==s2);//结果为false,因为s1和s2是两个对象
          System.out.println(s1.equals(s2));
        }
}


字符串的截取和分割

public class Temp {
        public static void main(String[]args) {
            String str = "羽毛球-篮球-乒乓球";
            System.out.println("从第五个字符截取到末尾的结果:"+str.substring(4));
            System.out.println("从第五个字符截取到第六个字符的结果:"+str.substring(4,6));
            System.out.println("分割后的字符串数组中的元素依次为:");
            String[]strArray = str.split("-");
            for(int i = 0;i < strArray.length;i++){
                if(i!=strArray.length-1){
                    System.out.print(strArray[i]+",");
                }
                else {
                    System.out.println(strArray[i]);
                }
            }

        }
}


substring()方法传入了两个参数4和6,因为字符串在截取时,只包括开始索引,不包括结束索引,所以会截取第5个和第6个字符。

 

StringBuffer类


StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。

 

StringBuffer类的一些方法

方法声明

         功能描述

StringBuffer append(char c)

添加参数到StringBuffer对象中

StringBuffer insert(int offset,String str)

将字符串中的offset为位置插入字符串str

StringBuffer deleteCharAt(int index)

移除此序列指定位置的字符

StringBuffer delete(int start,int end)

删除StringBuffer对象中指定范围的字符或字符串序列

StringBuffer replace(int start,

int end,String s)

在StringBuffer对象中替换指定的字符或字符串序列

void setCharAt(int index,char ch)

修改指定位置index处的字符序列

String toString()

返回StringBuffer缓冲区中的字符串

StringBuffer reverse()

将此字符序列用其反转形式取代

 

 

 

public class Temp {
        public static void main(String[]args) {
          System.out.println("1、添加");
          add();
          System.out.println("2、删除");
          remove();
          System.out.println("3、修改");
          alter();
        }
        public static void add(){
            StringBuffer s = new StringBuffer();
            s.append("abcdefg");
            System.out.println("append添加结果:"+ s);
            s.insert(2,"123");
            System.out.println("insert添加结果:"+ s);
        }
        public static void remove(){
            StringBuffer s = new StringBuffer("abcdefg");
            s.delete(1,5);
            System.out.println("删除指定位置结果:"+s);
            s.deleteCharAt(2);
            System.out.println("删除指定位置结果:"+s);
            s.delete(0,s.length());
            System.out.println("清空缓冲区结果:"+s);
        }
        public static void alter(){
            StringBuffer s = new StringBuffer("abcdef");
            s.setCharAt(1,'p');
            System.out.println("删除指定位置字符结果:"+s);
            s.replace(1,3,"qq");
            System.out.println("替换指定位置字符(串)结果:"+s);
            System.out.println("将字符串翻转结果:"+s.reverse());
        }
}


注意:append()方法始终将这些字符添加到缓冲区的末尾,而insert()方法则可以在指定位置添加字符。

 

String类和StringBuffer类的区别:

1、 String类表示的字符串时常量,一旦创建后,内容和长度都是无法改变的。而String Buffer表示字符容器,其内容和长度可以随时修改。

2、 String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法

3、 String类的对象可以用操作符“+”进行连接,而StringBuffer类对象之间不能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值