Java 字符串创建
什么是Java字符串?
在Java中,字符串是一个对象,它代表一系列字符。Java提供了String
类来创建和操作字符串。与其 他编程语言不同,Java中的字符串是不可变的(immutable),这意味着一旦创建,字符串的内容就不能被修改。
字符串的创建方式
在Java中,可以通过多种方式创建字符串。让我们逐一了解这些方法。
1. 使用字符串字面量
最简单也是最常用的方式是使用字符串字面量(直接在双引号中写入内容):
String greeting = "Hello, World!";
当使用字符串字面量创建字符串时,JVM会首先检查字符串常量池中是否已经存在相同内容的字符串。如果存在,则直接引用常量池中的字符串;如果不存在,则在常量池中创建新的字符串并返回引用。
2. 使用new关键字
另一种创建字符串的方式是使用new
关键字:
String greeting = new String("Hello, World!");
使用new
关键字会在堆内存中创建一个新的字符串对象,即使内容相同,也会创建新的对象。
3. 使用字符数组
可以使用字符数组来创建字符串:
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String greeting = new String(charArray);
System.out.println(greeting); // 输出: Hello
4. 通过其他字符串构建
可以通过连接现有字符串或使用StringBuilder
/StringBuffer
来构建新的字符串:
String first = "Hello";
String second = "World";
String combined = first + ", " + second + "!";
System.out.println(combined); // 输出: Hello, World!
StringBuilder builder = new StringBuilder();
builder.append("Hello");
builder.append(", ");
builder.append("World!");
String result = builder.toString();
System.out.println(result); // 输出: Hello, World!
字符串常量池
Java的字符串常量池是一个特殊的内存区域,用于存储字符串字面量。它的目的是节省内存并提高性能。
常量池与堆内存的区别
让我们通过一个例子来理解字符串常量池和堆内存中字符串的区别:
String str1 = "Hello"; // 存储在字符串常量池中
String str2 = "Hello"; // 引用常量池中的同一个对象
String str3 = new String("Hello"); // 在堆中创建新对象
System.out.println(str1 == str2); // 输出: true(相同引用)
System.out.println(str1 == str3); // 输出: false(不同引用)
System.out.println(str1.equals(str3)); // 输出: true(内容相同)
备注
==
操作符比较的是对象的引用(内存地址),而equals()
方法比较的是字符串的内容。