Java 字符串
字符串在字面意义上就是一系列字符。字符串不是 Java 中的原始数据类型。是的,所以在技术方面,Java 字符串基本上是一个字符数组。
为什么要使用字符串?
现代计算机科学的主要功能之一是处理人类语言。与数字对数学的重要性类似,语言符号对于意义和决策也很重要。
作为 Java 程序员,你存储和处理语言的主要工具之一将是 String 类。
String 语法示例
现在,让我们来看一些字符串语法。
String 是一个字符数组,表示为:
//String is an array of characters
char[] arrSample = {'R', 'O', 'S', 'E'};
String strSample_1 = new String (arrSample);
在技术方面,字符串在上面的例子中定义如下 -
= new (argument);
现在我们不能总是把我们的字符串写成数组,因此我们可以在 Java 中定义 String,如下所示:
//Representation of String
String strSample_2 = "ROSE";
在技术方面,以上表示为:
= ;
Java 用 String Class
扩展了对象类。
字符串连接
我们有两个字符串 str1 =Rock
和 str2 =Star
,如果我们将这两个字符串相加,我们应该得到 str3 =RockStar
的结果。
看一下下面的代码片段,它解释了执行字符串连接的两种方法。
首先使用 String 类的 concat
方法,然后使用算术 +
运算符。两者都产生相同的输出
public class Sample_String{
public static void main(String[] args){
//String Concatenation
String str1 = "Rock";
String str2 = "Star";
//Method 1 : Using concat
String str3 = str1.concat(str2);
System.out.println(str3);
//Method 2 : Using "+" operator
String str4 = str1 + str2;
System.out.println(str4);
}
}
重要的 Java 字符串方法:
字符串 length
方法
你如何确定给定 String 的长度?Java 提供了一种称为 length
的方法。将它用于你需要查找长度的 String。
public class Sample_String{
public static void main(String[] args){
//Our sample string for this tutorial
String str_Sample = "RockStar";
//Length of a String
System.out.println("Length of String: " + str_Sample.length());
}
}
输出
Length of String: 8
字符串 indexOf
方法
如果我知道长度,我怎么能找到哪个字符在哪个位置?简而言之,我如何找到字符的索引?
字符串中有一个 indexOf
方法可以帮助你确定你指定的特定字符的位置。
public class Sample_String{
public static void main(String[] args){
//Character at position
String str_Sample = "RockStar";
System.out.println("Character at position 5: " + str_Sample.charAt(5));
//Index of a given character
System.out.println("Index of character 'S': " + str_Sample.indexOf('S'));
}
}
输出:
Character at position 5: t
Index of character 'S': 4
字符串 charAt
方法
与上述问题类似,给定索引,我如何知道该位置的字符?
简单,来使用 charAt
方法并提供你需要查找其字符的索引。
public class Sample_String{
public static void main(String[] args){
//Character at position
String str_Sample = "RockStar";
System.out.println("Character at position 5: " + str_Sample.charAt(5));
}
}
输出:
Character at position 5: t
字符串 CompareTo
方法
我想检查由某种方法生成的字符串是否等于我要验证的字符串?我如何比较两个字符串?
使用方法 compareTo
并指定要比较的字符串。如果你不希望结果区分大小写,请使用 compareToIgnoreCase
。
如果参考字符串等于此字符串,则结果为 0
;如果此字符串按字典顺序小于参考字符串,则小于 0
,如果此字符串按字典顺序大于参考字符串,则值大于 0
。
public class Sample_String{
public static void main(String[] args){
//Compare to a String
String str_Sample = "RockStar";
System.out.println("Compare To 'ROCKSTAR': " + str_Sample.compareTo("rockstar"));
//Compare to - Ignore case
System.out.println("Compare To 'ROCKSTAR' - Case Ignored: " + str_Sample.compareToIgnoreCase("ROCKSTAR"));
}
}
输出:
Compare To 'ROCKSTAR': -32
Compare To 'ROCKSTAR' - Case Ignored: 0
字符串 contains
方法
我知道字符串应该部分包含什么,如何确认字符串是否包含我指定的字符序列?
使用方法 contains
并指定你需要检查的字符。当且仅当此字符串包含指定的 char 值序列时,才返回 true
。
public class Sample_String{
public static void main(String[] args){
//Check if String contains a sequence
String str_Sample = "RockStar";
System.out.println("Contains sequence 'tar': " + str_Sample.contains("tar"));
}
}
输出:
Contains sequence 'tar': true
字符串 endsWith
方法
如何确认 String 是否以特定后缀结尾? 来使用 endsWith
方法并在参数中指定后缀。
如果参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true
。
public class Sample_String{
public static void main(String[] args){
//Check if ends with a particular sequence
String str_Sample = "RockStar";
System.out.println("EndsWith character 'r': " + str_Sample.endsWith("r"));
}
}
输出:
EndsWith character 'r': true
字符串 replaceAll
和 replaceFirst
方法
我想在几个地方修改我的 String 并在几个地方替换 String,如何来做呢?
用 Java 字符串替换的 replaceAll
和 replaceFirst
方法。你可以指定要替换的字符串部分以及参数中的替换字符串。
public class Sample_String{
public static void main(String[] args){
//Replace Rock with the word Duke
String str_Sample = "RockStar";
System.out.println("Replace 'Rock' with 'Duke': " + str_Sample.replace("Rock", "Duke"));
}
}
输出:
Replace 'Rock' with 'Duke': DukeStar
字符串 tolowercase
和 touppercase
方法
我希望我的整个 String 以小写或大写显示?
只需对需要转换的字符串使用 toLowercase()
或 ToUpperCase()
方法。
public class Sample_String{
public static void main(String[] args){
String str_Sample = "RockStar";
//Convert to LowerCase
System.out.println("Convert to LowerCase: " + str_Sample.toLowerCase());
//Convert to UpperCase
System.out.println("Convert to UpperCase: " + str_Sample.toUpperCase());
}
}
输出:
Convert to LowerCase: rockstar
Convert to UpperCase: ROCKSTAR
要点注意事项:
-
字符串是
final class
,即一旦创建,其值就无法改变。因此,String 对象称为不可变对象。 -
Java 虚拟机(JVM)创建一个内存位置,特别是对于名为
String Constant Pool
的字符串。这就是为什么 String 可以在没有new
关键字的情况下初始化的原因。 -
String 类属于
java.lang.String
层次结构。但是没有必要导入这个类。Java 平台会自动提供它们。 -
可以覆盖字符串引用,但不会删除其内容,即
String h1 = "hello"; h1 = "hello"+"world";
hello
字符串不会被删除,它只是失去了它的引用。 -
多个引用可以用于相同的字符串,但它将出现在同一个地方,即
String h1 = "hello"; String h2 = "hello"; String h3 = "hello";
内存中,只创建了一个 hello
字符串,它有三个参考, h1
、h2
和 h3
。
-
如果在
""
中引用数字,那么它将变为字符串,而不再是数字。这意味着,String S1 ="The number is: "+ "123"+"456"; System.out.println(S1);
那它就会打印
```java
The number is: 123456
```
假如,
``` java
String S1 = "The number is: "+(123+456);
System.out.println(S1);
```
那它将打印
``` java
The number is:579
```
`579` 是字符串类型,而不是整型了。