Java 知识量:11 - 45 - 220
字符串字面量是指直接在代码中写出的字符串值。它们被双引号(" ")包围,并且Java会自动在它们前面添加一个" "前缀,以表示它们是字符串字面量。
例如,"Hello, World!" 是一个字符串字面量。
String s = "Hello, World!";
在上述示例中,创建了一个名为 s 的字符串变量,并将字符串字面量 "Hello, World!" 分配给它。
需要注意的是,Java会对字符串字面量中的内容进行编译时和运行时的单引号字符替换,也就是说,如果字符串字面量中包含单引号字符,那么Java会将它替换为两个单引号字符,以避免字符串字面量在编译时和运行时被误解。
例如,以下的代码将打印出包含两个连续单引号字符的字符串:
String s = "It''s a beautiful day."; System.out.println(s);
输出结果为:It's a beautiful day.
toString()是Java中的一个方法,用于将一个对象转换成其对应的字符串表示形式。这个方法是在Object类中定义的,因此可以在任何类中调用。
默认情况下,toString()方法会返回一个包含该对象的类名和哈希码的字符串。例如:
class MyClass { // some fields and methods } MyClass obj = new MyClass(); System.out.println(obj.toString()); // 输出:MyClass@15db9742
这个默认的toString()方法通常不是很有用,因为它没有提供关于对象状态或内容的信息。因此,许多类都会覆盖这个方法以提供更有用的信息。例如:
class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{name='" + name + "', age=" + age + "}"; } } Person person = new Person("Alice", 25); System.out.println(person.toString()); // 输出:Person{name='Alice', age=25}
在这个例子中,覆盖了toString()方法来返回一个包含Person对象名称和年龄的字符串。这样当打印Person对象时,就能得到更有用的信息。
需要注意的是,如果是一个集合类(如List,Set,Map等)或其他容器类,那么它们的toString()方法会递归调用其内部元素的toString()方法来获取每个元素的字符串表示,然后将这些字符串用特定分隔符连接起来。因此,如果容器中的元素是自定义类的实例,那么需要确保这些类也正确覆盖了toString()方法。
可以通过以下几种方式来连接(拼接)字符串:
1、使用 + 运算符:
String str1 = "Hello "; String str2 = "World!"; String str3 = str1 + str2; // "Hello World!"
2、使用 concat() 方法:
String str1 = "Hello "; String str2 = "World!"; String str3 = str1.concat(str2); // "Hello World!"
3、使用 StringBuilder:
String str1 = "Hello "; String str2 = "World!"; StringBuilder sb = new StringBuilder(); sb.append(str1); sb.append(str2); String str3 = sb.toString(); // "Hello World!"
4、使用 String.format():
String str1 = "Hello "; String str2 = "World!"; String str3 = String.format("%s%s", str1, str2); // "Hello World!"
以上是几种不同的字符串连接(拼接)方法,可以根据具体的使用场景和需求选择合适的方法。在大多数情况下,使用 + 运算符或 concat() 方法是最简单和直观的选择。如果需要拼接大量的字符串,或者在循环中拼接字符串,使用 StringBuilder 通常更高效。如果需要将字符串格式化,例如插入变量或执行更复杂的文本处理,String.format() 可能会非常有用。
Java中的字符串是不可变的。这意味着一旦创建了一个字符串对象,就不能更改它的内容。
例如,以下代码创建一个字符串对象:
String str = "Hello World";
一旦该字符串对象被创建,就不能更改它的内容。以下代码将创建一个新的字符串对象,而不是更改原始字符串对象的内容:
str = "Hello Java";
在Java中,字符串的不可变性是由String类实现的。String类中的所有方法,如concat()、substring()、replace()等,都返回一个新的字符串对象,而不是更改原始字符串对象的内容。因此,在Java中,不应该尝试更改字符串对象的内容,而是应该创建新的字符串对象来表示修改后的文本。
虽然字符串是不可变的,但是可以使用StringBuilder类或StringBuffer类来创建可变的字符串对象。这些类提供了修改字符串内容的方法,例如append()、insert()、delete()等。在执行大量字符串修改操作时,使用这些类可以提高程序的性能。
正则表达式用于处理字符串非常方便。在Java中使用正则表达式,主要通过java.util.regex包中的类进行操作,主要包括Pattern和Matcher两个类。
以下是一个基本的使用例子:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { // 定义一个正则表达式,用于匹配所有的数字 String regex = "\\d+"; // 创建Pattern对象 Pattern pattern = Pattern.compile(regex); // 将要匹配的字符串 String str = "我有100元和200元"; // 创建Matcher对象 Matcher matcher = pattern.matcher(str); // 使用Matcher的find方法查找匹配的子串 while (matcher.find()) { // 使用Matcher的group方法获取匹配的子串 System.out.println(matcher.group()); } } }
在这个例子中,使用"\d+"作为正则表达式,它表示一位或多位数字。用这个正则表达式创建一个Pattern对象,然后使用这个Pattern对象创建一个Matcher对象,用来在字符串"我有100元和200元"中寻找匹配的子串。最后,用Matcher的find方法来查找匹配的子串,用group方法来获取匹配的子串。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6