在我们日常的开发中,String 字符串这种数据类型会经常使用,所以我拿出一些篇幅主要来说一说关于String
的常用规则。
之前已经介绍过 Java 中的几种数据类型,那么String
是一种字符串数据类型,String
类型的变量保存的是字符串类型的数据,比如一句话,一段文字。
1. 定义字符串类型变量:
String str = "abc";
String str1 = "";
String str2 = new String("你好");
String
指定变量类型,字符串内容要用英文双引号""
包裹,如果没有内容则为空字符串。也可以使用创建对象的方式来定义字符串类型变量:String str2 = new String("你好");
String
是一种引用类型变量,不同于基本类型变量。注意String
是一个类,定义一个字符串的本质是创造一个String
类的一个对象出来,把字符串存放在对象中。因为该类型是一个类,当然可以使用String str2 = new String("你好");
调用String构造方法,来定义一个字符串。
2. 获取字符串长度
String str = "hello, world";
System.out.println(str.length());
使用str
对象的length()
方法获取字符串长度,注意:一个空格也算是一个单位长度。
output:
12
3. 格式化字符串
实际情况中,你会经常需要去按照你想要的格式来处理一些字符串,比如:想把 name
、age
、job
三个变量格式化成一个句子:我的名字叫 Arvin, 我今年 28 岁,我的职业是工程师
String name = "Arvin";
int age = 28;
String job = "工程师";
// 我的名字叫 Arvin, 我今年 28 岁,我的职业是工程师
String text = "我的名字叫 " + name + ",我今年 " + age + " 岁" + ",我的职业是" + job;
System.out.println(text);
String fromatString = "我的名字叫 %s, 我今年 %d 岁,我的职业是%s";
System.out.println(String.format(fromatString,name,age,job));
output:
我的名字叫 Arvin,我今年 28 岁,我的职业是工程师
我的名字叫 Arvin, 我今年 28 岁,我的职业是工程师
1、第一种做法是使用 +
连接各个变量,会把各个变量连接在一起,这时非String
类型变量会自动转换为字符串类型。
2、使用String
类的 format()
方法格式化字符,第一个参数是你要定义的格式化模板,后面的参数是你依次要传递的字符串变量
格式化模板中:
%s
是一个字符串占位符,会把String字符串类型的数据替换到该位置。该实例中,name
的值在格式化后会被替换到 %s
的位置。
%d
是一个数值占位符,格式化后,age
的值会被替换到该位置。
4. 字符串的比较
字符串类型变量进行比较时不能直接使用 ==
,要使用String
变量的equals()
方法。
String str = "abc";
String str1 = new String("abc");
System.out.println(str == str1);
System.out.println(str.equals(str1));
String str2 = "abcd";
if ("abc".equals(str2)) {
System.out.println("字符串 abc 和 str2 的内容相等");
} else {
System.out.println("字符串 abc 和 str2 的内容不相等");
}
输出:
false
true
字符串 abc 和 str2 的内容不相等
str == str1
是直接比较 str 和 str1 变量的值,而他们的存放的值不是我们的真实内容,是真实内容对应的引用地址。
str.equals(str1)
是比较 str 和 str1 中的真实内容。
5. 字符串查找
如果在一个字符串中需要去查找一些特定的内容,这时候我们可以使用以下查找方法
String str = "hello world, abc";
boolean b = str.contains("hello111");//str字符串是否包含"hello111"
System.out.println(b);
System.out.println(str.indexOf("abc111"));
if (str.indexOf("abc") > -1) {
}
System.out.println(str.startsWith("hello"));
System.out.println(str.endsWith("abc"));
输出:
false
-1
true
true
contains("查找内容")
: 是否包含的意思,包含则返回true
,否则返回false
.
indexOf("查找内容")
:查找内容在被查找字符串中的位置,返回数值,若不包含,则返回 -1
,否则返回具体位置。
startsWith("查找内容")
:是否以查找内容开始字符串,是则返回true
,否则返回false
endsWith("查找内容")
:字符串是否以查找内容结尾,是则返回true
,否则返回false
6. 替换字符串
String str = "abcd, hello, yeh";
String strnew = str.replace("e", "fff");
System.out.println(strnew);
输出:
abcd, hfffllo, yfffh
replace("被替换的内容","替换的内容")
7. 截取字符串
String str = "abc, hello, tom";
String str1 = str.substring(0,3);
System.out.println(str1);
System.out.println(str.substring(5));
output:
abc
hello, tom
substring(截取开始位置索引,截取结束位置索引)
substring(截取结束位置索引)
8. 去除字符串中的空格
有时候,你不想让字符串中存在空格
String str = " aba c ";
System.out.println(str);
System.out.println(str.trim());
System.out.println(str.replace(" ",""));
output:
aba c
aba c
abac
trim()
,方法可以去除字符串两端的空格,中间的空格去除不了
replace(" ","")
,可以把字符串中所有的空格替换掉。
9. 分割字符串
如果你想把一个字符串,按照某种分割方式分割成一个字符串数组,你可以这样做:
String str = "red,green,yellow,blue";
String[] colors = str.split(",");
for (String color : colors) {
System.out.println(color);
}
output
red
green
yellow
blue
split("分割点字符串")
,参数是一个分割点,实例中把,
作为一个分割点。返回一个分割后的一组字符串,也即是字符串数组。
10. 转换
实际上,你会经常遇到这种情况,想把一个数值转换为字符串,或者把字符串转为为其他基本类型。
1、基本类型转为字符串
int i = 100;
double d = 292.02;
boolean b = true;
String str = i + "";
System.out.println(str);
Boolean b1 = b;
String bs = b1.toString();
System.out.println(bs);
output
100
true
基本类型变量可以直接使用 +""
,转换为字符串。也可以使用其对应包装类实例的toString()
方法转换为字符串。
2、字符串转为基本类型
String is = "100";
int i = Integer.parseInt(is);
int sum = i + 200;
System.out.println(sum);
output
300
字符类型转为基本类型,可以使用基本类型对应的包装类实例的 parseXX()
方法,该实例中 Integer.parseInt(is)
把字符串"100"转为int
类型的100,可以进行运算。
11. StringBuffer
你已经知道,可以使用 +
连接多个变量,并转换为一个字符串类型的值。但是这种做法效率并不是很高,可以在低频次、少量连接操作使用它。如果要高频次、大量的连接字符串操作,可以使用 StringBuffer
String name = "tom";
int age = 28;
String job = "自由职业";
// tom, 28, 自由职业
StringBuffer buffer = new StringBuffer(name);
buffer.append(", ")
.append(age)
.append(", ")
.append(job);
System.out.println(buffer.toString());
output:
tom, 28, 自由职业
append()
方法用于连接字符串。可以高频次使用,效率较高。
我只是展示了关于String
字符串常用操作,当然它有很多个操作,如果用到其他方法,建议大家去查找 Java API.
如果你想学习编程,又没有太多的预算或者自学N天无果。那你可以试试我的编程私教服务:JavaWeb全栈开发一对一编程私教,属于你的编程私人教练!