1.概念:
Java的字符串就是Unicode的字符序列
例如:串的“Java \ u2122”由5个的Unicode字符Ĵ,A,V,A和™
Java的没有内置的字符串类型,而是在标准的Java类库中提供了一个预定义类
2.字串:
串类的子方法可以提取一个字串
例如:String greeting =“Hello”; String s = greeting.substring(0,3); 得到“赫尔”
3.拼接:
两个字符串直接用“+”连接。
如果需要把多个字符串放在一起,用一个定界符分隔,可以使用静态加入方法:
例如:String all = String.join(“/”,“S”,“M”,“L”,“XL”); 得到“S / M / L / XL”
4.不可变字符串:
串类没有提供用于修改字符串的方法
这样做是否会降低运行效率呢?
答案:也对,也不对
创建一个新字符串的效率确实不高,但是,不可变字符串有一个优点:编译器可以让字符串共享
Java的字符串大致类似于字符*指针
例如:char * greeting =“Hello”;
C ++字符串是可修改的。
5.检测字符串是否相等:
使用等于方法
例如:s.equals(T);
在不区分大小写的情况下比较字符串使用equalsIgnoreCase方法
例如: “你好” .equalsIgnoreCase( “你好”);
不能使用==运算符检测两个字符串是否相等,这个运算符只能够确定两个字符串是否放在同一位置上
如果虚拟机始终将相同的字符串共享,就可以使用==运算符检测是否相同。但是实际上只有字符串常量是共享的,而+或子串等操作的结果并不是共享的。
和Ç语言中的的strcmp函数完全类似的比较字符串的java的方法是的compareTo
例如:如果(greeting.compareTo( “你好”)== 0)......
6.空串和空串:
空串 “” 是长度为0的字符串
空串是个Java的对象,有自己的长度(0)和内容(空)
空串表示目前没有任何对象与该变量关联
7.码点和代码单元:
Java的字符串由字符值序列组成
长度方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量
例如:String greeting =“Hello”; int n = greeting.length(); //是5。
要想得到实际的长度,即码点数量,可以调用:
int cpCount = greeting.codePointCount(0,greeting.length());
调用s.charAt(n)将返回位置n的代码单元,n介于0〜s.length() - 1之间
例如:char first = greeting.charAt(0); //是'H'
要想得到第我个码点,应该使用下面语句
int index = greeting.offsetByCodePoints(0,i);
int cp = greeting.codePointAt(index);
将一个字符串转换为一个码点数组
int [] codePoints = str.codePoint()。toArray();
反之
String str = new String(codePoints,0,codePoints.length);