Java中的字符串是什么?
在编程中,字符串是非常常用的。java中的字符串是一个对象,表示由字符数组支持的字符序列。String类在 Java 中是不可变的,并实现Comparable、Serializing和CharSequence接口。让我们看一个例子来理解。String str = "string"
这里str是6个字符的序列,分别是s、t、r、i、n和g。
字符数组索引 | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
价值 | s | t | r | 我 | n | G |
内存地址 | 0x12824 | 0x12825 | 0x12826 | 0x12827 | 0x12828 | 0x12829 |
字符串初始化的方式
初始化字符串有两种方法。- 字符串文字
- 新干员
字符串字面量
上面的示例使用了声明字符串的最简单、最直接的方法。每当编译器解释字符串文字时,它总是会转换为 String 对象。String str = "string";
新干员
我们还可以使用 new 运算符来初始化字符串。String strNew = new String("using new operator");
例子
import java.io.*;
import java.lang.*;
class StringInitializationExample {
public static void main(String[] args)
{
//declare java string with a string literal
String str = "a string literal";
System.out.println("String str = " + str);
//declare string using new operator
String strNew = new String("using new operator");
System.out.println("String strNew = " + strNew);
}
}
输出
String str = 字符串文字 String strNew = 使用 new 运算符
String、StringBuilder、StringBuffer
我们已经讨论了什么是 String 类,因此我们将讨论其他两个类及其用途,以及 Java 在已经为我们提供 String 类的情况下引入这两个类的原因。您最好到顶部对 String 类进行修订,以便更好地理解它。原因
我们知道 String 类对象是不可变的,因此每当我们需要更改字符串时,它都不会改变当前对象,但更改后的值始终存储为新的 String 对象。因此,如果我们需要一次又一次地更改该值,内存也会被消耗。保持这一点Java为我们提供了StringBuilder和StringBuffer类。现在我们将看看它们在这种情况下有何用处。字符串缓冲区
String 是不可变字符序列的表示,而StringBuffer是可变字符序列。它使用大多数String类方法以及它自己的一些方法来更改字符的内容和序列。它是线程安全的,因为它的方法是同步的,供多个线程使用,从而保持串行顺序。它实现Serialized、Appendable和CharSequence接口。句法
StringBuffer str = new StringBuffer("Happy Java Programming");
字符串生成器
StringBuilder 还表示可变的字符序列。它提供了一个API,该API与StringBuffer类兼容,但它不是线程安全的。因此,在不涉及多个线程的情况下,最好使用StringBuilder类,因为在许多情况下它比StringBuffer类更快。这个类的关键方法是insert和append。它还实现Serialized、Appendable和CharSequence接口。句法
StringBuilder str = new StringBuilder("Happy Java Programming");
字符串操作
在Java中,我们可以执行字符串操作,如连接、比较、拆分、查找长度、替换字符串等。字符串方法
Java String 类提供了各种用于操作字符串或执行上述操作的方法。让我们看看下表中的一些字符串方法。方法 | 描述 |
---|---|
Char charAt(int 索引) | 它返回提供的索引处的 char 值。 |
字符串连接(字符串 str) | 它通过将指定的字符串组合到该字符串的末尾来返回一个字符串。 |
布尔值包含(CharSequence s) | 如果字符串包含指定的 char 值序列,则返回 true。 |
布尔 contentEquals(CharSequence cs) | 它将字符串与提供的字符序列进行匹配。 |
布尔 contentEquals(StringBuffer sb) | 它将字符串与提供的字符串缓冲区进行匹配。 |
布尔结束(字符串后缀) | 它将字符串结尾与提供的后缀进行比较。 |
布尔等于(对象 anObject) | 它将字符串与提供的对象进行匹配。 |
布尔值 equalsIgnoreCase(String anotherString) | 此方法比较两个字符串而不考虑区分大小写。 |
静态字符串格式(字符串格式,对象...args) | 它使用提供的格式和参数返回格式化的字符串。 |
字节 getBytes() | 此方法使用平台的默认字符集将字符串编码为字节序列,然后将其存储到新的字节数组中。 |
void getChars(int begin, int end, char[] dst, int dstBegin) | 它将字符串中的字符复制到目标字符数组中。 |
int 哈希码() | 它返回字符串的哈希码。 |
int indexOf(int ch) | 它返回字符串中首先出现的指定字符的索引。 |
int indexOf(int ch, int fromIndex) | 它返回从该字符串中提供的索引开始首先出现的指定字符的索引。 |
int indexOf(字符串 str) | 它在字符串中搜索提供的子字符串并返回第一次出现的索引。 |
int indexOf(字符串 str, int fromIndex) | 它开始从给定索引开始在字符串中搜索提供的子字符串,并返回第一次出现的索引。 |
字符串实习生() | 此方法返回字符串的规范表示形式。 |
int lastIndexOf(int ch) | 此方法在字符串中搜索提供的字符并返回最后一次出现的索引。 |
int lastIndexOf(int ch, int fromIndex) | 此方法从给定索引向后搜索字符串中提供的字符,并返回最后一次出现的索引。 |
int lastIndexOf(字符串 str) | 此方法在字符串中搜索提供的子字符串并返回最后一次出现的索引。 |
int lastIndexOf(字符串 str, int fromIndex) | 此方法从给定索引向后搜索字符串中提供的子字符串,并返回最后一次出现的索引。 |
整数长度() | 该方法返回字符串的长度。 |
布尔匹配(字符串正则表达式) | 它通过将字符串与提供的正则表达式进行匹配来返回 true 或 false。 |
字符串替换(char oldValue,char newValue) | 该方法在将字符串中所有提供的 oldValue 替换为 newValue 后返回一个字符串。 |
字符串[]分割(字符串正则表达式) | 此方法根据字符串中提供的正则表达式查找所有匹配项,并将其拆分为这些匹配项。 |
布尔开始于(字符串前缀) | 它通过测试以提供的前缀开头的字符串来返回 true 或 false。 |
字符串子串(int beginIndex) | 此方法返回一个字符串,该字符串是该字符串的子字符串。 |
字符串 toLowerCase() | 它使用默认区域设置的规则将字符串的所有字符转换为小写。 |
字符串修剪() | 此方法从字符串中删除所有前导和尾随空格并返回它。 |
静态字符串 valueOf(char c) | 它返回 char 参数的字符串表示形式。 |
例子
import java.io.*;
import java.lang.*;
class JavaStringsExample {
public static void main(String[] args) {
//create a string
String greeting = "Hello! World";
System.out.println("String: " + greeting);
//getting the length of greeting object
int length = greeting.length();
System.out.println("Length: " + length);
//create first string
String first = "Java ";
System.out.println("First String: " + first);
//create second string
String second = "Programming";
System.out.println("Second String: " + second);
//joining two strings
String joinedString = first.concat(second);
System.out.println("Joined String: " + joinedString);
String jpf = "Java programming";
String jps = "Java programming";
String jpt = "Python programming";
//compare jpf and jps strings
boolean result1 = jpf.equals(jps);
System.out.println("Strings jpf and jps are equal: " + result1);
//compare jpf and jpt strings
boolean result2 = jpf.equals(jpt);
System.out.println("Strings jpf and jpt are equal: " + result2);
//converting jpf to uppercase
System.out.println("Upper case jpf: " + jpf.toUpperCase());
//replacing g character with v in jpf
System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
}
}
输出
弦:您好!世界长度:12 第一个字符串:Java 第二个字符串:编程 连接字符串:Java 编程字符串 jpf 和 jps 相等:true 字符串 jpf 和 jpt 相等:false 大写 jpf:JAVA PROGRAMMING 在 jpf 中用 v 替换 g:java provramminv
GO TO FULL VERSION