Java String 是最广泛使用的类之一. Java String 类在java.lang 包中定义。
Java 字符串
- 基本上,字符串是字符串的序列,但它不是原始类型
- 当我们在 Java 中创建一个字符串时,它实际上会创建一个字符串类型对象 *字符串是不可变的对象,这意味着一旦创建,它就无法更改 *字符串是唯一在 Java 中支持操作员过载的类别。
让我们继续前进,了解更多关于 Java String 类的信息。
创建 String 的不同方法
在 Java 中创建一个字符串对象有很多方法,下面提供了一些流行的方法。
Using string literal
This is the most common way of creating string. In this case a string literal is enclosed with double quotes.``` String str = "abc";Using new keyword
We can create String object using new operator, just like any normal java class. There are several constructors available in String class to get String from char array, byte array, StringBuffer and StringBuilder.``` String str = new String("abc"); char[] a = {'a', 'b', 'c'}; String str2 = new String(a);
Java String 对比
字符串类提供equals()
和equalsIgnoreCase()
的方法来比较两个字符串. 这些方法比较字符串的值,以检查两个字符串是否等同。
1package com.journaldev.string.examples;
2
3/**
4 * Java String Example
5 *
6 * @author pankaj
7 *
8 */
9public class StringEqualExample {
10
11 public static void main(String[] args) {
12 //creating two string object
13 String s1 = "abc";
14 String s2 = "abc";
15 String s3 = "def";
16 String s4 = "ABC";
17
18 System.out.println(s1.equals(s2));//true
19 System.out.println(s2.equals(s3));//false
20
21 System.out.println(s1.equals(s4));//false;
22 System.out.println(s1.equalsIgnoreCase(s4));//true
23 }
24
25}
上述方案的结果是:
1true
2false
3false
4true
String class 实现了 Comparable接口,它提供了 compareTo()
和 compareToIgnoreCase()
方法,并在语法上比较两个字符串。 两个字符串都转换为 Unicode 值进行比较,并返回一个可以大于、小于或等于零的整数值。
1package com.journaldev.examples;
2
3/**
4 * Java String compareTo Example
5 *
6 * @author pankaj
7 *
8 */
9public class StringCompareToExample {
10
11 public static void main(String[] args) {
12
13 String a1 = "abc";
14 String a2 = "abc";
15 String a3 = "def";
16 String a4 = "ABC";
17
18 System.out.println(a1.compareTo(a2));//0
19 System.out.println(a2.compareTo(a3));//less than 0
20 System.out.println(a1.compareTo(a4));//greater than 0
21 System.out.println(a1.compareToIgnoreCase(a4));//0
22 }
23
24}
上述方案的结果是:
10
2-3
332
40
请在 [ String compareTo example]( / 社区 / 教程 / java-string-compareto) 阅读更多细节。
Java String 方法
让我们用一个示例程序来看看一些流行的 String 类方法。
- QQ 拆分 ( ()
) Java 字符串拆分方法用于使用给定表达式来分割字符串. 分()法有两个变体 --
分(string regex)': 这种方法使用给定的正则表达式分割字符串并返回字符串的数组. (_) ) -
分块(成份限制,成份限制)`: 这种方法使用给定的正则表达式和返回的字符串数组来分割字符串,但数组的元素受指定的限制. 如果指定的限制是 2,则方法返回大小为 2 () 的数组 。 ) QQ 套接字 com.journaldev.amples; (- ) (- ) /** (- ) * Java String 分拆例 (- ) * (- ) * (- ) 套接字 / (- ) 公共类 StringSplitExample { (- ) (- ) 公共静态无效主干线 (-String [-MKBRBR1]) { (- -) 弦 (-) ; (-MKBR-) ; )} system.out.println("使用有限制的正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正则正 )} }
}
1仅使用 regex 的分割字符串:(-MKBR1_) a(-MKBR1_) b(-MKBR1_) c(-MKBR1_) d(-MKBR1_) 使用 regex 的分割字符串,限制为:(-MKBR1_) a(-MKBR1_) b/c/d(--MKBR1_) QX(-MKBR1_) 2. 包含(CharSecence s)(-MKBR1_) Java String 包含的方法检查是否包含指定的字符序列 。 如果字符串中包含指定的字符序列,此方法返回真. ^
2packet com.journaldev.examples; (-MKBR1_) (-MKBR1_) (-MKBR1_) (-MKBR1_) * Java String 含有示例(-MKBR1_) * (-MKBR1_) * (-MKBR1_) 系统. println (s.contains ("W")) (-Treal-MKBR1_) 系统. KBR1_ (-MBRS.X_) 公用静态无效主机(STRING) {(MKBRS.)}(RMBRS. 以上程序输出为:```(-MKBR1_)真(-MKBR1_)假(-MKBR1_)```(-MKBR1_)3. QQ长 ()
3Java 字符串长 () 方法返回字符串长. QQ
4包长 com.journaldev.examples; (-MKBR1_) (-MKBR1_) /** (-MKBR1_) * Java 字符串长 (-MKBR1_) * @ 作者 pankaj (-MKBR1_) * (-MKBR1_) * (-) 公共类 String LengthExample { (-MKBR1_) (--MKBR1_) 公共静态真空主干线 (String [] ags) { (-MKBR1_) string s1 = "abc"; (-MKBR1_) string s2= "abcdef"; (-MKBR1_) string s3= "abghi"; (-) MKBR1_
5system.out.println(s1.长 ());//3
6系统.out.println(s2.长());/6
7系统.out.println(s3.长());/9
8
9} (-MKBR1_) (-MKBR1_)}(-MKBR1_)_ (-MKBR1_)_(-MKBR1_)4. (-) 替换 ( ( (-MKBR1_)) Java 字符串替换 () 方法用于以其他字符串替换字符串的特定部分. 替换()方法有四种变体。 Char, Char newChar)':". 这种方法用字符串中的新Char来取代所有旧Char的发生. (_ MKBR1_) - “替换(CharSequence目标,CharSequence 替换)”: 这种方法用字符串中替换每个目标字元. (_) MKBR1_) - `取代All(String regex,字符串替换)': 这种方法用指定 regex 替换所有子字符串匹配的发生, 并指定字符串替换 。 (_) MKBR1_) - “替换第一号(硬盘,字符串替换)”: 这种方法取代首次出现的子字符串与指定 regex 匹配,在字符串中指定替换.
10``` (-
11) package (-
12) package (-
13) package (-
14) package (-
15-) ``` (-
16-) ``` (-
17-_) ``` (-
18-_) ``` (-
19-_) = (-
20-) = (-出) = (-MBRl-) = (-M-M-M-M-M-l-l.-l.---M-l.-l.-M-l-l-l--------------------------------------------------------
21
22// 重置 All(String regex,字符串替换
23字符串 s1 = "Hello journaldev, Hello pankaj";
24s1 = s1.重置 All("Hello","Hi");
25system.out.println ("Replacting:"后");
26System.out.println (s1) (_) System.
27
28//取而代之(String regex,字符串替换)
29字符串 s2 = "Hello guys, Hello world";
30s2 = s2. 取而代之("Hello","Hi");
31System.out.println ("Replacting:"后");
32System.out.println (s2);
33
34
35) = +. 以上程序输出为:```(-
36) 在将l与 m相接后: (-
37) Hemmo Wormd(-
38) 在重接后: (-
39) Hi journaldev, Hi pankaj(-
40) 在重接后: (-
41) Hi Goys, 哈罗世界
- QQ格式 ( Java Sting格式 () 方法用于格式化字符串. java String格式()方法有两个变体: - “format(locale l, String格式,Object... args)”: 这种方法使用指定的地块、 字符串格式和参数来格式化字符串( _ MKBR1_) - “格式(样式、对象.参数)”: 此方法使用指定的字符串格式和参数格式来格式化字符串( ) MKBR1) QQ 套接字 com.journaldev.examples;
导入java.util. 地语; (-MKBR1_) (-MKBR1_)/** (-MKBR1_) * Java String格式 (-MKBR1_) * (-MKBR1_) * @ author pankaj (-MKBR1_) * (-MKBR1_) * (-MKBR1_)公共类 StringFormatExample { (--MKBR1_) (-MKBR1_) (-) 公共静态空白主干道 (-String [] args)(---MKBR1_) (-MKBR1_) String s = "journaldev.com"; (-) MKBR1_) /%s 用于附加字符串 system.out.println(String.format ("这是%s", s));
/以地语为地语. US( MKBR1) (中文(简体) ). system.out.println (String.format (Locale.US, "%f", 3.14)); } } __ 以上程序输出为:______ 这是 journaldev.com 3.140000 *_ 6. QQ 子字符串 ( ()_ MKBR1_) 这种方法返回了基于指定索引的字符串的一部分. * (MKBR1) 套件 com.journaldev. examples; (-MKBR1) (-MKBR1_) (-MKBR1_) (-MKBR1_) / ** (-MKBR1_) * Java String substring (-MKBR1_) * (-MKBR1_) * (-MKBR1_) 公共类 StringSub StringExample { (--MKBR1_) (-) (-MKBR1_] args) {(-MKBR1_) 公共静态无效主干线(-) (-MKBR1_) (-) string s= "这是 journaldev.com"; (-MKBR1_) s= s.substring (8,18); (-MKBR1_) S.print. MKBR1_)} }
1
2### 紧紧连接
3
4String concatenation 是 Java 中非常基本的操作, String 可以通过使用`+` 运算器或使用`concat()` 方法进行 concatenation。
package com.journaldev.examples;
/**
- Java String concatenation
- @author pankaj
*/ public class StringConcatExample {
public static void main(String[] args) {
String s1 = "Hello";
String s2 = "World";
String s3 = s1 + s2;
//using + operator
System.out.println("Using + operator: ");
System.out.println(s3);
//using concat method
System.out.println("Using concat method: ");
System.out.println(s1.concat(s2));
}
}
1
2上述方案的结果是:
Using + operator: HelloWorld Using concat method: HelloWorld
1
2查看此帖子以获取有关 [Java 中的 String Concatenation](/社区/教程/string-concatenation-in-java)的更多信息。
3
4### Java String 平台
5
6记忆管理是任何编程语言中最重要的方面。Java中的字符串的记忆管理与其他任何类别都略有不同. 为了使Java的记忆效率更高,JVM引入了一个名为String Constant Pool的特殊记忆区域。 当我们创建一个字符串时,它会检查是否在字符串中已经存在相同的字符串。
package com.journaldev.examples;
/**
- Java String Pool Example
*/ public class StringPoolExample {
public static void main(String[] args) {
String a = "abc";
String b = "abc";
String c = "def";
//same reference
if (a==b) {
System.out.println("Both string refer to the same object");
}
//different reference
if (a==c) {
System.out.println("Both strings refer to the same object");
}else {
System.out.println("Both strings refer to the different object");
}
}
}
1
2上述方案的结果是:
Both string refer to the same object Both strings refer to the different object
1
2查看此帖子,了解更多关于 [Java String Pool]( / 社区 / 教程 / 什么是java-string-pool)。
3
4### String 内部() 方法
5
6当我们使用字母字符串创建一个字符串时,它会在字符串池中创建,但如果我们使用新的关键字创建一个字符串,具有字符串池中存在的相同值?我们可以将字符串从堆积内存移动到字符串池吗?对于这种 intern() 方法使用,它会返回字符串对象的典型表示。当我们在使用新字符串创建的字符串对象上调用 intern() 方法时,它会检查是否已经在字符串中有具有相同值的字符串吗?如果是,那么它会从字符串中返回那个字符串对象的参考。
package com.journaldev.examples;
/**
- Java String intern
- @author pankaj
*/ public class StringInternExample {
public static void main(String[] args) {
String s1 = "pankaj";
String s2 = "pankaj";
String s3 = new String("pankaj");
System.out.println(s1==s2);//true
System.out.println(s2==s3);//false
String s4 = s3.intern();
System.out.println(s1==s4);//true
}
}
1
2查看本文以了解更多关于 [Java String intern](/社区/教程/java-string-intern)的方法。
3
4### String 不可变性优点
5
6String是不可变的类的一些好处是:
7
81. String Constant Pool,因此节省了内存
92 安全,因为它不能被更改
103 线程安全
114 类加载安全
12
13查看此帖子,了解有关 [Sting Immutability Benefits]( / 社区 / 教程 / string-immutable-final-java)的更多信息。
14
15## Java 8 字符串连接()
16
17一个新的静态方法 join() 被添加到 Java 8 中的 String 类中,该方法会返回一个新的 String,它由 CharSequence 元素的副本组成,加上指定分界器的副本。
List
1
2上一篇:《Hello World 2019》
3
4## Java 9 字符串方法
5
6有两个方法在Java 9版本中添加了String类. 它们是 - codePoints()和chars(). 这些方法都返回了IntStream对象,我们可以执行一些操作。
String s = "abc";
s.codePoints().forEach(x -> System.out.println(x));
s.chars().forEach(x -> System.out.println(x));
1
2输出:
97 98 99 97 98 99
1
2## Java 11 String 类新方法
3
4Java 11 发布的 String 类中添加了许多新方法。
5
6* isBlank() - 返回真,如果字符串是空的或仅包含白色空间代码点,否则是错误的.
7*线() - 返回从这个字符串中提取的线条流,由线条终结器分开
8*字符串(), stripLeading(), stripTrailing() - 用于从字符串中删除领先和追随的白色空间
9* repeat() - 返回一个字符串的值是这个字符串的连接重复给定次数
10
11让我们来看看这些方法的示例程序。
package com.journaldev.strings;
import java.util.List; import java.util.stream.Collectors;
/**
- JDK 11 New Functions in String class
- @author pankaj
*/ public class JDK11StringFunctions {
public static void main(String[] args) {
// isBlank()
String s = "abc";
System.out.println(s.isBlank());
s = "";
System.out.println(s.isBlank());
// lines()
String s1 = "Hi\nHello\rHowdy";
System.out.println(s1);
List lines = s1.lines().collect(Collectors.toList());
System.out.println(lines);
// strip(), stripLeading(), stripTrailing()
String s2 = " Java, \tPython\t ";
System.out.println("#" + s2 + "#");
System.out.println("#" + s2.strip() + "#");
System.out.println("#" + s2.stripLeading() + "#");
System.out.println("#" + s2.stripTrailing() + "#");
// repeat()
String s3 = "Hello\n";
System.out.println(s3.repeat(3));
s3 = "Co";
System.out.println(s3.repeat(2));
}
}
1
2输出:
false true Hi Hello Howdy [Hi, Hello, Howdy]
Java, Python
#Java, Python# #Java, Python #
Java, Python#
Hello Hello Hello
CoCo
1
2那就是 Java String 类,它是方法和 String 操纵的例子。
3
4您可以从我们的 [GitHub 存储库](https://github.com/journaldev/journaldev/tree/master/CoreJavaProjects/CoreJavaExamples/src/com/journaldev/string)中查看更多 String 示例。
5
6引用: [API Doc](https://docs.oracle.com/javase/9/docs/api/java/lang/String.html)