Java OOP ------- String的應用

     
    1.字符串的創建

字符串的創建主要有以下四種方式,在已知字符串內容時,第一種比較方便;第三種方式,先創建一個字符數組,再用String(串名, 開始下標,長度) 方法,將其一部分用於創建字符串。

//方式一:直接賦值
String str1 = "hello world";
System.out.println(str1);
//方法二:通過字符數組創建字符串
char[] data = {'y', 'o', 'u'};
String str2 = new String(data);
System.out.println(str2);
//方法三:通過字符數組的某一部分創建字符串
char[] charArray = {'l', 'o', 'v', 'e'};
//String(串名, 開始下標,長度)
String str3 = new String(charArray, 1, 2);
System.out.println(str3);    //ov
//方法四:通過字符創建另一個字符串
String str4 = new String(str1);//經常用於可變轉不可變字符串
System.out.println(str4);


    2.字符串的比較
      在比較字符串時要注意創建字符串的方式的不同,要用不同的方式比較。String str5 = "hahaha"; 是將str5存放於常量區,記錄的時該字符串的首地址,String str6 = new String("hahaha");則是將str6存放在棧區內,equals 方法用於比較字符串的,較爲合適,但注意使用str.equal() 時str不能爲空!

//方式一: ==  比較的是字符串的地址
String str5 = "hahaha";
String str6 = new String("hahaha");
System.out.println(str5 == str6);//false
String str7 = "hahaha";
System.out.println(str5 == str7);//true
        
//方式二: equals只比較值
System.out.println(str5.equals(str6));//true
System.out.println(str5.equals(str7));//true
        
//方式三:.equalsIgnoreCase 忽略大小寫
System.out.println(str5.equalsIgnoreCase(str6));//true

      
    3.判斷字符串的前綴和後綴

str.endWidth()和str.startsWidth 分別從前後兩端判斷前後綴,若是正確則返回true,反之,返回false

compareTo: 字符串比較,是逐個字符進行比較,若當前的字符不同則返回不同字符相差的ASCII值

compareToIgnoreCase 忽略大小寫   

//endWidth:判斷字符串以..結尾
String str8 = "變形金剛.avi";
System.out.println(str8.endsWith(".avi"));//true
//startWith: 判斷字符串以..開頭
String str9 = "前車之鑑,後車之師";
System.out.println(str9.startsWith("前車"));//true
        
//compareTo: 字符串比較,是足個字符進行比較,返回值是ASCII值
str8 = "ABC";
str9 = "abc";
System.out.println(str8.compareTo(str9));//-32
//忽略大小寫
System.out.println(str8.compareToIgnoreCase(str9));//0

    4.字符串的長度 length

String str10 = "you are a good man!";
System.out.println(str10.length());//19
str10 = "you should have a better girl!";
System.out.println(str10.length());//30

     5.判斷字符串是否爲空

若str爲空則禁止調用任何對象的方法   str12.isEmpty()在使用該方法時需要提前判斷str12 != null

String str11 = null;
String str12 = "";
//禁止null調用任何對象的方法
if(str11 != null && str11.length() != 0){
    System.out.println(str11 + "不是空字符串");
}else{
    System.out.println(str11 + "是空字符串");
}
        
//判斷是否爲空 如果爲空則爲true
System.out.println(str12.isEmpty());
//另一種方式 判斷空串
if(str12 != null && !str12.isEmpty()){
    System.out.println(str11 + "不是空字符串");
}else{
     System.out.println(str11 + "是空字符串");
}

    6.字符串轉換

大寫  .toUpperCase  小寫 .toLowerCase

String str13 = "Lucky Dog";
//大寫    .toUpperCase 原字符串不變
System.out.println(str13.toUpperCase());//LUCKY DOG
System.out.println(str13);
//小寫 .toLowerCase
System.out.println(str13.toLowerCase());//lucky dog
System.out.println(str13);
        
//字符串轉字符數組
char[] charArr = str13.toCharArray();//Lucky Dog
for(int i = 0; i < charArr.length; i++){
    System.out.println(charArr[i]);
}

  其他類型轉字符串,將int類型的轉換成字符串可以用+拼接,第二種方式是使用String.valueOf(數據)

int a = 5566;
//方式一:拼接字符串
String s1 = a + "";
System.out.println(s1);//"5566"
//方式二:String.valueOf(數據)
String s2 = String.valueOf(a);
//valueOf(此處基本數據類型皆可轉換)

 字符串轉其他類型,其他數據類型.valueOf(字符串) 即可轉換

     其他類型.parse其他類型(字符串)
      

  String s3  = "165411";
 //方式一:其他數據類型.valueOf(字符串) 即可轉換
int b = Integer.valueOf(s3);
double c = Double.valueOf(s3);
float d = Float.valueOf(s3);
//方式二:其他類型.parse其他類型(字符串)
long e = Long.parseLong(s3);
String s4 = "true";
boolean f = Boolean.parseBoolean(s4);

int float double 等屬於基本數據類型(參照c語言)

Integer Double Float Boolean 是Java中的包裝類型!
是爲了封裝一些方法而定義的類
    7.字符串拼接

String s5 = "good good study";
String s6 = "go go up";
//方式一: +
System.out.println(s5 + s6);//good good studygo go up
//方式二:concat
String  s7 = s5.concat(s6);
System.out.println(s7);//good good studygo go up

   8.字符串查找

