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的相關知識點,並進行了一定的練習。
本週對於物件導向進階知識還沒有進行學習,下週好好利用時間進行系統性的學習。