2024暑假第六周总结
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的相关知识点,并进行了一定的练习。
本周对于面向对象进阶知识还没有进行学习,下周好好利用时间进行系统性的学习。