九月的影子

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

第四天,String的常用方法

  首先,先说明一个重点,在大部分语言中,String 都是不可变的,改变的都是建一个新的字符串然后将修改结束的字符串存到新的字符串中。

  然后再提一个区别:String、StringBuffer、StringBuilder。三者都是在java.lang包中。三者的区别:

    (1)String和Stringbuffer、StringBuilder的区别在于 String是不可变的,而StringBuffer,StringBuilder是可变的

    (2)StringBuffer和StringBuilder都有append(添加),delete(删除),insert(插入)等方法。

      但是StringBuilder是线程不安全的,而StringBuffer是线程安全的。

1、长度:

  

   数组中有length属性,而String没有length属性,只有length()方法。所以要求数组长度可以直接

    (1) 数组名.length 正确 因为这是数组的基本属性。

    (2) 数组名.length()   错误 因为数组没有length()

    (3) 字符串.length 错误 因为字符串没有length属性

    (4) 字符串.length() 正确 只有length()方法

如:
        int b = str1.length();
        //int c = str1.length;    //出错 
    //因为String类型的的字符串没有length属性,
    //因为他不是数组,
    //只有通过length()方法来查看length
    System.out.println(b);
    //System.out.println(c);
    char[] c2 = new char[]{'a','b','c'};
    int c = c2.length;
    //int c = c2.length();出错的
    System.out.println(c);
    char[] c1 = new char[str1.length()];
        
    int[] i = new int[]{12,12,52};
    int a = i.length;
    //int b = i.length();    
        //出错了 因为数组没有length()方法
    //只有数组类型的length属性
    System.out.println(a);                    

2、常用方法

(1)codePointAt(int index)返回指定索引处的字符(Unicode代码点)

public class Test1 {
    public static void main(String[] args) {
        String str = "abc";
        int first = str.codePointAt(0);
        System.out.println("first="+first);
        
        //也可以用int型直接转化为他的code码
        int code = str.charAt(0);
        System.out.println("first="+code);
    }
}

(2)codePointBefore(int index) 返回指定索引之前的字符(Unicode代码点)。 从字面上解释就是找这一位前一位的code码

(3)concat(String str)将指定的字符串连接到该字符串的末尾。和”+”的用法一样。

public class Test1 {
    public static void main(String[] args) {
        String str = "ab";
        String str1 = "cd";
        String str2 = str.concat(str1);
        System.out.println("拼接两个字符串:"+str2);
        //两种方法类似
        String str3 = str+str1;
        System.out.println("拼接两个字符串:"+str3);
    }
}

(4)contains(CharSequence s)当且仅当此字符串包含指定的char值序列时才返回true。

public class Test1 {
    public static void main(String[] args) {
        String str = "asdfg";
        String str1 = "fg";
        boolean bh = str.contains(str1);
        System.out.println(bh);
    }
}

(5)static String copyValueOf(char[] data)相当于valueOf(char[]) 。也类似直接赋值。

public class Test1 {
    public static void main(String[] args) {
        char[] ch1 = {'a','b','c'};
        String str = new String(ch1);
        String str2 = String.copyValueOf(ch1);
        System.out.println("str="+str+"\tstr2="+str2);
    }
}

(6)boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结尾。  相对的还有一个startWith()以什么开头

public class Test1 {
    public static void main(String[] args) {
        String str = "asdfg";
        boolean ew = str.endsWith("fg");
        boolean sw = str.startsWith("as");
        System.out.println(ew+"  "+sw);
    }
}

(7)boolean equals(Object anObject)将此字符串与指定对象进行比较。  

boolean equalsIgnoreCase(String anotherString) 将此 String与其他 String比较,忽略大小写。

public class Test1 {
    public static void main(String[] args) {
        String str = "abc";
        String str1 = "abd";
        String str2 = "Abc";
        boolean b1 = str.equals(str1);
        boolean b2 = str.equals(str2);
        boolean b3 = str.equalsIgnoreCase(str2);
        System.out.println(b1+"  "+b2+" "+b3);
    }
}

(8)

int indexOf(int ch) 返回指定字符第一次出现的字符串内的索引。  

int indexOf(int ch, int fromIndex)返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。  

int indexOf(String str)返回指定子字符串第一次出现的字符串内的索引。  

int indexOf(String str, int fromIndex) 返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。

 

public class Test2 
{
    public static void main(String[] args) 
    {
        String str = "asdfghjklasdfghjkl";
        String str1 = "asd";
        int i1 = str.indexOf(str1,1);
        System.out.println(i1);
    }
}

(9)String replace(char oldChar, char newChar)返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 。  

  

public class Test1 {
    public static void main(String[] args) {
        String str = "asdfghjklasdfghjkl";
        String str1 = "asd";
        String str2 = "###";
        String str3 = str.replace(str1,str2);
        //将字符串str中的和字符串str1一样的那段换成str2
        System.out.println(str3);
        //###fghjkl###fghjkl
    }
}

(10)boolean isEmpty() 判断String是否为空

  

(11)String substring(int) 从参数下标开始,截取到字符串末尾。

   String substring(int,int) 两个int都表示下标,从哪截取到哪

(12)大写String toUpperCase()将字符串所有的小写字母都换成大写

小写String toLowerCase()将字符串所有的大写字母都换成小写

(13)String[] split(String) 分割字符串

(14)String trim(); 清除字符串左右两边的空格

public class Test2
{
    public static void main(String[] arsg){
        String str = "abcdefg";
        String str2 = str.substring(2,5);
        System.out.println("str2="+str2);

        
        String str3 = str.substring(2,str.length());
        System.out.println("str3="+str3);

        String str4 = str.substring(2);
        System.out.println("str4="+str4);

        //toUpperCase()
        //toLowerCase()
        str= "AbCdEFG";
        str2 = str.toUpperCase();
        str3 = str.toLowerCase();
        System.out.println("大写形式:"+str2);
        System.out.println("小写形式:"+str3);
//split
        str = "aaa\tbbb\tccc\tddd";
        String[] datas = str.split("\t");//String[] split(String)
        for(String data : datas){
            System.out.println(data);
        }

        //trim
        str = "\t  a bc ";
        int len = str.length();
        System.out.println("["+str+"]长度是?"+len);

        str2 = str.trim();
        int len2 = str2.length();
        System.out.println("["+str2+"]长度是?"+len2);

    }
}

 

posted on 2018-08-21 20:57  九月的影子  阅读(393)  评论(0)    收藏  举报