Java【第二篇】基本語法之--進制、運算符

進制

對於整數,有四種表示方式:
  二進制:0,1 ,滿 2 進 1.以 0b 或 0B 開頭。
  十進制:0-9 ,滿 10 進 1.
  八進制:0-7 ,滿 8 進1. 以數字 0 開頭表示。
  十六進制:0-9 及 A-F,滿 16 進1. 以 0x 或 0X開頭表示。此處的A-F不區分大小寫。java

全部數字在計算機底層都以二進制形式存在。spa

計算機以補碼的形式保存全部的整數。3d

正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。blog

原碼:直接將一個數值換成二進制數。字符串

反碼:是對原碼按位取反,只是最高位(符號位)保持不變。編譯

Java整數常量默認是int類型,當用二進制定義整數時,其第32位是符號位;當是long類型時,二進制默認佔64位,第64位是符號位class

byte 的範圍:-128 ~ 127擴展

 

進制的基本轉換

十進制 二進制互轉
  十進制轉成二進制 除以2取餘數
  二進制轉成十進制 乘以2的冪數二進制

15 = 1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3方法

相似的方法,能夠進行下面的互轉
二進制 八進制互轉
二進制 十六進制互轉
十進制 八進制互轉
十進制 十六進制互轉

算術運算符

注意:

  若是對負數取模,能夠把模數負號忽略不記,如:5%-2=1。 但被模數是負數就另當別論。
  對於除號「/」,它的整數除和小數除是有區別的:整數之間作除法時,只保留整數部分而捨棄小數部分。 例如:int x=3510;x=x/1000*1000; x的結果是?
  「+」除字符串相加功能外,還能把非字符串轉換成 字符串.例如:System.out.println("5+5="+5+5); //打印結果是?

賦值運算符

符號:=
擴展賦值運算符: +=, -=, *=, /=, %=

比較運算符(關係運算符)

注1:比較運算符的結果都是boolean型,也就是要麼是true,要麼是false。
注2:比較運算符「==」不能誤寫成「=」 。

邏輯運算符

邏輯運算符用於鏈接布爾型表達式,在Java中不能夠寫成3<x<6,應該寫成x>3 && x<6 。
「&」和「&&」的區別:
單&時,左邊不管真假,右邊都進行運算;
雙&時,若是左邊爲真,右邊參與運算,若是左邊爲假,那麼右邊不參與運算。
和「||」的區別同理,雙或時,左邊爲真,右邊不參與運算。
異或( ^ )與或( | )的不一樣之處是:對於 ^ 而言,當左右都爲true時,結果爲false。

位運算符

位運算是直接對二進制進行運算

三元運算符

格式:(條件表達式)?表達式1:表達式2;
  若是條件爲true,運算後的結果是表達式1;
  若是條件爲false,運算後的結果是表達式2; 

package com.uncleyong;

public class TestOperator {
    public static void main(String[] args) {
        //取模
        int r = 10 % 3;
        System.out.println(r);  //1

        //自增
        int i = 10;

        //i++: 先取 i 值, 在運算(i = i + 1)
        int j = i++;
        System.out.println(j);
        System.out.println(i);

        int m = 100;
        //++m: 先運算(m = m + 1), 後取值
        int n = ++m;
        System.out.println(n);
        System.out.println(m);

        //+: 字符串相加
        String str = "abc";
        String str2 = "def";

        String str3 = str + str2; //abcdef
        System.out.println(str3);

        //若是對負數取模,能夠把模數負號忽略不記
        System.out.println(10 % -3); //1
        //若是被模的數是負數, 則先對其絕對值進行取模運算, 結果在加上一個負號
        System.out.println(-10 % 3); //-1

        System.out.println(-10 % -3); //-1

        //整數之間作除法時,只保留整數部分而捨棄小數部分
        int x=3510;
        x= x / 1000 * 1000;
        System.out.println(x); //3000

        //+ 除字符串相加功能外,還能把非字符串轉換成字符串
        String str4 = "1";
        System.out.println(str4 + 100); //1100

        //邏輯運算符
        int a = 10;
        int b = 20;

        // &: 與 運算符, 當且僅當兩邊都爲真時, 表達式的結果爲 true
        System.out.println(a > 5 & b < 30); //true
        System.out.println(a > 15 & b < 30); //false
        System.out.println(a > 5 & b < 20); //false

        // |: 或 運算符, 當且僅當兩邊都爲假時, 表達式結果爲 false
        System.out.println(a > 5 | b < 30); //true
        System.out.println(a > 15 | b < 3); //false
        System.out.println(a > 5 | b < 20); //true

        // ^: 異或 運算符, 當且僅當兩邊的表達式的結果不一樣時爲 true, 不然爲 false
        System.out.println(a > 5 ^ b < 30); //false
        System.out.println(a > 15 ^ b < 3); //false
        System.out.println(a > 5 ^ b < 20); //true

        // !: 取反 運算符.
        System.out.println(!(a > 5)); //false

        //短路邏輯運算符: &&, ||. 若 短路邏輯運算符前的表達式已經能夠肯定整個表達式的值,
        //則再也不判斷 短路運算符後邊的表達式的值
        System.out.println(a > 15 && (10 / 0 == 1)); //false

        //位運算符
        int c = 3; //0000 0011

        //左移運算符
        System.out.println(c << 2); //0000 1100 -> 12  3 * (2*2) = 12

        //右移運算符
        System.out.println(c >> 2); //0000 0000 -> 0   3 / (2 * 2) = 0;

        //無符號右移運算符
        int d = -1;
        System.out.println(d >> 1); //-1
        System.out.println(d >>> 1); //2147483647

        //& 位運算符
        /*
         *   0000 0010
         * & 0000 0011
         * ___________
         *   0000 0010
         */
        System.out.println(2 & 3); //2

        //三元運算符
        String e = d > 3 ? "d > 3" : "d <= 3";
        System.out.println(e); // d <= 3

        //編譯不能經過, 由於 : 的兩邊必須是表達式, 且必須是類型兼容的表達式
        //d > 3 ? System.out.println("a") : System.out.println("b");

        String res = d > 3 ? ">3" : "<=3";
    }
}
相關文章
相關標籤/搜索