這裏使用a,b解釋
<>1:b = a--
這裏是先將a值賦給b之後,然後a進行自身的--
<>2:b = --a
這裏是a值先將自己--,讓後將值賦給b
++(也就是+1)
這裏使用x,y解釋
<>1:x = ++y
這裏是先進行y++之後讓後再進行賦值y--(賦值)>b
<>2:x = y++
這裏是先將y值賦給x.然後進行自身的++
下面有一道例題:
package com.csdn.jdbcdemo.date2017_11_14;
/**
* --和++的在前和在後的區別卻別
* @author 89155
*
*/
public class AddMinusDemo {
public static void main(String[] args) {
//i--
Text();
//--i
Text2();
//i++
Text3();
//++i
Text4();
//面試題
Text5();
}
//i--
private static void Text() {
int i = 4 ;
int j = 3;
j = i--;
System.out.println("i的值是:"+i);//3
System.out.println("j的值是:"+j);//4
System.out.println("--------------");
}
//--i
private static void Text2() {
int i = 3 ;
int j = 4;
j = --i;
System.out.println("i的值是:"+i);//2
System.out.println("j的值是:"+j);//2
System.out.println("--------------");
}
//i++
private static void Text3() {
int i = 1 ;
int j = 1;
j = i++;
System.out.println("i的值是:"+i);//2
System.out.println("j的值是:"+j);//1
System.out.println("--------------");
}
//++i
private static void Text4() {
int i = 1 ;
int j = 1;
j = ++i;
System.out.println("i的值是:"+i);//2
System.out.println("j的值是:"+j);//2
}
//面試題
private static void Text5() {
int i = 2;
int j = 1;
if(i == (++j) && (j++)==i){
i+=j;
}else{
i+=j;
}
/*
* 最後輸入的結果到到底是4?還是5?
* 很多人存在疑問
* 先說&&左邊
* i = 2 j = 2這個沒有多少疑問
* 可以理解爲加入引入第三個變量理解
* (++j) -->可以理解爲 k=++j;所以爲j=2
*
* &&讓後就是右邊了
* 照樣可以引入第三方變量理解
* (j++)-->k=j++,是將值先給k和i作比較.做完比較之後
* 下面的運算開始.那個時候j的值變爲了3
* 可以將上面的代碼多理解就可以了
*
*/
System.out.println("結果爲:"+i);//5
}
}