2024暑假第六週總結

haoyinuo發表於2024-08-10

Java 字串

Java中的String類是處理字元資料的基礎類

建立字串

字面量建立:

String str1 = "Hello, World!";

這是最常用的方式,str1會指向常量池中的字串。

透過new關鍵字建立:

String str2 = new String("Hello, World!");

這會建立一個新的String物件,即使內容相同,也與常量池中的字串不同。

字串不可變性

不可變性說明:

String物件一旦建立,其內容不能被改變。任何對字串的修改操作都會返回一個新的字串物件,而不會改變原有字串。

String original = "Java";
String modified = original.concat(" Programming"); // 原字串未改變
System.out.println(original);  // 輸出: Java
System.out.println(modified);  // 輸出: Java Programming

常用方法

長度:

String str = "Hello";
int length = str.length();  // 5

獲取字元:

char ch = str.charAt(1);  // e

子字串:

String substr = str.substring(1, 4);  // ell

查詢位置:

int index = str.indexOf("l");  // 2
int lastIndex = str.lastIndexOf("l");  // 3

轉換大小寫:

String upper = str.toUpperCase();  // HELLO
String lower = str.toLowerCase();  // hello

去除空白:

String padded = "  Hello  ";
String trimmed = padded.trim();  // "Hello"

替換字元:

  String replaced = str.replace('l', 'L');  // HeLLo

分割字串:

String sentence = "Java,Python,C++";
String[] languages = sentence.split(",");  // ["Java", "Python", "C++"]

字串連線:

String first = "Hello";
String second = "World";
String combined = first + " " + second;  // Hello World

檢查字串:

boolean startsWith = str.startsWith("Hel");  // true
boolean endsWith = str.endsWith("lo");  // true
boolean contains = str.contains("ell");  // true

字串比較

內容比較:

String str1 = "Java";
String str2 = "Java";
boolean isEqual = str1.equals(str2);  // true

忽略大小寫比較:

String str1 = "java";
String str2 = "Java";
boolean isEqualIgnoreCase = str1.equalsIgnoreCase(str2);  // true

比較順序:

String str1 = "Apple";
String str2 = "Banana";
int comparison = str1.compareTo(str2);  // < 0, 因為 "Apple" 小於 "Banana"

轉換為其他資料型別

字串轉整數:

String numberStr = "123";
int number = Integer.parseInt(numberStr);  // 123

字串轉浮點數:

String floatStr = "123.45";
float floatValue = Float.parseFloat(floatStr);  // 123.45

其他資料型別轉字串:

int num = 100;
String numStr = String.valueOf(num);  // "100"

字串Builder和Buffer

StringBuilder:

用於在字串上執行可變操作,效率更高。
常用方法:
append()
insert()
delete()
reverse()
示例程式碼:

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
sb.reverse();

StringBuffer:

功能與StringBuilder類似,但執行緒安全。
示例程式碼:

StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
sb.reverse();

實用示例

示例 1:字串操作

public class StringExample {
    public static void main(String[] args) {
        String original = "   Java Programming   ";
        
        // 去除前後空白
        String trimmed = original.trim();
        System.out.println("Trimmed: '" + trimmed + "'");
        
        // 轉換為大寫
        String upperCase = trimmed.toUpperCase();
        System.out.println("Uppercase: '" + upperCase + "'");
        
        // 替換字元
        String replaced = upperCase.replace("JAVA", "C++");
        System.out.println("Replaced: '" + replaced + "'");
    }
}

示例 2:字串比較

public class StringComparison {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "Hello";
        String str3 = "hello";
        
        // 比較
        System.out.println(str1.equals(str2));
        System.out.println(str1.equalsIgnoreCase(str3));
        System.out.println(str1.compareTo(str3));
    }
}

ArrayList

ArrayList是Java中用於儲存動態陣列的類。

基本操作:

建立:

 ArrayList<String> list = new ArrayList<>();

新增元素:

list.add("Apple");
list.add("Banana");

訪問元素:

 String fruit = list.get(0); // "Apple"

刪除元素:

list.remove("Banana"); // 刪除元素"Banana"

更新元素:

list.set(0, "Orange"); // 將索引0的元素更新為"Orange"

效能特點:

動態陣列: ArrayList內部使用陣列來儲存元素,陣列大小會根據需要自動擴充套件。
訪問時間: 訪問元素的時間複雜度為O(1),因為透過索引直接訪問。
插入和刪除時間: 插入和刪除操作在中間位置的時間複雜度為O(n),因為可能需要移動元素。

常見用法:

遍歷:

for (String fruit : list) {
    System.out.println(fruit);
}

使用forEach:

list.forEach(System.out::println);

總結

本週學習了字串和ArryList的相關知識點,並進行了一定的練習。
本週對於物件導向進階知識還沒有進行學習,下週好好利用時間進行系統性的學習。