廢話不多說,直接上代碼。
package com.coshaho.learn; /** * * OperatorLearn.java Create on 2016-11-13 下午8:38:15 * * 類功能說明: 深入理解++操作符 * * Copyright: Copyright(c) 2013 * Company: COSHAHO * @Version 1.0 * @Author coshaho */ public class OperatorLearn { // 一元操作符,賦值操作符,三目操作符從右向左運算,其他操作符從左向右運算 // ++x步驟:1.返回x+1;2.執行x = x + 1; // x++步驟:1.返回x;2.執行x = x + 1; public static void main(String[] args) { int x = 1; // 步驟1. 計算y(默認值0); // 步驟2. (x++)返回x值給臨時變量c,為1; // 步驟3. x = x + 1,x為2; // 步驟4. 計算x,x為2; // 步驟5. y = 臨時變量c + 2 = 1 + 2 = 3. int y = (x++) + x; System.out.println("x = " + x); System.out.println("y = " + y); x = 1; // 步驟1. 計算y(默認值0); // 步驟2. (++x)返回x+1值給臨時變量c,為2; // 步驟3. x = x + 1,x為2; // 步驟4. 計算x,x為2; // 步驟5. y = 臨時變量c + 2 = 2 + 2 = 4. y = (++x) + x; System.out.println("x = " + x); System.out.println("y = " + y); x = 1; // 步驟1. 計算y(默認值0); // 步驟2. 計算x,為1; // 步驟3. (++x)返回x+1值給臨時變量c,為2; // 步驟4. x = x + 1,x為2; // 步驟5. y = 1 + c = 1 + 2 = 3. y = x + (++x); System.out.println("x = " + x); System.out.println("y = " + y); x = 1; // 步驟1. 計算y(默認值0); // 步驟2. 計算x,為1; // 步驟3. (x++)返回x值給臨時變量c,為1; // 步驟4. x = x + 1,x為2; // 步驟5. y = 1 + c = 1 + 1 = 2. y = x + (x++); System.out.println("x = " + x); System.out.println("y = " + y); x = 1; // 1.計算x,為1; // 2.計算(x++)返回1給臨時變量c // 3.x = x + 1,為2; // 4.計算x = 1 + c = 1 + 1 = 2; x += (x++); System.out.println("x = " + x); int[] xx = {1,3}; int i = 0; xx[i++] *= 2; System.out.println("xx[0] = " + xx[0] + ", xx[1] = " + xx[1]); xx = new int[]{1,3}; i = 0; xx[i++] = xx[i++] * 2; System.out.println("xx[0] = " + xx[0] + ", xx[1] = " + xx[1]); /** * 輸出 * x = 2 y = 3 x = 2 y = 4 x = 2 y = 3 x = 2 y = 2 x = 2 xx[0] = 2, xx[1] = 3 xx[0] = 6, xx[1] = 3 */ } }
