- 好好學Java:從零基礎到項目實戰
- 歐陽燊
- 1235字
- 2022-07-27 19:14:51
2.2.2 賦值運算符
前面的加減乘除四則運算的計算結果通過等號輸出給指定變量,注意此時代碼把變量放到等號左邊。而在算術課本里,加法運算的完整寫法類似于“1+1=2”這樣,運算結果應該跟在等號右邊。不過代數課本里的方程式存在“x=y+1”的寫法,表示等號兩邊的結果數值是一樣的,因此變量放在等號左邊也是可以理解的。然而Java編程里的“=”并非數學上相等的意思,而是一種賦值操作。所謂“賦值”,指的是將某一數值賦給某個變量的過程。計算機程序在運行的時候,無論操作什么類型的數據,都要有個地方保存運算前后的數值。變量在參與計算的時候,它可能存在多種身份,當變量作為運算過程的操作數時,它保存的是運算前的數值;當變量作為運算結果的結果數時,它保存的是運算后的數值。故而等號兩邊同時出現某個變量是完全正常的,就像下面的代碼演示的那樣:
// 數學中的加法例子是:1+1=2,運算結果在右邊。但Java編程中是把運算結果放在左邊的 int x=1+1; // 注意這里的等號是賦值操作,并非代數方程式里面的等號,否則x=x+7將會求得0=7的荒誕結果 x=x+7;
注意上述演示代碼里的“x=x+7”,等號的左右兩邊雖然都出現了整型變量x,但是這兩個x所處的時間點不同,使得它們代表的數值也不一樣。等號右邊的x保存的是運算開始前的變量值,即2;而等號左邊的x保存的是運算結束后的數值,即9。所以前面的代碼看似代數方程式,其實表示的是一個存在時間先后概念的賦值語句。
就賦值語句“x=x+7”而言,盡管它從數學角度來看很是無理,可是在計算機編程中卻十分常見。該語句僅僅要求給某個整型變量加上若干數值,并未涉及其他變量,好比某人的背包里原本裝了3本書,然后往里面塞兩本書,最終背包一共裝了5本書。由于這種加法運算只對某個變量進行,因此Java又提供了“+=”運算符來簡化變量的自增操作,新運算符的使用示例如下:
// 對變量做加法運算后,假如相加之和仍然保存在原變量中,那么可按如下格式使用運算符“+=” x += 7; // 該行代碼等同于 x=x+7; System.out.println("相加之和 x="+x);
既然有“+=”開了一個自增運算的頭,那么其他的四則運算以此類推,可分別演變出自減運算符“-=”、自乘運算符“*=”、自除運算符“/=”以及對變量自身取余數的運算符“%=”,相應的例子代碼如下(完整代碼見本章源碼的src\com\arithmetic\operator\Assign.java):
// 運算符“-=”的作用類似于“+=”,即把相減之差保存到原變量中 x -= 7; // 該行代碼等同于 x=x-7; System.out.println("相減之差 x="+x); // 若要將相乘之積保存到原變量中,則可使用運算符“*=” x *= 7; // 該行代碼等同于 x=x*7; System.out.println("相乘之積 x="+x); // 若要將相除之商保存到原變量中,則可使用運算符“/=” x /= 7; // 該行代碼等同于 x=x/7; System.out.println("相除之商 x="+x); // 若要將相除之余數保存到原變量中,則可使用運算符“%=” x %= 7; // 該行代碼等同于 x=x%7; System.out.println("相除之余數 x="+x);
推而廣之,凡是對變量自身開展某種基礎運算,然后運算結果又保存在該變量中,這些情況都適用于擴展了的賦值語句。譬如之前提到的按位左移操作符“<<”和按位右移操作符“>>”,均可演化出對應的自身左移運算符“<<=”和自身右移運算符“>>=”,這兩個運算符的演示代碼如下:
// 若要將按位左移結果保存到原變量中,則可使用運算符“<<=” x <<= 2; // 該行代碼等同于 x=x << 2; System.out.println("x按位左移兩位="+x); // 若要將按位右移結果保存到原變量中,則可使用運算符“>>=” x >>= 2; // 該行代碼等同于 x=x >> 2; System.out.println("x按位右移兩位="+x);
- 程序員面試筆試寶典(第3版)
- MySQL 8從入門到精通(視頻教學版)
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- 區塊鏈:以太坊DApp開發實戰
- LabVIEW虛擬儀器入門與測控應用100例
- Mastering Docker
- H5+移動營銷設計寶典
- C#程序設計基礎入門教程
- Web開發的平民英雄:PHP+MySQL
- 面向對象程序設計及C++(第3版)
- Python Social Media Analytics
- 3D Printing Designs:Octopus Pencil Holder
- PHP動態網站開發實踐教程
- Developing Java Applications with Spring and Spring Boot
- Mastering VMware vSphere Storage