【Java学习笔记】(二)字符串(多图)
文章来自我的博客
正文之前
字符串(String),是由零个或多个字符组成的有限序列。一般记为 s = a1a2...an(0 ≤ n ≤ ∞)它是编程语言中表示文本的数据类型
——Wikipedia
本文将会介绍:
Java字符串基本概念
字符串基本操作
正文
Java字符串基本概念
- String类
- 字符串不可变性
- Java并没有内置的字符串类型,字符串由 String 类库提供(每个双引号的内容都是字符串的一个实例)
- Java字符串是 不可变 的,任何看似改变字符串的操作其实都是创建一个 新的 字符串
substring() 方法将在下文介绍,此处代码含义:
生成字符串 s1 :Hello ,截取字符串,此处所得到的字符串是新生成的,并没有在 s1 直接改变
将字符串作为方法的参数时,都会自动复制一份引用,将 s1 拷贝至 s2 时,只是传递一个复制的引用,将 s2 改变时,其实只是改变了 s2 复制的引用
关于字符串的不变性,一定要牢记在心!
字符串基本操作
- 子串
- 字符串比较
- 字符串分割
- 字符串拼接
- 字符串转换
1. 子串
在Java中,用 substring() 来生成一个字串,先看看官方的API:
substring(0,2)表示截取位置从0到2的字符(不包括2),并生成子串
substring(2)表示从截取位置从2到字符串末尾的字符,并生成子串(substring(0)所生成的字符串的内容和原字符串相同)
2. 字符串比较
- 关于字符串,比较方式有两种:
- equals()方法
- 等号比较(==)
equals()方法:
- equals()方法比较的是两个字符串的内容是否相同:
- equalsIgnoreCase()是一种特殊的比较方式:忽略大小写
- compareTo()方法也是比较的一种:
返回值为 int 类型:第一个字符串长度减去第二个字符串长度
等号比较(==) :
直接用等号比较:比较的是两个字符串的位置,千万不要用等号来比较两个字符串的内容(或许很多内容相同的字符串的拷贝将分布在不同位置)
经过一系列操作后,虽然 s1 和 s2 内容相同,但是位置却不同了:
3. 字符串分割:
split(String regex)将参数作为分割元素,划分字符串,生成多个子串,并存放于数组内:
split(String regex, int limit)表示了另一种分割字符串的方法,参数limit作为存放子串的数组的最大空间:
-
limit > 0:数组的大小为limit的值,字符串切分的次数为limit的值,不管是否按要求完成切分
-
limit < 0:数组的大小为任意,字符串切分的次数为任意,直到将字符串按要求完成切分
-
limit = 0:数组的大小为任意,字符串切分的次数为任意,直到将字符串按要求完成切分,并将数组末尾的空字符串删去
public static void main(String[] args){
String s1 = "1oo:2:3:4:5oo";
String[] s2 = s1.split("o",2);
String[] s3 = s1.split("o",0);
String[] s4 = s1.split("o",-2);
for (String i: s2) {
if(i.equals("")){
System.out.println("this is an empty string"); //显示出空字符串
}
System.out.println(i);
}
System.out.println("--------------------");
System.out.println();
for (String i: s3) {
if(i.equals("")){
System.out.println("this is an empty string"); //显示出空字符串
}
System.out.println(i);
}
System.out.println("--------------------");
System.out.println();
for (String i: s4) {
if(i.equals("")){
System.out.println("this is an empty string"); //显示出空字符串
}
System.out.println(i);
}
System.out.println("--------------------");
}
4. 字符串拼接
- 关于字符串的拼接,有3种方式:
- 重载操作符(+)
- StringBuffer.append()方法
- String.concat()方法
重载操作符(+):
将操作符中的加号(+)重载之后可作为字符串连接的方式
StringBuffer.append()方法
StringBuffer为可变长度的,可以一直扩容,如果在字符串经常改变的情况下,使用StringBuffer是更为合适的
String.concat()方法
由于concat()方法返回String类型,所以可以一直拼接,在这次拼接中,总共生成了 4 个字符串
5. 字符串转换
有时需要在Integer类型和String类型之间互相转换,接下来说说这几种方法:
Integer -> String :
String.valueOf(int i)
Integer.toString(int i)
String -> Integer
Integer.parseInt(String s)
Integer.valueOf(String s)
Integer -> String
String -> Integer
关于字符串的基本知识就到这里啦!