【Java基礎(chǔ)筆記】2.運(yùn)算符

2、運(yùn)算符


  1. 運(yùn)算符

    運(yùn)算符是一個(gè)特殊的符號(hào)署穗,用以表示數(shù)據(jù)的運(yùn)算寥裂、賦值和比較等;

    運(yùn)算符包括以下幾種

    • 算數(shù)運(yùn)算符 +案疲、-封恰、*/褐啡、++诺舔、--%
    • 賦值運(yùn)算符=
    • 比較運(yùn)算符 ><低飒、==许昨、!=>=褥赊、<=
    • 邏輯運(yùn)算符 &&糕档、||!
    • 位運(yùn)算符&拌喉、|速那、^
    • 三元運(yùn)算符 boolean ? 1 :0

算數(shù)運(yùn)算符

class Test {
     public static void main(String[] args) {
             // 除號(hào) : /
         int num1 = 12;
         int num2 = 5;
         int result = num1 / num2;
         System.out.println(result); // 2
         
         int result2 = num1 / num2 * num2;
         System.out.println(result2); // 10
      
         double result3 = num1 / num2;
         System.out.println(result3); // 2.0 num1 / num2 得到的是一個(gè)int 2 然后自動(dòng)提升到double
         
         double result4 = num1 / num2 + 0.0; 
         System.out.println(result4); // 2.0 先乘除后加減 與上面得到的結(jié)果是一致的
      
         double result5 = num1 / (num2 + 0.0);
         System.out.println(result5); // 2.4 (num2 + 0.0)自動(dòng)提成double 之后num1 / num2 在自動(dòng)提升
      
         // 取模 : %
         int m1 = 12;
         int n1 = 5;
         System.out.println("m1 % n1 = " + m1 % n1); // 2
      
         int m2 = -12;
         int n2 = 5;
         System.out.println("m2 % n2 = " + m2 % n2); // -2
      
         int m3 = 12;
         int n3 = -5;
         System.out.println("m3 % n3 = " + m3 % n3); // 2
      
         int m4 = -12;
         int n4 = -5;
         System.out.println("m4 % n4 = " + m4 % n4); // -2
      
         //自增自減++ --
        int a1 = 10;
        int b1 = ++a1;
        System.out.println("a1 = " + a1 + " b1 = " + b1); // 11 10

        int a2 = 10;
        int b2 = a2++;
        System.out.println("a2 = " + a2 + " b2 = " + b2); // 11 11
      
         // 注意:Java 的另一種自增1 看以下代碼
         //short s1 = 10;
         //s1 = s1 + 1; // 這么寫是有問題的,因?yàn)?為int 常量 s1 + 1 會(huì)自動(dòng)提升int 型
         //s1 = (short)(s1 + 1);
        //s1++; 自增不會(huì)改變數(shù)據(jù)類型
         //byte byt1 = 127; 
         //byt1++; // 不會(huì)改變數(shù)據(jù)類型尿背,不會(huì)出錯(cuò) 
         //System.out.println(byt1); // -128 二進(jìn)制 01111111+1 符號(hào)位為10000000 = -128
      
      
         int a3 = 10;
         int b3 = --a3;
         System.out.println("a3 = " + a3 + " b3 = " + b3); // 9 9
      
         int a4 = 10;
         int b4 = a4--; 
         System.out.println("a4 = " + a4 + " b4 = " + b4); // 9 10
    }
}
  1. 賦值運(yùn)算符

    符號(hào)=端仰、+=-=田藐、*=榆俺、\=%=

    class Test {
         public static void main(String[] args) {
             // 賦值符號(hào) = 
             int i = 10;
             int j = 10;
           int i1 , j1;
             i1 = j1 = 10;
             int i2 = 10, j2 = 11;
          
             int num1 = 10;
             num1 += 10;
             System.out.println(num1); // 20
          
             int num2 = 12;
             num2 %= 5;
             System.out.println(num2); // 2
          
             short s1 = 10;
             s1 += 2;
             System.out.println(s1); // 12
        }
    }
    
    
    
    
  1. 比較運(yùn)算符

    符號(hào)==坞淮、!=<陪捷、>回窘、<=>=

    class Test {
         public static void main(String[] args) {
             int i = 10;
             int j = 20;
             System.out.println(i == j); //false
             System.out.println(i = j); //20;
          
             boolean b1 = true;
             boolean b2 = false;
             System.out.println(b1 == b2); // false
             System.out.println(b2 = b1);  // true
        }
    }
    
    
  2. 邏輯運(yùn)算符

    符號(hào)&市袖、|啡直、^&&苍碟、||酒觅、!

    image.png

各符號(hào)的含義

  • & 兩個(gè)參數(shù)都為true時(shí)為true,否則為false 但是& 不管第一個(gè)參數(shù)是否為false 都需要與第二個(gè)參數(shù)進(jìn)行位運(yùn)算比較
  • && 兩個(gè)參數(shù)都為true時(shí)為true微峰,否則為false舷丹。當(dāng)?shù)谝粋€(gè)參數(shù)為假的時(shí)候,第二個(gè)參數(shù)就不會(huì)在被計(jì)算
  • | 兩個(gè)參數(shù)只要有一個(gè)為true 就為true,否則為fasle
  • || 兩個(gè)參數(shù)只要有一個(gè)為true 就為true,否則為fasle
  • ! 參數(shù)取反 當(dāng)參數(shù)為true時(shí)結(jié)果為false, 當(dāng)參數(shù)為false時(shí)結(jié)果為 true
  • ^

