在我們?nèi)粘5拈_發(fā)中,String 字符串這種數(shù)據(jù)類型會經(jīng)常使用,所以我拿出一些篇幅主要來說一說關(guān)于String
的常用規(guī)則。
之前已經(jīng)介紹過 Java 中的幾種數(shù)據(jù)類型,那么String
是一種字符串?dāng)?shù)據(jù)類型,String
類型的變量保存的是字符串類型的數(shù)據(jù),比如一句話,一段文字。
1. 定義字符串類型變量:
String str = "abc";
String str1 = "";
String str2 = new String("你好");
String
指定變量類型,字符串內(nèi)容要用英文雙引號""
包裹,如果沒有內(nèi)容則為空字符串。也可以使用創(chuàng)建對象的方式來定義字符串類型變量:String str2 = new String("你好");
String
是一種引用類型變量,不同于基本類型變量。注意String
是一個類,定義一個字符串的本質(zhì)是創(chuàng)造一個String
類的一個對象出來,把字符串存放在對象中。因?yàn)樵擃愋褪且粋€類,當(dāng)然可以使用String str2 = new String("你好");
調(diào)用String構(gòu)造方法,來定義一個字符串。
2. 獲取字符串長度
String str = "hello, world";
System.out.println(str.length());
使用str
對象的length()
方法獲取字符串長度,注意:一個空格也算是一個單位長度。
output:
12
3. 格式化字符串
實(shí)際情況中,你會經(jīng)常需要去按照你想要的格式來處理一些字符串,比如:想把 name
、age
、job
三個變量格式化成一個句子:我的名字叫 Arvin, 我今年 28 歲,我的職業(yè)是工程師
String name = "Arvin";
int age = 28;
String job = "工程師";
// 我的名字叫 Arvin, 我今年 28 歲,我的職業(yè)是工程師
String text = "我的名字叫 " + name + ",我今年 " + age + " 歲" + ",我的職業(yè)是" + job;
System.out.println(text);
String fromatString = "我的名字叫 %s, 我今年 %d 歲,我的職業(yè)是%s";
System.out.println(String.format(fromatString,name,age,job));
output:
我的名字叫 Arvin,我今年 28 歲,我的職業(yè)是工程師
我的名字叫 Arvin, 我今年 28 歲,我的職業(yè)是工程師
1、第一種做法是使用 +
連接各個變量,會把各個變量連接在一起,這時非String
類型變量會自動轉(zhuǎn)換為字符串類型。
2、使用String
類的 format()
方法格式化字符,第一個參數(shù)是你要定義的格式化模板,后面的參數(shù)是你依次要傳遞的字符串變量
格式化模板中:
%s
是一個字符串占位符,會把String字符串類型的數(shù)據(jù)替換到該位置。該實(shí)例中,name
的值在格式化后會被替換到 %s
的位置。
%d
是一個數(shù)值占位符,格式化后,age
的值會被替換到該位置。
4. 字符串的比較
字符串類型變量進(jìn)行比較時不能直接使用 ==
,要使用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 的內(nèi)容相等");
} else {
System.out.println("字符串 abc 和 str2 的內(nèi)容不相等");
}
輸出:
false
true
字符串 abc 和 str2 的內(nèi)容不相等
str == str1
是直接比較 str 和 str1 變量的值,而他們的存放的值不是我們的真實(shí)內(nèi)容,是真實(shí)內(nèi)容對應(yīng)的引用地址。
str.equals(str1)
是比較 str 和 str1 中的真實(shí)內(nèi)容。
5. 字符串查找
如果在一個字符串中需要去查找一些特定的內(nèi)容,這時候我們可以使用以下查找方法
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("查找內(nèi)容")
: 是否包含的意思,包含則返回true
,否則返回false
.
indexOf("查找內(nèi)容")
:查找內(nèi)容在被查找字符串中的位置,返回?cái)?shù)值,若不包含,則返回 -1
,否則返回具體位置。
startsWith("查找內(nèi)容")
:是否以查找內(nèi)容開始字符串,是則返回true
,否則返回false
endsWith("查找內(nèi)容")
:字符串是否以查找內(nèi)容結(jié)尾,是則返回true
,否則返回false
6. 替換字符串
String str = "abcd, hello, yeh";
String strnew = str.replace("e", "fff");
System.out.println(strnew);
輸出:
abcd, hfffllo, yfffh
replace("被替換的內(nèi)容","替換的內(nèi)容")
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(截取開始位置索引,截取結(jié)束位置索引)
substring(截取結(jié)束位置索引)
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. 分割字符串
如果你想把一個字符串,按照某種分割方式分割成一個字符串?dāng)?shù)組,你可以這樣做:
String str = "red,green,yellow,blue";
String[] colors = str.split(",");
for (String color : colors) {
System.out.println(color);
}
output
red
green
yellow
blue
split("分割點(diǎn)字符串")
,參數(shù)是一個分割點(diǎn),實(shí)例中把,
作為一個分割點(diǎn)。返回一個分割后的一組字符串,也即是字符串?dāng)?shù)組。
10. 轉(zhuǎn)換
實(shí)際上,你會經(jīng)常遇到這種情況,想把一個數(shù)值轉(zhuǎn)換為字符串,或者把字符串轉(zhuǎn)為為其他基本類型。
1、基本類型轉(zhuǎn)為字符串
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
基本類型變量可以直接使用 +""
,轉(zhuǎn)換為字符串。也可以使用其對應(yīng)包裝類實(shí)例的toString()
方法轉(zhuǎn)換為字符串。
2、字符串轉(zhuǎn)為基本類型
String is = "100";
int i = Integer.parseInt(is);
int sum = i + 200;
System.out.println(sum);
output
300
字符類型轉(zhuǎn)為基本類型,可以使用基本類型對應(yīng)的包裝類實(shí)例的 parseXX()
方法,該實(shí)例中 Integer.parseInt(is)
把字符串"100"轉(zhuǎn)為int
類型的100,可以進(jìn)行運(yùn)算。
11. StringBuffer
你已經(jīng)知道,可以使用 +
連接多個變量,并轉(zhuǎn)換為一個字符串類型的值。但是這種做法效率并不是很高,可以在低頻次、少量連接操作使用它。如果要高頻次、大量的連接字符串操作,可以使用 StringBuffer
String name = "tom";
int age = 28;
String job = "自由職業(yè)";
// tom, 28, 自由職業(yè)
StringBuffer buffer = new StringBuffer(name);
buffer.append(", ")
.append(age)
.append(", ")
.append(job);
System.out.println(buffer.toString());
output:
tom, 28, 自由職業(yè)
append()
方法用于連接字符串??梢愿哳l次使用,效率較高。
我只是展示了關(guān)于String
字符串常用操作,當(dāng)然它有很多個操作,如果用到其他方法,建議大家去查找 Java API.
如果你想學(xué)習(xí)編程,又沒有太多的預(yù)算或者自學(xué)N天無果。那你可以試試我的編程私教服務(wù):JavaWeb全棧開發(fā)一對一編程私教,屬于你的編程私人教練!