Java學習相關筆記第四篇

字符串的特點:

  1. 字符串的內容永不可變。
  2. 正式因爲字符串的內容永不可變,所以字符串是可以共享使用的。
  3. 字符串效果上相當於是char[]字符數組,但是底層原理是byte[]字節數組。

創建字符串的常見3+1種方式。

三種構造方法:

  1. public String():創建一個空白字符串,不含有任何內容。
  2. public String(char[] array):根據字符數組的內容,來創建對應的字符串。
  3. public String(byte[] array):根據字節數組的內容,來創建對應的字符串。

一種直接創建:

     String str = “”;

注意:直接寫上雙引號,就是字符串對象。

package day04;
public class Demo01 {
    public static void main(String[] args) {
        // 使用空參數構造
        String str1 = new String(); // 小括號留空,此時字符串什麼內容都沒有
        System.out.println("第一個字符串是: " + str1);
        // 根據字符數組創建字符串
        char[] array = { 'A','B','C' };
        String str2 = new String(array);
        System.out.println("第二個字符串是:" + str2);
        // 根據字節數組來創建字符串
        byte[] byteArray = { 97,98,99 };
        String str3 = new String(byteArray);
        System.out.println("第三個字符串是: " + str3);
        // 直接創建
        String str4 = "Hello";
        System.out.println("第四個字符串是: " + str4);
    }
}

字符串常量池:程序當中直接寫上的雙引號字符串就在字符串常量池當中。

對於基本類型來說,==是進行數值的比較。

對於引用類型來說,==是進行地址值的比較。

如果確實需要字符串內容的比較,可以使用兩種方法:

  1. public boolean equals(Object obj):參數可以是任何對象,只有參數是一個字符串並且內容相同纔會給出True,否則返回False。
  2. public boolean equalsIgnoreCase(String str):忽略大小寫,進行內容的比較。 
package day04;
/*
equals 方法具有對稱性,就是a.equals(b)與b.equals(a)的效果相同
如果比較雙方一個常量一個變量,推薦把常量字符串寫在前面。
 */
public class StringEqual {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "Hello";
        char[] charArray = { 'h','e','l','l','o' };
        String str3 = new String(charArray);
        System.out.println(str1.equals(str2)); // True
        System.out.println(str2.equals(str3)); // false
        System.out.println(str1.equalsIgnoreCase(str3)); // true
    }
}

String當中獲取相關的常用方法有:

  1. public int length():獲取字符串當中含有的字符串個數,拿到字符串長度。
  2. public String concat(String str):將當前字符串和參數字符串拼接成爲返回值新的字符串。
  3. public char chatAt(int index):獲取指定索引位置的單個字符。(索引從0開始)。
  4. public int indexOf(String str):查找參數字符串在本字符串當中首次出現的索引位置,如果沒有返回-1。
package day05;
public class Demo2StringGet {
    public static void main(String[] args) {
        // 獲取字符串的長度
        int length = "dhaiosdhakshdalh".length();
        System.out.println("字符串的長度: " + length);
        // 拼接字符串
        String str1 = "Hello";
        String str2 = "World";
        String str3 = str1.concat(str2);
        System.out.println("拼接字符串: " + str3);
        // 獲取指定索引位置的字符
        char ch = "Hello".charAt(1);
        System.out.println("獲取的指定索引位置的字符是: " + ch);
        // 查找參數字符串在本來字符串當中出現的第一次索引位置
        String original = "Hello World";
        int lo = original.indexOf("lo");
        System.out.println("參數字符串出現的位置: " + lo);
    }
}

 字符串的截取方法:

  1. public String substring(int index):截取從參數位置一直到字符串末尾,返回新字符串。
  2. public String substring(begin end):截取從begin開始到end結束的中間的字符串。
  3. 備註:[begin,end)。包含左邊,不包含右邊。
package day05;
public class DemoSubString {
    public static void main(String[] args) {
        String str1 = "HelloWorld";
        String str2 = str1.substring(5);
        System.out.println("截取的字符串是: " + str2);
        String str3 = str1.substring(4,6);
        System.out.println("截取的字符串是: " + str3);
    }
}

String當中與轉換相關的常用方法有:

  1. public char[] toCharArray():將當前字符串拆分成爲字符數組作爲返回值。
  2. public byte[] getBytes():獲取當前字符串底層的字節數組。
  3. public String replace(CharSequence oldString,charSequence newString):將所有出現的舊的字符串替換成爲新的字符串,返回替換之後的新字符串。其中CharSequence可以接受字符串類型。
package day05;
public class DemoStringConvert {
    public static void main(String[] args) {
        char[] chars = "Hello".toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }
        byte[] bytes = "ABC".getBytes();
        System.out.println(bytes[1]);
        String str1 = "How do you do!";
        String o = str1.replace("o", "*");
        System.out.println("替換後的字符串是: " + o);
    }
}

分割字符串的方法:

  1. public String[] split(String regex):按照參數的規則,將字符串切分成爲若干部分。
  2. 注意事項:split方法的參數其實是一個正則表達式。
package day05;

public class DemoStringSplit {
    public static void main(String[] args) {
        String str1 = "aaa,bbb,ccc";
        String[] array1 = str1.split(",");
        for (int i = 0; i < array1.length; i++) {
            System.out.println(array1[i]);
        }
    }
}

練習:

1.定義一個方法,把數組{1,2,3}按照指定的格式拼接成爲一個字符串。格式按照如下:[world1#world2#world3#]。

package day05;

public class DemoStringPractice {
    public static void main(String[] args) {
        int[] array = { 1,2,3,4 };
        System.out.println(fromArray(array) );
    }
    public static String fromArray(int[] array) {
        String str = "[";
        for (int i = 0; i < array.length; i++) {
            if (i == array.length - 1) {
                str += "world" + array[i] + "]";
            }
            else {
                str += "world" + array[i] + "#";
            }
        }
        return str;
    }
}

2.鍵盤輸入一個字符串,並且統計其中各種字符串出現的次數。

package day05;

import java.util.Scanner;

public class DemoStringCount {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入一個字符串: ");
        String inpout = sc.next(); // 獲取字符串
        int countUpper = 0; //大寫字母
        int countLower = 0; // 小寫字母
        int countNumber = 0; // 數字
        int countOther = 0; // 其他
        char[] chars = inpout.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] >= 'A' && chars[i] <= 'Z') {
                countUpper++;
            }
            else if (chars[i] >= 'a' && chars[i] <= 'z') {
                countLower++;
            }
            else  if (chars[i] >= '0' && chars[i] <= '9') {
                countNumber++;
            }
            else {
                countOther++;
            }
        }
        System.out.println("大寫字母是:" + countUpper + "小寫字母是:" + countLower + "數字是:" + countNumber + "其他是:" + countOther);
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章