Java String StringBuffer

一、String類java

(1)概述:數組

String類表明字符串,字符串是常量,建立以後不能更改,一旦這個字符串肯定了,就會在內存中(堆中的常量池)生成這個字符串,字符串自己不能改變,但變量的地址是可以改變的,字符串的本質是一個字符的數組。oracle

(2)字符串的構建app

字符串中有大量的的重載構造方法,經過String類的構造方法能夠完成字符穿的構建,還能夠經過雙引號的方式進行建立對象ui

二者的是否相同?3d

package com.oracle.demo02;

public class Demo02 {

    public static void main(String[] args) {
        String str1="aaabbb";
        String str2=new String("aaabbb");
        System.out.println(str1==str2);
        System.out.println(str1.equals(str2));

    }

}

str1建立在內存中只有一個對象code

str2建立在內存中有兩個對象,一個 new的對象在堆中,一個字符串自己對象,在字符串常量池中對象

 (3)String構造方法blog

-------------------String()初始化一個新建立的String對象,表示一個空字符序列索引

例如:String s1 = new String(); //建立String對象,字符串中沒有內容

------------------- String(byte[  ] bytes)經過平臺使用的默認字符解碼指定byte數組,構建新的String

 例如:byte[] bys = new byte[]{97,98,99,100};

String s2 = new String(bys);

--------------------String(byte[  ] bytes  int offset  ,int  length )經過平臺使用的默認字符解碼指定byte子數組,構建新的String

例如:String s3 = new String(bys, 1, 3); //建立String對象,把一部分數組元素做爲字符串的內容,參數offset爲數組元素的起始索引位置,參數length爲要幾個元素

--------------------String(char[ ] values) 分配一個新的 String,使其表示字符數組參數中當前包含的字符序列。

例如:

char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’};

String s4 = new String(chs); //建立String對象,把數組元素做爲字符串的內容

--------------------String(char[] value, int offset, int count)分配一個新的 String,它包含取自字符數組參數一個子數組的字符。

例如:

String s5 = new String(chs, 0, 3);//建立String對象,把一部分數組元素做爲字符串的內容,參數offset爲數組元素的起始索引位置,參數count爲要幾個元素

(4)String類的方法查找

---------------length()返回字符串的長度

String aaa="abcdefgrthajnsdjkcv";
        int b=aaa.length();
        System.out.println(b);

 

----------------------獲取部分字符串substring(int beginindex)或者substring(int beginIndex ,  int endIndex)

---------------------判斷是否以xxx爲開頭starsWith(xxx)返回值爲true或false

----------------------判斷是否以xxx爲結尾endsWith(xxx)返回值爲true或false

----------------------判斷字符串是否包含另外一個字符contains( char   s)判斷是否包含指定字符串,包含返回true,不包含返回false

String str = "abcde";
int index = str.indexOf(「bcd」); //判斷是否包含指定字符串,包含則返回第一次出現該字符串的索引,不包含則返回-1
boolean b2 = str.contains("bcd");//判斷是否包含指定字符串,包含返回true,不包含返回false

 

----------------------- 將字符串轉成一個字符數組。或者字節數組。.getBytes()轉換成一個數組。toCharArray()轉換成一個字符數組

String str = "abcde";
char[] chs = str.toCharArray();
byte[] bytes = str.getBytes();

 

 

 

-------------------------- 判斷兩個字符串中的內容是否相同equals()

 --------------------------判斷兩個String是否相等,不考慮大小equalsIgnoreCase()

String str = "abcde";
String str2 = "abcde";
String str3 = "hello";
boolean b1 = str.equals(str2);
boolean b2 = str.e/quals(str3);

 

---------------------------------獲取該字符串的內容toString()

public class Demo02 {
    public static void main(String[] args) {
        String str = new String("hello");
        System.out.println( str.toString() );
        System.out.println(str);
    }
}

 

 還有:

l 判斷該字符串的內容是否爲空的字符串

l 獲取給定的字符,在該字符串中第一次出現的位置

l 獲取該字符串中指定位置上的字符

l 把該字符串轉換成 小寫字符串

l 把該字符串轉換成 大寫字符串

l 在該字符串中,將給定的舊字符,用新字符替換

l 在該字符串中, 將給定的舊字符串,用新字符串替換

l 去除字符串兩端空格,中間的不會去除,返回一個新字符串

public class Demo03 {
    public static void main(String[] args) {
        String str="hellojavanihaojava.txt";
        //求字符串長度
        System.out.println(str.length());
        //截取字符串
        System.out.println(str.substring(3));
        System.out.println(str.substring(3,5));
        //判斷前綴
        System.out.println(str.startsWith("b"));
        //判斷結尾
        System.out.println(str.endsWith(".txt"));
        //判斷一個字符串中是否包含另外一個字符串
        System.out.println(str.contains("java"));
        //返回一個字符串在另外一個字符串中第一次出現的索引值
        //若是不存在該字符串則返回-1
        System.out.println(str.indexOf("5"));
        String str1="nihaojava";
        //將字符串轉爲字節數組
        byte[] b1=str1.getBytes();
        for(int i=0;i<b1.length;i++){
            System.out.print(b1[i]+" ");
        }
        //將字符串轉爲字符數組
        char[] c1=str1.toCharArray();
        for(int j=0;j<c1.length;j++){
            System.out.print(c1[j]+" ");
        }
        //判斷兩個字符串是否內容相同(忽略大小寫)
        System.out.println(str1.equalsIgnoreCase("NiHaojava"));
    }
}

 

 

 String類方法使用練習

 題目一:獲取指定字符串中,大寫字母、小寫字母、數字的個數。

 

