API (Application Programming Interface)
java中指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。
一、构造方法
在Java中,String
类的构造方法众多,但其中一些更为常用且基础。以下是几个重点构造方法及其举例:
1. String()
作用:创建一个空字符串。
举例:
String s = new String();
System.out.println(s); // 输出空字符串,即什么都不输出
2. String(char[] value)
作用:根据字符数组的内容创建一个新的字符串。
举例:
char[] chs = {'H', 'e', 'l', 'l', 'o'}; String s = new String(chs); System.out.println(s); // 输出: Hello
3. String(byte[] bytes)
作用:通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
举例:
byte[] bytes = {72, 101, 108, 108, 111}; // ASCII码对应的Hello String s = new String(bytes); System.out.println(s); // 输出: Hello
4. String(byte[] bytes, int offset, int length)
作用:通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。offset
是子数组起始处的索引,length
是子数组的长度。
举例:
byte[] bytes = {71, 72, 101, 108, 108, 111, 33}; // ASCII码对应的GHello! String s = new String(bytes, 1, 5); // 从索引1开始,长度为5 System.out.println(s); // 输出: Hello
5. String(String original)
作用:创建一个新字符串,它是参数字符串的副本。
举例:
String original = "World"; String s = new String(original); System.out.println(s); // 输出: World
这些构造方法是String
类中最常用和基础的。它们允许从不同类型的源(如字符数组、字节数组、其他字符串等)创建字符串对象,提供了极大的灵活性。
二、成员方法
在Java中,String
类是一个非常核心的类,用于处理字符串数据。它提供了大量的成员方法来支持字符串的各种操作。以下是一些常用的String
类成员方法及其作用:
1. 获取字符串信息
- length()
- 作用:返回字符串的长度(即字符数)。
- 示例:
String str = "Hello"; int len = str.length(); // len 为 5
- charAt(int index)
- 作用:返回字符串中指定索引位置的字符。
- 示例:
char ch = str.charAt(1); // ch 为 'e'
- substring(int beginIndex)
- 作用:返回从指定索引位置开始到字符串末尾的子字符串。
- 示例:
String sub = str.substring(1); // sub 为 "ello"
- substring(int beginIndex, int endIndex)
- 作用:返回从指定开始索引位置到结束索引位置的子字符串(不包括结束索引处的字符)。
- 示例:
String sub = str.substring(1, 4); // sub 为 "ell"
2. 字符串比较
- equals(Object obj)
- 作用:比较字符串的内容是否相同,区分大小写。
- 示例:
boolean isEqual = str.equals("Hello"); // isEqual 为 true
- equalsIgnoreCase(String anotherString)
- 作用:比较字符串的内容是否相同,忽略大小写。
- 示例:
boolean isEqualIgnoreCase = str.equalsIgnoreCase("hello"); // isEqualIgnoreCase 为 true
- compareTo(String anotherString)
- 作用:按字典顺序比较两个字符串,返回一个整数表示比较结果。
- 示例:
int result = str.compareTo("hello"); // result 为 0 表示相等,负数表示当前字符串字典序小,正数表示当前字符串字典序大
3. 字符串转换
- toLowerCase()
- 作用:将字符串中的所有字符转换为小写。
- 示例:
String lowerStr = str.toLowerCase(); // lowerStr 为 "hello"
- toUpperCase()
- 作用:将字符串中的所有字符转换为大写。
- 示例:
String upperStr = str.toUpperCase(); // upperStr 为 "HELLO"
- toCharArray()
- 作用:将字符串转换为字符数组。
- 示例:
char[] charArray = str.toCharArray();
4. 字符串修改
- concat(String str)
- 作用:将指定字符串连接到此字符串的末尾。
- 示例:
String newStr = str.concat(" World"); // newStr 为 "Hello World"
- replace(char oldChar, char newChar)
- 作用:将字符串中的所有旧字符替换为新字符。
- 示例:
String replacedStr = str.replace('e', 'a'); // replacedStr 为 "Hallo"
- replace(CharSequence target, CharSequence replacement)
- 作用:替换字符串中所有匹配的子字符串。
- 示例:
String replacedStr = str.replace("ll", "xx"); // replacedStr 为 "Hexxo"
5. 字符串查找与判断
- indexOf(String str)
- 作用:返回指定子字符串在此字符串中第一次出现处的索引,如果未找到则返回-1。
- 示例:
int index = str.indexOf("e"); // index 为 1
- lastIndexOf(String str)
- 作用:返回指定子字符串在此字符串中最后一次出现处的索引,如果未找到则返回-1。
- 示例:
int lastIndex = str.lastIndexOf("l"); // lastIndex 为 3
- startsWith(String prefix)
- 作用:判断字符串是否以指定的前缀开始。
- 示例:
boolean startsWithH = str.startsWith("H"); // startsWithH 为 true
- endsWith(String suffix)
- 作用:判断字符串是否以指定的后缀结束。
- 示例:
boolean endsWithO = str.endsWith("o"); // endsWithO 为 true
- contains(CharSequence s)
- 作用:判断字符串是否包含指定的字符序列。
- 示例:
boolean containsEl = str.contains("el"); // containsEl 为 true
6. 去除空格
- trim()
- 作用:去除字符串开头和结尾的空格。
- 示例:
String trimmedStr = " Hello ".trim(); // trimmedStr 为 "Hello"
7. 分割字符串
- split(String regex)
- 作用:根据匹配给定的正则表达式来拆分字符串。
- 示例:
String[] parts = str.split(" "); // 假设 str 为 "Hello World",则 parts 为 ["Hello", "World"]
相关面试题:
1.回文判断
方法1
public static boolean huiwen(String str){ int left =0; int right =str.length()-1; while (left<right){ if (str.charAt(left)!=str.charAt(right)){ return false; } left ++; right --; } return true; }
方法2
public class PalindromeChecker {
public static boolean isPalindrome(String str) {
// 去除字符串中的空格并转为小写
str = str.replaceAll("\\s+", "").toLowerCase();
// 使用StringBuilder反转字符串
String reversedStr = new StringBuilder(str).reverse().toString();
// 比较原始字符串和反转后的字符串
return str.equals(reversedStr);
}
public static void main(String[] args) {
String str = "A man a plan a canal Panama";
System.out.println("Is \"" + str + "\" a palindrome? " + isPalindrome(str));
}
}
2.求str2在str1中出现的次数
public static int countOccurrences(String str1, String str2) {
int count = 0;
int index = 0;
while ((index = str1.indexOf(str2, index)) != -1) {
count++;
index += str2.length();
}
return count;
}
3.求字符串中出现的字母并将大写转换为小写
public static String extractAndToLowercaseLetters(String str) {
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray()) {
if (Character.isLetter(c)) {
sb.append(Character.toLowerCase(c));
}
}
return sb.toString();
}