Java字符串就是Unicode字符序列

Posted chenmaiolly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java字符串就是Unicode字符序列相关的知识,希望对你有一定的参考价值。

一、简介

Java字符串就是Unicode字符序列。Java里没有内置的字符串类型,而是在标准的类库中提供了一个预定义类,String。每个用双引号""括起来的都是String类的一个实例

字符串是日常开发中最常用, Java字符串的一个重要特点就是字符串不可变

二、字符串定义

2.1 直接定义字符串

String str = "www.xiezhrspace.cn";
//或者
String str;
str = "www.xiezhrspace.cn";

2.2 通过使用 String 类的构造方法来创建字符串

//① String() 初始化新创建的 String对象,使其表示空字符序列
String str = new String();
//② String(String original) 初始化新创建的String对象,使其表示与参数相同的字符序列;换句话说,新创建的字符串是参数字符串的副本。
String str = new String("www.xiezhrspace.cn")
//③ String(char[] value) 分配一个新的字符串,将参数中的字符数组元素全部变为字符串。该字符数组的内容已被复制,后续对字符数组的修改不会影响新创建的字符串
char a[] = \'H\',\'e\',\'l\',\'l\',\'0\';
String sChar = new String(a);
//④ String(char[] value, int offset, int count) 分配一个新的 String,它包含来自该字符数组参数一个子数组的字符。offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。该子数组的内容已被赋值,后续对字符数组的修改不会影响新创建的字符串
char a[]=\'H\',\'e\',\'l\',\'l\',\'o\';
String sChar=new String(a,1,4);
...

String提供的构造方法很多,文章只列举常用的,其余的可自行查找Java帮助文档。帮助文档的使用参照下一小节

JAVA SE基础篇32.String类

1.字符串

1.String类又称作不可变字符序列

2.String位于java.lang包中,java程序默认导入java.lang包下所有的类

3.java字符串就是Unicode字符序列,例如字符串“java”就是4个Unicode字符:‘j’,‘a’,‘v’,‘a’组成的

4.java中没有内置的字符串类型,而是在标准的java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例

5.java中允许使用符号“+”把两个字符串连接起来。

例:

 

 

 6.字符串连接:“+”把两个字符串按照给定的顺序连接在一起,并且是完全按照给定的形式

       当“+”号运算符两侧的操作数中只有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串再进行输出

例:

 

 

 2.常量池

常量池分为三种:全局字符串常量池,class文件常量池,运行时常量池

1.全局字符串常量池

全局字符串常量池中存放的内容时在类加载完成后存到String Pool中的,在每个JVM中只有一份

存放的是字符串常量的引用值(在堆中生成字符串对象实例)

2.class文件常量池

class常量池是在编译的时候每个class都有的,在编译阶段,存放的是常量(文本字符串,final常量等)和符号引用

3.运行时常量池

运行时常量池是在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,每个class都有一个运行时常量池

类在解析后,将符号引用替换成直接引用,与全局常量池的引用值保持一致。

例:

 

 

 “==“符号比较的是等号两边的值以及地址是否相同

str1和str2是通过一个对象创建出来的,共同处在同意常量池,所以地址也相同

而str3是新建的String对象,在一个新的常量池中,所以str3和str1的地址不同

因此在比较两个字符串值是否相同时,通常使用equals()方法。

例:

 

 

 3.String类的常用方法

char charAt(int index): 返回指定索引处的 char 值。

boolean equals(String other): 将此字符串与指定的对象比较。

boolean equalsIgnoreCase(String other):将此 String 与另一个 String 比较,不考虑大小写。

int indexOf():返回指定字符在此字符串中第一次出现处的索引。

lastIndexOf():返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。

int length(): 返回此字符串的长度。

String replace(char oldChar,char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始。

boolean endsWith(String prefix): 测试此字符串是否以指定的后缀结束

String substring(int beginIndex):返回一个新的字符串,它是此字符串的一个子字符串。

String substring(int beginIndex,int endIndex):返回一个新字符串,它是此字符串的一个子字符串。

String toLowerCase():使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

String toUpperCase():使用默认语言环境的规则将此 String 中的所有字符都转换为大写。

String trim():返回字符串的副本,忽略前导空白和尾部空白。

例:

 

以上是关于Java字符串就是Unicode字符序列的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java 将补充 unicode 字符序列化为 XML 文档

JAVA SE基础篇32.String类

如何理解Java程序使用Unicode字符集编写

StringStringBufferStringBuilder

区分 bytes str 和 unicode

5.7-全栈Java笔记:字符串String的常用方法