官术网_书友最值得收藏!

2.5.5 賦值運算符

賦值運算符就是將常量、變量、表達式的值賦給某一個變量或對象,賦值表達式由變量、賦值運算符和表達式組成。賦值運算符包括“=”賦值運算符和擴展賦值運算符兩種。Java中的賦值運算符和使用示例,如表2.8所示。

表2.8 賦值運算符

賦值語句的結果是將右側的值(或表達式結果)賦給左邊的變量。變量在進行普通賦值時,如果賦值運算符兩側的類型彼此不一致,或者左邊類型取值范圍小于右邊類型時,需要進行自動或強制類型轉換。也就是說,變量從占用內存較少的短數據類型轉換為占用內存較多的長數據類型時,會自動進行隱式轉換;而將變量從較長的數據類型轉換為較短的數據類型時,則必須進行強制類型轉換,也就是采用“(類型)表達式”。賦值運算符也可以采取右端表達式繼續賦值的方式,形成連續賦值的情況,但是一般不建議使用該方式進行賦值,會降低程序的可讀性。賦值運算符的使用示例如下:

    int n = 5;      // 聲明并賦值
    int a, b, c;    // 連續聲明
    a = b = c = 5;    // 多個變量同時賦值,表達式等價于c = 5;b = c;a = b;
    int a = 1;
    byte b = 3;
    b = a + b;      // 錯誤,將int類型賦值給byte類型變量需要強制轉換
    b = (byte)(a + b);  // 正確

在賦值運算符“=”前加上其他運算符,即構成擴展賦值運算符,如a += 7等價于a = a + 7。也就是說,擴展賦值運算符是先進行某種運算之后,再對運算的結果進行賦值。擴展賦值運算符的優點是可以使程序表達簡潔,并且能提高程序的編譯速度。編譯器首先會進行運算,再將運算結果賦值給變量。具體示例如下:

    int a = 3;  // 聲明變量a
    a += 1;   // a = 4;等價于a = a + 1;
    a *= 2;   // a = 6;等價于a = a * 2;

接下來,通過案例來演示賦值運算符的使用,如例2-8所示。

【例2-8】 Demo0208.java

程序的運行結果如下:

    --------賦值運算符和賦值表達式案例--------
    a=18,b=9,c=9
    a+=c;a=27
    a-=c;a=18
    a*=c; a=162
    a/=c; a=18
    a%=c-2;a=4,c=9

例2-8中,第5行代碼使用了賦值運算符的連續賦值,先將差值賦值給b,然后再賦值給c。第8行、第10行、第12行、第14行代碼分別表示操作數a對c的相加后賦值、相減后賦值、相乘后賦值、相除后賦值。第16行代碼,先計算右側c-2,因為c的值是9,所以右側減2之后結果為7,a的值為18,對7求余,結果為4。

注意:使用賦值運算符需要注意如下兩點:

(1)要注意數據類型匹配,如boolean flag = 23就是類型不匹配,無法自動轉換。

(2)不能為運算式賦值,如“int a = 8,b = 9;a + b = 28;”,這是語法錯誤。

主站蜘蛛池模板: 时尚| 区。| 古蔺县| 什邡市| 双峰县| 古田县| 台东县| 太和县| 香港 | 博乐市| 腾冲县| 洱源县| 连山| 酒泉市| 都兰县| 伊春市| 莲花县| 鄢陵县| 南平市| 咸丰县| 故城县| 武鸣县| 和静县| 额敏县| 宁津县| 洛南县| 泾阳县| 蒙自县| 宜川县| 镇远县| 油尖旺区| 临夏市| 鄢陵县| 紫阳县| 高台县| 瑞昌市| 邓州市| 浦北县| 娄烦县| 沿河| 磴口县|