天天看點

Java基礎知識——算術操作符、自增自減、關系操作符,你真的了解嗎?

Java基礎知識——算術操作符、自增自減、關系操作符,你真的了解嗎?

三人行,必有我師焉。歡迎大家加我的微信 yh18482155461,或掃描下方二維碼,關注我的微信公衆号,共同探讨Java相關技術問題。

溫故知新

上一節我們講到了Java中的指派操作符,用案例的方式講解了指派操作符的使用方式,以及其作用于基本資料類型和引用資料類型的不同效果。請回答一下幾個問題:

  1. 指派表達式的左值和右值分别需要符合什麼規則?
  2. 指派操作符作用于基本資料類型和作用于引用資料類型有什麼異同?

如果發現有回答不上的問題,請回顧上節内容!如果還不懂,請直接@我!

更上一層樓

今天我們主要講解以下内容哦!!!

  1. 算術操作符
  2. 自增自減操作符
  3. 關系操作符

算術操作符

基本算術操作符

Java中的基本算術操作符主要包括加号(+)、減号(-)、乘号(*)、除号(/)和取模(%)運算。

運算示例

public class Operation {
    public static void main(String [] args) {
        int a = 10;
        int b = 5;
        int c = a + b;
        int d = a - b;
        int e = a / b;
        int f = a * b;
        int g = 3 % 2;
        System.out.println("c="+c+";d="+d+";e="+e+";f="+f+";g="+g);
    }
}
//output
//c=15;d=5;e=2;f=50;g=1
//+-*/相對簡單,就不多叙述了;重點是取模運算(%),也叫做取餘運算
//即取整除之後的餘數
           
組合操作符

在Java中可以把操作符和指派操作符合并為一個操作符,如

+=

-=

*=

/=

等;在這裡我們主要舉例基本算術操作符和指派操作符的組合使用。

Java中所有的操作符都可以與指派操作符搭配,隻要其有實際意義就行

運算示例

public class Operation {
    public static void main(String [] args) {
        int a = 10;
        //相當于 a = a + 5
        int a += 5;
        System.out.println(a);
        //相當于 a = a - 5
        int a -= 5;
        System.out.println(a);
        //相當于 a = a * 5
        int a *= 5;
        System.out.println(a);
        //相當于 a = a / 5
        int a /= 5;
        System.out.println(a);
    }
}
//output
//15
//5
//50
//2
           
加減算術操作符的特殊用法

+、-算術操作符,既可以作為一進制操作符,也可以作為二進制操作符(元的概念,幾元指有幾個值參與了操作!)

一進制減号操作符的作用是轉變資料的符号,如 1 => -1;而一進制加号操作符的作用是将較小類型的操作數提升為int類型,如把一個short數提升為int類型。

自增自減操作符

Java提供了大量的快捷運算操作符。其中,自增和自減操作符是日常中用的比較多的。

自增操作符

用符号

++

表示,

自減操作符

用符号

--

表示。

自增自減操作符有兩種使用方式(假設我們有一個變量a):

  1. 字首式:

    ++a

    ,其表示先執行運算,再生成變量的值作為結果。
  2. 字尾式:

    --a

    ,其表示先生成變量的值作為結果,再進行運算。

運算示例

public class Operation {
    public static void main(String [] args) {
        int a = 5;
        //相當于 a = a + 1
        System.out.println(a++);
        //相當于 a = a + 1
        System.out.println(++a);
    }
}
//output
//5
//6
//可能會有同學疑惑,為什麼結果是這樣的呢?
//a++,表示先生成變量的值作為結果,再進行運算
//是以傳回的是沒進行運算前的值
//是以是5
//++a,表示先進行運算,再生成變量的值作為結果
//是以傳回的是進行運算之後的值
//是以是6
           

關系操作符

關系操作符是判斷兩個值或者說兩個對象之間關系的操作符,其傳回一個boolean結果。關系操作符包括

>

<

>=

<=

==

!=

==

!=

适用于所有的基本資料類型,而

其他操作符不适用于boolean類型

運算示例

public class Operation {
    public static void main(String [] args) {
        int a = 10;
        int b = 5;
        System.out.println("a>b:"+(a>b));
        System.out.println("a<b:"+(a<b));
        System.out.println("a>=b:"+(a>=b));
        System.out.println("a<=b:"+(a<=b));
        System.out.println("a!=b:"+(a!=b));
        System.out.println("a==b:"+(a==b));
    }
}
//output
//a>b:true
//a<b:false
//a>=b:true
//a<=b:false
//a!=b:true
//a==b:false
           
==操作符到底在比較什麼?

請看以下例子:

public class Operation {
    public static void main(String [] args) {
        Integer i1 = new Integer(10);
        Integer i2 = new Integer(10);
        Value v1 = new Value();
        Value v2 = new Value();
        v1.i = v2.i = 10;
        System.out.println("i1 == i2?" + i1 == i2);
        System.out.println("i1 != i2?" + i1 != i2);
        System.out.println("i1.equals(i2)?" + i1.equals(i2));
        System.out.println("v1 == v2?" + v1 == v2);
        System.out.println("i1.equals(i2)?" + i1.equals(i2));
    }

    class Value {
        int i;
        public void setI(int i) {
            this.i = i;
        }
        public int getI() {
            return this.i;
        }
    }
}
//output
//i1 == i2?false
//i1 != i2?true
//i1.equals(i2)?true
//v1 == v2?false
//i1.equals(i2)?false
           

在對以上案例的答案進行解讀之前,我們需要先清楚一個知識點:

==操作符和!=操作符比較基本資料類型時比較的是值,而比較對象時比較的是對象的引用

。是以對于前兩個輸出,我們可以了解了,因為通過

new

操作符獲得的Integer對象,在記憶體中都有各自的實體位址,是以他們的引用是不同的(引用實際放的就是實體位址)。

那麼如何比較兩個對象的實際内容是否相等呢?

所有的對象都有equals方法,可用于比較對象的實際内容是否相等

。但是這個方法不适用于基本資料類型。

那麼我們就可以了解,第三個輸出,由于i1和i2的值都是10,是以他們通過equals方法比較出來是相等的。但是為什麼第四、第五個輸出又是false呢?

因為equals方法預設比較的實際還是對象的引用,除非我們重寫該方法,并重新定義其實作

。很顯然,Integer這個類中,重寫了該方法。

時時回顧

今天我們主要講解了Java中的算術運算符、自增自減操作符和關系操作符。這些操作符在我們日後的生活中經常用到,是以務必牢牢掌握!

如果覺得我寫的内容對你有幫助,可以關注我的微信公衆号,和我一起進步!

posted on 2019-03-06 00:08 Lurker潛行者 閱讀(...) 評論(...) 編輯 收藏