Java初学之字符串
Java初学之字符串
从概念上讲, Java字符串就是Unicode字符序列。例如,串Java\u2122由5 个
Unicode 字符J、a、v、a 和™。
Java 没有内置的字符串类型, 而是在标准Java 类库中提供了一个预定义类, 很自然地叫做String。每个用双引号括起来的字符串都是String 类的一个实
例:
String e = ""; // 空字符串
String greeting = "Hello";
子串
String类的substring方法可以从一个较大的字符串提取出一个子串
String greeting = "Hello";
String s = greeting.substring(0, 3); //Hel
- 左开右闭
拼接
使用+号就行拼接
-
字符串和字符串拼接
String greeting = "Hello"; String thing = "world"; String first_sen = greeting + thing; //Helloworld -
字符串和非字符进行拼接
int num = 5; String thing = "world"; String first_sen = num + thing; //5world-
通常用在输出语句中
System.out.println("The answer is " + answer) ;
-
-
采用
String.join可使用分隔符分割String all = String.join(" / ", "S", "M", "L", "XL"); // 结果为S / M / L / XL
不可变字符串
在Java 文档中将String类对象称为不可变字符串
检测字符串是否相等
可以使用equals方法检测两个字符串是否相等
s.equals(t)
-
不区分大小写,判断字符串是否相等,使用
equalsIgnoreCase -
一定不要使用==运算符检测两个字符串是否相等! 这个运算符只能够确定两个字串是否放置在同一个位置上。
空串和Null串
空串"" 是长度为0的字符串,可以调用以下代码检查一个字符串是否为空:
if (str.length() == 0)
// 或者
if (str.equals(""))
- 空串是一个Java 对象, 有自己的串长度( 0 ) 和内容(空)。
String变量还可以存放一个特殊的值,名为null ,这表示目前没有任何对象与该变量关联,要检查一个字符串是否为null , 要使用以下条件:
if (str == null)
-
如果需要检查一个字符串既不是null 也不为空串,这种情况下就需要使用以下条件:
if (str != null && str.length() != 0)- 首先要检查
str不为null。如果在一个null值上调用方法,会出现错误。
- 首先要检查
码点与代码单元
-
Java 字符串由char值序列组成。
-
char 数据类型是一个采用UTF-16 编码表示Unicode 码点的代码单元。
-
大多数的常用Unicode 字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
-
length方法将返回采用UTF-16 编码表示的给定字符串所需要的代码单元数量。String greeting = "Hello"; int n = greeting.length(); // is 5 -
要想得到实际的长度,即码点数量,可以调用:
int cpCount = greeting.codePointCount(0, greeting.length()); // 5 -
调用
s.charAt(n)将返回位置n的代码单元,n 介于0 ~ s.length()-1之间。例如:char first = greeting.charAt(0); // first is 'H' char last = greeting.charAt(4) ; // last is ’o’ -
要想得到第i 个码点,应该使用下列语句
int index = greeting.offsetByCodePoints(0, 2); int cp = greeting.codePointAt(index) ; //108
String API
| API | 说明 |
|---|---|
| char charAt(int index) | |
待续更新
构建字符串
有些时候, 需要由较短的字符串构建字符串, 例如, 按键或来自文件中的单词。采用字符串连接的方式达到此目的效率比较低。每次连接字符串,都会构建一个新的String对象,既耗时,又浪费空间。使用StringBuilder类就可以避免这个问题的发生。
如果需要用许多小段的字符串构建一个字符串, 那么应该按照下列步骤进行。首先, 构建一个空的字符串构建器:
StringBuilder builder = new StringBuilder();
当每次需要添加一部分内容时, 就调用append方法。
builder.append('a'); // appends a single character
builder.append("hahaha"); // appends a string
在需要构建字符串时就凋用toString方法, 将可以得到一个String对象, 其中包含了构建器中的字符序列。
String completedString = builder.toString(); // ahahaha
-
重要的API
-
StringBuilder()
构造一个空的字符串构建器。
-
int length()
返回构建器或缓冲器中的代码单元数量。 -
StringBuilder append(String str)
追加一个字符串并返回this。 -
StringBuilder append(char c)
追加一个代码单元并返回this。 -
StringBuilder appendCodePoint(int cp)
追加一个代码点,并将其转换为一个或两个代码单元并返回this。 -
void setCharAt(int i ,char c)
将第i 个代码单元设置为c。 -
StringBuilder insert(int offset,String str)
在offset位置插入一个字符串并返回this。 -
StringBuilder insert(int offset,Char c)
在offset 位置插入一个代码单元并返回this。 -
StringBuilder delete(int startIndex,int endIndex)
删除偏移量从startIndex到-endIndex-1 的代码单元并返回this。 -
String toString()
返回一个与构建器或缓冲器内容相同的字符串
-

浙公网安备 33010602011771号