在java語(yǔ)言中所有的字符串都使用半角雙引號(hào)括起來(lái)的,字符串屬于引用數(shù)據(jù)類型,不屬于基本數(shù)據(jù)類型的范疇,怎么定義一個(gè)字符串的變量呢?例如:String name = “jack”;,這就類似于int i = 10;是一樣的,int是一種整數(shù)類型,i是變量,10是整數(shù)型字面量。那么String則是一種字符串類型,name是變量,”jack”是字符串型字面量。在java編程中對(duì)字符串的操作是非常頻繁的,例如字符串的連接操作,此時(shí)就需要使用“+”字符串連接運(yùn)算符了。
實(shí)際上“+”運(yùn)算符在java語(yǔ)言中有兩個(gè)作用,作用一是對(duì)數(shù)字進(jìn)行求和運(yùn)算,作用二就是字符串連接運(yùn)算,那么它在什么時(shí)候是進(jìn)行求和,什么時(shí)候又進(jìn)行字符串連接呢?大家可以這樣進(jìn)行區(qū)分,當(dāng)“+”運(yùn)算的時(shí)候,兩邊的操作數(shù)都是數(shù)字的話,一定會(huì)進(jìn)行求和運(yùn)算,只要其中有一個(gè)操作數(shù)是字符串類型,那么一定會(huì)進(jìn)行字符串拼接運(yùn)算,字符串拼接之后的結(jié)果還是字符串類型。需要注意的是,當(dāng)一個(gè)表達(dá)式當(dāng)中有多個(gè)“+”,并且在沒(méi)有小括號(hào)的前提下,遵循自左向右的順序依次執(zhí)行。我們來(lái)看一段程序:
public class PlusTest01 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//加號(hào)兩邊都是int類型,執(zhí)行求和運(yùn)算
int c = a + b;
/*
* 以下代碼雖然有兩個(gè)加號(hào),第一個(gè)加號(hào)在雙引號(hào)當(dāng)中,
* 不起任何作用,只是一個(gè)普通字符串,第二個(gè)加號(hào)由于
* 左邊操作數(shù)是一個(gè)字符串,所以這個(gè)加號(hào)一定會(huì)進(jìn)行
* 字符串連接,連接之后的結(jié)果還是一個(gè)字符串。
*/
System.out.println("a + b = " + c); //a + b = 30
//分析以下程序的輸出結(jié)果?哪些加號(hào)進(jìn)行求和,哪些加號(hào)進(jìn)行字符串連接
System.out.println(a + " + " + b + " = " + a + b);
//分析以下程序的輸出結(jié)果?哪些加號(hào)進(jìn)行求和,哪些加號(hào)進(jìn)行字符串連接
System.out.println(a + " + " + b + " = " + (a + b));
//定義一個(gè)字符串類型變量
String name = "jack";
/*
* 字符串拼接在實(shí)際開(kāi)發(fā)中很常用,拼接的時(shí)候是有口訣,大家記住,
* 將變量放到字符串當(dāng)中進(jìn)行拼接,可以這樣做:1、在拼接的位置添加
* 一個(gè)英文雙引號(hào);2、在雙引號(hào)中間添加兩個(gè)加號(hào);3、把字符串變量放到
* 兩個(gè)加號(hào)中間。
*/
System.out.println("登錄成功,歡迎" + name + "回來(lái)!");
}
}
對(duì)于程序System.out.println(a + " + " + b + " = " + a + b);的分析見(jiàn)下圖:
圖5-2:字符串連接運(yùn)算
對(duì)于程序System.out.println(a + " + " + b + " = " + (a + b));的分析見(jiàn)下圖:
圖5-3:字符串連接運(yùn)算
總之,使用“+”進(jìn)行字符串拼接在開(kāi)發(fā)中使用太頻繁了,大家一定要將其掌握,尤其是怎么將一個(gè)變量放到字符串當(dāng)中,你還記得以上程序的口訣嗎?
其它運(yùn)算符instanceof、new等在講Java面向?qū)ο髢?nèi)容的時(shí)候一定會(huì)用到,到那時(shí)候再詳細(xì)學(xué)習(xí)。