目录
Stringbuilder
toString()
默认实现
自定义 toString() 方法
重要性
字符串相关的一些方法
s.split()
s.charAt(i)
s.tocharArray ()
例子:Leetcode LCR 122. 路径加密
假定一段路径记作字符串 path
,其中以 ".
" 作为分隔符。现需将路径加密,加密方法为将 path
中的分隔符替换为空格 "",请返回加密后的字符串。
示例 1:
输入:path = "a.aef.qerf.bb" 输出:"a aef qerf bb"
class Solution {
public String pathEncryption(String path) {
StringBuilder res = new StringBuilder();
for(char c : path.toCharArray())
{
if(c == '.') res.append(' ');
else res.append(c);
}
return res.toString();
}
}
Stringbuilder
StringBuilder
是 Java 中的一个类,用于创建可变的字符串。与字符串 (String
) 不同,StringBuilder
对象可以被多次修改而不会产生大量的临时对象,从而提高程序的性能,特别是在进行大量字符串拼接操作时。
在 Java 中,String
类型是不可变的,这意味着一旦一个 String
对象被创建,它的内容就不能被改变。如果需要对字符串内容进行修改(比如添加、删除或替换字符),每次操作实际上都会创建一个新的 String
对象。对于需要大量字符串操作的场景,这会导致内存的浪费和性能的下降。
StringBuilder
提供了一个可变的字符串序列,支持多种操作,包括添加(append)、删除(delete)、插入(insert)、反转(reverse)等,而不需要每次操作都创建一个新的字符串对象。这些操作通常通过修改 StringBuilder
对象内部的字符数组来完成,从而避免了频繁创建和销毁字符串对象的开销。
toString()
toString()
方法在 Java 中是一个非常重要的方法,它被定义在 Object
类中,这意味着所有 Java 类都继承了这个方法。toString()
方法的主要作用是返回一个对象的字符串表示,这对于调试和日志记录非常有用,因为它可以提供关于对象状态的可读信息。
默认实现
在 Object
类中,toString()
方法的默认实现返回一个字符串,该字符串由对象的类名、符号“@”和对象的哈希码的无符号十六进制表示组成。例如,如果你有一个类 Example
的对象,其默认的 toString()
返回值可能看起来像这样
Example@1a2b3c4d
自定义 toString()
方法
由于默认实现提供的信息通常不够具体,许多类都会重写(override)toString()
方法,以返回更有意义的信息。例如,如果你有一个表示点的类 Point
,包含 x
和 y
两个属性,你可能希望 toString()
方法返回包含这些属性值的字符串:
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "Point(x=" + x + ", y=" + y + ")";
}
}
现在,如果你创建一个 Point
对象并调用其 toString()
方法
Point point = new Point(5, 10);
System.out.println(point.toString());
它将输出:
Point(x=5, y=10)
重要性
在实际开发中,重写 toString()
方法是一个好习惯,尤其是对于那些会频繁用于打印、日志或调试的类。这样可以确保当对象被打印或记录到日志文件时,能够提供足够的信息来帮助开发者理解对象的当前状态或是遇到的问题。此外,很多 Java 框架和库在内部使用 toString()
方法来生成对象的字符串表示,这也增加了重写这个方法的重要性。
在StringBuilder里已经在其类定义中重写了 Object
类的 toString()
方法,以返回 StringBuilder
内部字符序列的字符串表示形式。当您调用 res.toString()
时,您实际上是调用了 StringBuilder
类中已经重写过的 toString()
方法,它会返回一个新的 String
对象,该对象包含了 StringBuilder
对象当前所包含的所有字符。这个过程并不需要用户自己来重写任何东西,因为 StringBuilder
的 toString()
已经实现了将构建的字符串内容转换成 String
的功能。
字符串相关的一些方法
s.split()
里面类似正则表达式,(“”)里写通过什么分割(只能分割String类型)返回一个字符串数组
String s = "Hello World From Java";
String[] words = s.split(" "); // 使用空格作为分割符
for (String word : words) {
System.out.println(word);
}
这段代码会输出:
Hello
World
From
Java
s.charAt(i)
字符串的索引
String s = "Hello";
char firstChar = s.charAt(0); // 获取第一个字符
char lastChar = s.charAt(s.length() - 1); // 获取最后一个字符
System.out.println("First character: " + firstChar);
System.out.println("Last character: " + lastChar);
这段代码会输出:
First character: H
Last character: o
s.tocharArray ()
将字符串转换成一个字符数组,这样就可以像处理数组一样处理字符串中的每个字符了。
String s = "Java";
char[] chars = s.toCharArray();
for (char c : chars) {
System.out.println(c);
}
这段代码会逐个输出字符串 "Java" 中的每个字符:
J
a
v
a