&&& 之間的區(qū)別

class Test {
     public static void main(String[] args) {
         boolean b1 = true;
         int num1 = 10;
         if (b1 & (num1++ > 0)) {
             System.out.println("ok");  // ok
        } else {
             System.out.println("fail");
        }
         System.out.println("num1 = " + num1); //11
      
         boolean b2 = true;
         int num2 = 10;
         if (b2 && (num2++ > 0)) {
             System.out.println("ok");  // ok
        } else {
             System.out.println("fail");
        }
         System.out.println("num2 = " + num2); //11
             // 邏輯與和短路與的區(qū)別 =========================================      
         boolean b3 = false;
         int num3 = 10;
         if (b3 && (num3++ > 0)) {
             System.out.println("ok"); 
        } else {
             System.out.println("fail"); //fail
        }
         System.out.println("num3 = " + num3); //11
         
         boolean b4 = false;
         int num4 = 10;
         if (b4 & (num4++ > 0)) {
             System.out.println("ok");  // ok
        } else {
             System.out.println("fail");
        }
         System.out.println("num4 = " + num4); //10
    }
}

同理|||和上述特征一致

  1. 位運(yùn)算符

    用的較少蜓肆,了解即可

    符號(hào)<颜凯、>>>>>仗扬、&症概、|^早芭、~

    • 左移 << 每向左移n位 相當(dāng)于乘以 2 的 n 次冪例如 1 << 2 相當(dāng)于 1 * 2 * 2
    • 右移 >> 每向左移n位 相當(dāng)于除以以 2 的 n 次冪例如 1 >> 2 相當(dāng)于 1 / 2 / 2
    • 無(wú)符號(hào)右移 >>> 被右移的最高位無(wú)論是0還是1彼城,都用0來(lái)補(bǔ)
    • 與運(yùn)算 & 二進(jìn)制&運(yùn)算 只有1 & 1時(shí)結(jié)果為1,否則都為0
    • 或運(yùn)算 | 二進(jìn)制|運(yùn)算 只有 0 | 0時(shí)結(jié)果為0,否則都為1
    • 異或運(yùn)算^ 二進(jìn)制^ 只有當(dāng)兩個(gè)位不相等的時(shí)候?yàn)? 否則為0 1 ^ 1 = 0 ,1 ^ 0 = 1
    • 取反運(yùn)算 ~ 各二進(jìn)制碼按補(bǔ)碼各位取反

    位運(yùn)算是直接對(duì)整數(shù)的二進(jìn)制進(jìn)行的運(yùn)算

    class Test {
         public static void main(String[] args) {
             int i = 1;
             System.out.println("i << 2 = "+ (i<<2)); //4 1 << 2 相當(dāng)于 1 * 2 * 2
        }
    }
    
  2. 三元運(yùn)算符

    符號(hào): (條件) 募壕? 結(jié)果1 :結(jié)果2

    解釋:當(dāng)條件為true時(shí) 得到結(jié)果1 否則得到結(jié)果2

    直接看代碼

    class Test {
         public static void main(String[] args) {
             boolean isOk = true;
             String msg = isOk ? "ok" : "error";
             System.out.println(msg); // ok
             
             isOk = false;
                 msg = isOk ? "ok" : "error";
             System.out.println(msg); // error
          
             // 相當(dāng)于 以后要學(xué)的if else
             if( isOk )  {
                 msg = "ok";
            } else {
                 msg = "error";
            }
             System.out.println(msg);
        }
    }
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末调炬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子司抱,更是在濱河造成了極大的恐慌筐眷,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件习柠,死亡現(xiàn)場(chǎng)離奇詭異匀谣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)资溃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門武翎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人溶锭,你說(shuō)我怎么就攤上這事宝恶。” “怎么了趴捅?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵垫毙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我拱绑,道長(zhǎng)综芥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任猎拨,我火速辦了婚禮膀藐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘红省。我一直安慰自己额各,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布吧恃。 她就那樣靜靜地躺著虾啦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痕寓。 梳的紋絲不亂的頭發(fā)上缸逃,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音厂抽,去河邊找鬼需频。 笑死,一個(gè)胖子當(dāng)著我的面吹牛筷凤,可吹牛的內(nèi)容都是我干的昭殉。 我是一名探鬼主播苞七,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼挪丢!你這毒婦竟也來(lái)了蹂风?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乾蓬,失蹤者是張志新(化名)和其女友劉穎惠啄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體任内,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撵渡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了死嗦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趋距。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖越除,靈堂內(nèi)的尸體忽然破棺而出节腐,到底是詐尸還是另有隱情,我是刑警寧澤摘盆,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布翼雀,位于F島的核電站,受9級(jí)特大地震影響孩擂,放射性物質(zhì)發(fā)生泄漏狼渊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一肋殴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坦弟,春花似錦护锤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赤炒,卻和暖如春氯析,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背莺褒。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工掩缓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遵岩。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓你辣,卻偏偏與公主長(zhǎng)得像巡通,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舍哄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345