14. String

從零開始學(xué)Java封面14.jpg

在我們?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)常需要去按照你想要的格式來處理一些字符串,比如:想把 nameagejob三個變量格式化成一個句子:我的名字叫 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ā)一對一編程私教,屬于你的編程私人教練!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,949評論 18 139
  • ??引用類型的值(對象)是引用類型的一個實(shí)例。 ??在 ECMAscript 中,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,092評論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,766評論 18 399
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,906評論 0 38
  • 1月9號,微信正式上線微信小程序,業(yè)界一片沸騰。 有人認(rèn)為小程序是為手機(jī)瘦身而生,有人認(rèn)為小程序的出生是騰訊為了將...
    0316閱讀 1,029評論 0 8