猿教程 Logo

Java String简介

在java中,string基本上是一个表示char值序列的对象。 字符数组的工作方式与java字符串相同。 例如:

char[] ch={'j','a','v','a','t','p','o','i','n','t'};
String s=new String(ch);

与下面相同:

String s="javatpoint";

Java String类提供了许多方法来对字符串执行操作,如compare(),concat(),equals(),split(),length(),replace(),compareTo(),intern 等等

java.lang.String类实现了Serializable,Comparable和CharSequence接口。



CharSequence接口

CharSequence接口用于表示字符序列。 它由String,StringBuffer和StringBuilder类实现。 这意味着,我们可以使用这3个类在java中创建字符串。


java字符串是不可变的,即它不能被改变。 每当我们更改任何字符串时,都会创建一个新的实例。 对于可变字符串,可以使用StringBuffer和StringBuilder类。

我们将在后面讨论不可变字符串。 让我们首先了解什么是java中的字符串,以及如何创建字符串对象。


什么是Java中的String

一般来说,string是一个字符序列。 但在java中,string是一个表示一系列字符的对象。 java.lang.String类用于创建字符串对象。

如何创建String对象?

有两种方法来创建String对象:

  1. 通过字符串文字

  2. 通过new关键字


1)字符串文字

Java字符串字面值通过使用双引号创建。 例如:

String s="welcome";

每次创建字符串文字时,JVM首先检查字符串常量池。 如果池中已存在字符串,则返回对池实例的引用。 如果池中不存在字符串,则会创建一个新的字符串实例并放入池中。 例如:

String s1="Welcome";
String s2="Welcome";//will not create new instance


在上面的示例中,将只创建一个对象。 首先JVM在字符串常量池中找不到值为“Welcome”的任何字符串对象,因此它将创建一个新对象。 之后,它将在池中找到值为“Welcome”的字符串,它不会创建新对象,但将返回对同一实例的引用。

注意:字符串对象存储在称为字符串常量池的特殊内存区域中。

为什么java使用字符串字面量的概念?

使Java更高效的运用内存(因为如果它已经存在于字符串常量池中,则不会创建任何新对象)。


2)用new关键字

相关实例:

String s=new String("Welcome");//creates two objects and one reference variable

在这种情况下,JVM将在正常(非池)堆内存中创建一个新的字符串对象,字符串“Welcome”将放在字符串常量池中。 变量s将引用堆中的对象(非池)。


Java字符串示例

相关实例:

public class StringExample{
public static void main(String args[]){
String s1="java";//creating string by java string literal
char ch[]={'s','t','r','i','n','g','s'};
String s2=new String(ch);//converting char array to string
String s3=new String("example");//creating java string by new keyword
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}}
java
strings
example

Java String类方法

java.lang.String类提供了许多有用的方法来对char值序列执行操作。

No.方法描述
1char charAt(int index)返回特定索引的char值
2int length()返回字符串长度
3static String format(String format,Object ... args)返回格式化的字符串
4static String format(Locale l,String format,Object ... args)返回具有给定语言环境的格式化字符串
5String substring(int beginIndex)返回给定begin索引的子字符串
6String substring(int beginIndex,int endIndex)返回给定开始索引和结束索引的子字符串
7boolean contains(CharSequence s)在匹配char值的序列后返回true或false
8static String join(CharSequence delimiter,CharSequence ... elements)返回连接的字符串
9static String join(CharSequence delimiter,Iterable <?extends CharSequence> elements)返回连接的字符串
10boolean equals(Object another)检查字符串与对象的等同性
11boolean isEmpty()检查字符串是否为空
12String concat(String str)连接指定的字符串
13String replace(char old,char new)替换所有出现的指定char值
14String replace(CharSequence old,CharSequence new)替换所有出现的指定CharSequence
15static String equalsIgnoreCase(String another)比较另一个字符串。 它不检查大小写。
16String [] split(String regex)返回拆分字符串匹配regex
17String [] split(String regex,int limit)返回分隔字符串匹配regex和limit
18String intern()返回interned字符串
19int indexOf(int ch)返回指定的char值索引
20int indexOf(int ch,int fromIndex)返回从给定索引开始的指定char值索引
21int indexOf(String substring)返回指定的子字符串索引
22int indexOf(String substring,int fromIndex)返回从给定索引开始的指定子字符串索引
23String toLowerCase()以小写形式返回字符串。
24String toLowerCase(Locale l)使用指定的区域设置以小写形式返回字符串。
25String toUpperCase()返回大写字符串。
26String toUpperCase(Local I)使用指定的语言环境返回大写的字符串。
27String trim()删除此字符串的开始和结束空格。
28static String valueOf(int value)将给定类型转换为字符串。 它是重载的。
你知道吗?
  1. 为什么String对象是不可变的?

  2. 如何创建一个不可变类?

  3. 什么是字符串常量池?

  4. 如果你通过+(字符串连接运算符)连接任何字符串,编译器写什么代码?

  5. StringBuffer和StringBuilder类之间有什么区别?

我们将学到关于字符串的哪些知识?
  • 字符串的概念

  • 不可变字符串

  • 字符串比较

  • 字符串连接

  • Substring的概念

  • 字符串类方法及其用法

  • StringBuffer类

  • StringBuilder类

  • 创建不可变类

  • toString()方法

  • StringTokenizer类


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/java-string.html