運算符:邏輯運算、賦值、位運算與三元運算
尚硅谷JavaSE筆記-03

運算符

image-20211210202428227

加減乘除

基本都一樣不再贅述

% 取餘的規則

  • 結果的符號與被取餘的數符號相同,舉例-12%5=-212%-5=2-12%-5=-2
  • 實際開發中取餘常用來判斷是否能除盡

自增自減的規則

  • ++a,(前++)先運算後取值,舉例a=2;b=++a;結果a=3;b=3
  • a++,先取值後運算,舉例a=2;b=a++;結果a=3;b=2
  • --a,先運算後取值,舉例a=2;b=--a;結果a=1;b=1
  • a--,先取值後運算,舉例a=2;b=a--;結果a=1;b=2
  • 自增減不會改變數據類型(但可能會溢位)
  • 不可連用,舉例a++++會報錯

另外+也能用在字符串聯接,舉例"he"+"llo"="hello"

= 賦值的規則

  • 可以連續賦值,舉例int i1,i2; i1=i2=10; int i3=10,j3=20;
  • +=-=*=/=%= 不會改變數據類型
  • 面試題n=10; n+=(n++)+(++n); n=?
  • 解: 拆成 n = n + 10 + 12 =32
  • ==則是比較運算符,返回boolean

邏輯運算符

image-20211210202649381

  • 乍看邏輯跟短路結果是一樣,實際使用上差異為短路後的東西就不執行了
  • 舉例: b=false; n=10; b && (n++>0)=false,但n=10

位運算符

image-20211210202716421

  • 操作的都是整數
  • « 向左移一位相當於*2,»向右移一位相當於/2,有可能溢位

image-20211210202744845

三元運算符

image-20211210202847702

  • 結構: (條件表達式) ? 表達式1 : 表達式2
  • 說明: 條件表達式=boolean,如果是true則執行表達式1,反之執行2
  • 表達式1 與 表達式2 要求類型一致(至少能裝進同一個類型)
  • 其實就是簡易版的if,可以嵌套使用

優先級

image-20211210202908276

  • 基本原則是從上到下,從左到右,括號優先
  • 自增減、賦值運算、三元運算才從右往左看

上次修改於 2021-11-18