package demo01;

public class Demo03 {
        public static void main(String[] args) {
            String str="ADSFGbaersg1123125337";
            int bigCount = 0; //大寫字母的個數
            int smallCount = 0; //小寫字母的個數
            int numberCount = 0; //數字的個數
            for (int i=0; i < str.length(); i++) {
                 char ch = str.charAt(i); //獲取指定位置上的字符
                if (ch>='A' && ch<='Z') {
                    bigCount++;
        } else if (ch>='a' && ch<='z') {
        smallCount++;
        } else if (ch>='0' && ch<='9') {
                numberCount++;
        }
        }
        System.out.println("大寫字母個數:"+bigCount);
        System.out.println("小寫字母個數:"+smallCount);
        System.out.println("數字個數:"+numberCount);
        }
        }
            

 

 

 

 

l 題目二:將字符串中,第一個字母轉換成大寫,其餘字母轉換成小寫,並打印改變後的字符串。

 

package demo01;

public class Demo04 {
    public static void main(String[] args) {
        String str="aA";
        //獲取第一部分爲字符串
        String start = str.substring(0,1);
        //獲取第二部分爲字符串
        String end = str.substring(1);
        //把第一部分字符串轉換成大寫字母,把第二部分字符串轉換成小寫字母
        String big = start.toUpperCase();
        String small = end.toLowerCase();
        //把兩部分字符串鏈接在一塊兒,獲得一個完整的字符串
        System.out.println(big+small);
            }
}

l 題目三:查詢大字符串中,出現指定小字符串的次數。如「hellojava,nihaojava,javazhenbang」中查詢出現「java」的次數。

 

public static int getCount(String big, String small){
    int count = 0; //出現小串的次數
    int index = -1;//出現小串的位置
    /*
        while的循環條件三步驟:
        步驟一. big.indexOf(small) 獲取小串在大串中出現的位置
        步驟二. 把小串出現的位置,賦值給變量index
        步驟三. 判斷出現的位置是否爲-1, 若是位置等於-1,說明大串中已經查詢不到小串了;若是位置不等於-1,那麼,進行循環,完成次數累加與修改大串的操做
*/
    while ((index = big.indexOf(small)) != -1 ){
        count++;//出現次數+1
        //更改大串內容
        big = big.substring(index+1);
}
return count;
}

 練習2

用代碼演示String類中的如下方法的用法
(1)boolean isEmpty(): 判斷字符串是否是空串,若是是空的就返回true
(2)char charAt(int index): 返回索引上的字符
(3)String toLowerCase(): 字符串轉成小寫
(4)String toUpperCase(): 字符串轉成大寫
(5)String replace(char oldChar, char newChar): 將字符串中的老字符,替換爲新字符
(6)String repalce(String old, String newstr): 將字符串中的老字符串,替換爲新字符串
(7)String trim(): 去掉字符串兩端空格

    public static void main(String[] args) {
        //(1)boolean isEmpty(): 判斷字符串是否是空串,若是是空的就返回true
        String str1=new String();
        boolean a=str1.isEmpty();
        System.out.println(a);
        //(2)char charAt(int index): 返回索引上的字符
        String str2="abcde";
        char b=str2.charAt(2);
        System.out.println(b);
        //(3)String toLowerCase(): 字符串轉成小寫
        String str3="ABCDEFG";
        String c=str3.toLowerCase();
        System.out.println(c);
        //(4)String toUpperCase(): 字符串轉成大寫
        System.out.println(c.toUpperCase());
        //(5)String repalce(char oldChar, char newChar): 將字符串中的老字符,替換爲新字符
        String str4="abc";
        String d=c.replace("b","s");
        System.out.println(d);
        //(6)String repalce(String old, String newstr): 將字符串中的老字符串,替換爲新字符串
        String e=d.replace(d, "falg");
        System.out.println(e);
        //(7)String trim(): 去掉字符串兩端空格
        String str5="   ffff   ";
        System.out.println(str5);
        String f=str5.trim();
        System.out.println(f);    
    }//main

}/

 

 二、字符串緩衝區

字符串緩衝區支持可變的字符串,

StringBuffer又稱爲可變字符序列,它是一個相似於 String 的字符串緩衝區,經過某些方法調用能夠改變該序列的長度和內容。

 (1)StringBuffer類

 StringBuffer方法的使用:

 

-----------------append():將指定字符串添加到此字符序列

----------------delete(int start,int end)刪除從start到end的字符

-----------------insert(int offset ,String str)將str插入該字符串中

-----------------replace(int start ,int end .String str)使用str替換該字符串中從start到end的字符

-----------------reverse()將字符串使用反序取代

-----------------toString()返回此序列中數據的字符串表現形式

 

建立一個字符串緩衝區對象。用於存儲數據。
StringBuffer sb = new StringBuffer();
sb.append("haha"); //添加字符串
sb.insert(2, "it");//在指定位置插入
sb.delete(1, 4);//刪除
sb.replace(1, 4, "cast");//替換指定範圍內的內容
String str = sb.toString();

練習:int[] arr = {34,12,89,68};將一個int[]中元素轉成字符串  格式 [34,12,89,68]

public static String toString_2(int[] arr) {
        StringBuffer sb = new StringBuffer();        
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if(i!=arr.length-1){
                sb.append(arr[i]+",");
            }else{
                sb.append(arr[i]+"]");
            }
        }        
        return sb.toString();
    }

 

  StringBuilder類它也是一個可變的字符序列它比 StringBuffer 要快。

相關文章
相關標籤/搜索