一、String构造函数概述
1. public String()
创建一个新的空字符串对象。由于字符串在Java中是不可变的,因此通常不推荐使用此构造函数。
示例:String s = new String();
2. public String(byte[] bytes)
根据指定的字节数组,使用平台默认的字符集解码创建新的字符串对象。
示例:byte[] bytes = {97, 98, 99}; String s = new String(bytes); // 输出: abc
3. public String(byte[] bytes, int offset, int length)
根据指定的字节子数组,使用平台默认的字符集解码创建新的字符串对象。
参数说明:
- bytes: 字节数组
- offset: 子数组的起始偏移量
- length: 子数组的长度
示例:byte[] bytes = {97, 98, 99}; String s = new String(bytes, 1, 2); // 输出: bc
4. public String(char[] value)
根据指定的字符数组创建新的字符串对象。
示例:char[] chars = {'我', '是', '友', '人', 'A'}; String s = new String(chars); // 输出: 我是友人A
5. public String(char[] value, int offset, int count)
根据指定的字符子数组创建新的字符串对象。
示例:char[] chars = {'我', '是', '友', '人', 'A'}; String s = new String(chars, 1, 3); // 输出: 是友人
6. public String(String original)
创建一个新的字符串对象,使其表示与给定字符串相同的内容。
示例:String s = new String("哈哈哈"); // 输出: 哈哈哈
二、String方法概述
1. public char charAt(int index)
返回指定索引处的字符。索引范围从0到length()-1。
示例:char c = "我是友人A".charAt(3); // 输出: 人
2. public char[] toCharArray()
将字符串转换为字符数组。
示例:char[] chars = "我是友人A".toCharArray(); for (char c : chars) { System.out.print(c + " "); } // 输出: 我 是 友 人 A
3. public int compareTo(String anotherString)
按字典顺序比较两个字符串。比较基于字符串中每个字符的Unicode值。
示例:int result = "abc".compareTo("abc"); // 输出: 0 int result2 = "abce".compareTo("abcd"); // 输出: 1 int result3 = "abcd".compareTo("abce"); // 输出: -1 int result4 = "abcd".compareTo("bcad"); // 输出: -1
4. public boolean contains(CharSequence s)
判断当前字符串是否包含指定的字符序列。
示例:System.out.println("友人A".contains("友五")); // 输出: false System.out.println("友人A".contains("友人")); // 输出: true
5. public boolean endsWith(String suffix)
判断当前字符串是否以指定的后缀结尾。
示例:System.out.println("test.txt".endsWith(".java")); // 输出: false System.out.println("test.txt".endsWith(".txt")); // 输出: true
6. public boolean startsWith(String prefix, int toffset)
判断当前字符串是否以指定的前缀开头,从指定的索引开始比较。
示例:System.out.println("qwwwqwqfdf".startsWith("qw", 1)); // 输出: true
7. public boolean equals(Object anObject)
判断两个字符串是否相等。注意,应使用equals方法而不是==运算符来比较字符串。
示例:System.out.println("abc".equals("abc")); // 输出: true
8. public boolean equalsIgnoreCase(String anotherString)
判断两个字符串是否相等,忽略大小写。
示例:System.out.println("abc".equals("Abc")); // 输出: false System.out.println("abc".equalsIgnoreCase("ABc")); // 输出: true
9. public byte[] getBytes()
将字符串转换为字节数组。
示例:byte[] bytes = "abc".getBytes(); for (byte b : bytes) { System.out.print(b + " "); } // 输出: 97 98 99
10. public int indexOf(String str)
返回指定子字符串在当前字符串中首次出现的索引。
示例:System.out.println("addppqkufppq".indexOf("ppq")); // 输出: 3
11. public int lastIndexOf(String str)
返回指定子字符串在当前字符串中最后一次出现的索引。
示例:System.out.println("addppqkufppq".lastIndexOf("ppq")); // 输出: 9
12. public boolean isEmpty()
判断字符串是否为空。
示例:String s = ""; System.out.println(s.isEmpty()); // 输出: true
13. public int length()
返回字符串的长度,即字符串中Unicode编码单元的数量。
示例:System.out.println("78".length()); // 输出: 2
14. public String replace(CharSequence target, CharSequence replacement)
将字符串中所有出现的目标序列替换为指定的替代序列。
示例:String replaced = "youren@A".replace("@A", "@B"); System.out.println(replaced); // 输出: youren@B
15. public String[] split(String regex)
根据给定的正则表达式拆分字符串,返回一个字符串数组。
示例:String[] parts = "1980-10-11".split("-"); for (String part : parts) { System.out.println(part); } // 输出: 1980 10 11
16. public String substring(int beginIndex, int endIndex)
返回从指定的开始索引到结束索引之间的子字符串。
示例:System.out.println("hhheeefff".substring(3)); // 输出: eeefff System.out.println("hhheeefff".substring(0, 5)); // 输出: hhhee
17. public String toLowerCase()
将字符串转换为小写。
示例:System.out.println("ABCDE".toLowerCase()); // 输出: abcde
18. public String trim()
返回一个新的字符串,该字符串去除了原字符串首尾的所有空白字符。
示例:System.out.println(" hello world ".trim()); // 输出: hello world
深入理解:为什么输出对象时会调用toString()方法?
在Java中,System.out.println()
方法会调用对象的 toString()
方法来获取对象的字符串表示形式。这是因为控制台只能输出字符串,非字符串类型的数据需要转换为字符串才能输出。
valueOf()
方法用于将非字符串类型的数据转换为字符串,而 toString()
方法则是 valueOf()
方法内部调用的方法。当输出一个对象时,实际上是调用了该对象的 toString()
方法,具体行为取决于该对象是否重写了 Object
类中的 toString()
方法。如果没有重写,默认会输出对象的内存地址。
结语
感谢阅读!如果有任何疑问或建议,欢迎在评论区留言。如果本文对您有所帮助,别忘了点赞支持哦!每天都会分享更多Java相关的技术文章和行业资讯,敬请关注和转发。