indexOf() 正向查找,返回第一次查找的位置,找不到就輸出-1

lastIndexOf() 最後一次出現的位置

indexOf(s, 3)從第幾個位置開始查找

contains 是否包含 返回boolean

 String s8 = "別人家的孩子";
//方式一:indexOf() 正向查找,返回第一次查找的位置,找不到就輸出-1
 System.out.println(s8.indexOf("孩子"));//4
System.out.println(s8.lastIndexOf("家"));//  2     最後一次出現的位置
//從第幾個位置開始查找
System.out.println(s8.indexOf("孩子", 3));
//方式2:contains 是否包含
System.out.println(s8.contains("的"));//boolean  true

   9.獲取字符串的一部分

charAt() 通過下標 獲取某個字符 substring()  可以爲一個區間

String str = "高是什麼感覺?就是看所有人都是低着頭";
//方式一:charAt() 通過下標 獲取某個字符
System.out.println(str.charAt(2));//什
//方式二:substring()  可以爲一個區間
System.out.println(str.substring(8));//是看所有人都是低着頭
System.out.println(str.substring(8,13));//是看所有人

    10.替換字符串

replace() 就是把字符串中所有匹配到的字符串進行替換

replaceFirst() 只替換第一個

String s9 = "瘦,走路是什麼感覺?應該是走路都要扶着電線杆";
//方式一:replace() 就是把字符串中所有匹配到的字符串進行替換
System.out.println(s9.replace("走路", "跑步"));//瘦,跑步是什麼感覺?應該是跑步都要扶着電線杆
//方式二:replaceFirst() 只替換第一個
System.out.println(s9.replaceFirst("走路", "爬着"));//瘦,爬着是什麼感覺?應該是走路都要扶着電線杆

    11.分割字符串 就是按照某一個字符  將字符串切成數組

split("|") 單斜槓 是或者   所以才需要添加\\轉義

String s10 = "www|cctv|com";
String[] strArray = s10.split("\\|");//反斜槓\\    
for(int i = 0; i < strArray.length; i++){
    System.out.println(strArray[i]);
}
/*www
cctv
com
*/
 s10 = "www.cctv|com";
//  split("|") 單斜槓 是或者   所以才需要添加\\轉義
strArray = s10.split("\\. | \\|");
for(int i = 0; i < strArray.length; i++){
     System.out.println(strArray[i]);
}//同上

     12. 去除首尾空格 trim
 

String s11 = "  asdfasdf    ";
System.out.println(s11);
System.out.println(s11.trim());
//  asdfasdf    
//asdfasdf

    13. 可變字符串

/*
     * 面試題:String和StringBuffer的區別?
     * String:不可變字符串,對其做的任何替換,查找,修改等操作都是
     * 拷貝了原字符串,對拷貝的副本進行操作並返回!
     * StringBuffer:可變字符串,對其做的增刪改查操作都是直接修改
     * 了原字符串!當然也可以接受返回值,是修改後的結果!
     */

拼接strBuffer.append  

按照下標插入字符串strBuffer.insert(0, str);
替換字符串strBuffer.replace(9, 10, str);

刪除字符串strBuffer.delete(9, 12);
字符串反轉strBuffer.reverse();

可變字符串變爲不可變字符

1.String s1 = new String(strBuffer);
2.String s2 = strBuffer.toString();

public class StringBufferTest {

	public static void main(String[] args) {
  //1.創建可變字符串
   StringBuffer strBuffer = new StringBuffer();
   System.out.println(strBuffer);
   //2.拼接字符串
   strBuffer.append("少年啊!");
   System.out.println(strBuffer);
   strBuffer.append("你好帥啊!");
   //3.按照下標插入字符串
   strBuffer.insert(0, "啊哈!");
   System.out.println(strBuffer);
	//4.替換字符串
   strBuffer.replace(9, 10, "傻乎乎");
	System.out.println(strBuffer);
	//5.刪除字符串
	strBuffer.delete(9, 12);
	System.out.println(strBuffer);
	//6.字符串反轉
	strBuffer.reverse();
	System.out.println(strBuffer);
	
	String s3 = "hahaha";
	String s4 = s3.toUpperCase();
	System.out.println(s3);
	System.out.println(s4);
	
	//所以! 可變字符串---->不可變字符換
	//方式1
	String s1 = new String(strBuffer);
	System.out.println(s1);
    //方式2
	String s2 = strBuffer.toString();
	System.out.println(s2);
		
	}
}

注意:     

以下是兩個練習,對以上知識學以致用

 //練習: 1.提取'財'.'色'兩個字符
        String sss = "財色兼收";
        System.out.println(sss.charAt(0));
        System.out.println(sss.substring(1,2));
        
        //2.首字母換成大寫
        sss = "today is a so tried day!";
        String[] ss = sss.split(" ");
        sss = "";
        for(int i = 0; i < ss.length; i++){
            String c1 = String.valueOf(ss[i].charAt(0));
            String c2 = c1.toUpperCase();
            sss = sss + ss[i].replace(c1, c2) + " ";
        }
        System.out.println(sss.trim());


        

發佈了66 篇原創文章 · 獲贊 3 · 訪問量 7024
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章