1. 程式人生 > >常量、進位制、原反補碼、變數、字元和字串參與運算、運算子、賦值運算子

常量、進位制、原反補碼、變數、字元和字串參與運算、運算子、賦值運算子

A:什麼是常量 * 在程式執行的過程中其值不可以發生改變

  • B:Java中常量的分類

    • 字面值常量
    • 自定義常量(面向物件部分講)
  • C:字面值常量的分類

    • 字串常量 用雙引號括起來的內容
    • 字元常量 用單引號括起來的內容,裡面只能放單個數字,單個字母或單個符號
    • 整數常量 所有整數
    • 小數常量 所有小數
    • 布林常量 較為特殊,只有true和false
    • 空常量 null(陣列部分講解)
  • D:案例演示

    • 用輸出語句輸出各種常量。null不演示

    • class Demo1_Constant { //constant 常量 public static void main(String[] args) { //這是主方法,是程式的入口。

      System.out.println(“abc”); //字串常量 System.out.println(123); //整數常量 System.out.println(12.3); //小數常量 //字元常量中需要注意的地方: //System.out.println(‘10’); //’'中必須放的是單個字元,10代表的是1字元和0字元 //System.out.println(’’); //’'中什麼也不放,也是不可以的,因為代表不了任何字元 System.out.println(’ '); //帶表空格字元 System.out.println(true); //boolean類只有兩個值,true和false System.out.println(false); } }

八進位制:三位二進位制代表一位八進位制,所以八進位制最大值為7。 十六進位制:四位二進位制代表一位十六進位制,所以十六進位制的最大值為15。 特點:進位制越大,表現形式越短。

A:二進位制的資料表現形式 * 由0,1組成。以0b(b可以大寫也可以小寫)開頭(JDK1.7版本可以表示二進位制了)

  • B:八進位制的資料表現形式
    • 由0,1,…7組成。以0開頭
  • C:十進位制的資料表現形式
    • 由0,1,…9組成。整數預設是十進位制的
  • D:十六進位制的資料表現形式
    • 由0,1,…9,a,b,c,d,e,f(大小寫均可)。以0x開頭
  • E:案例演示
    • 輸出不同進製表現100的資料。
    • 0b100
    • 0100
    • 100
    • 0x100

為什麼要學習原碼反碼補碼? * 後面要學習強制型別轉換,如果不知道有原反補會看不懂結果

  • B:有符號資料表示法的幾種方式
    • 原碼
      • 就是二進位制定點表示法,即最高位為符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
      • 通過一個位元組,也就是8個二進位制位表示表示+7和-7
      • +7 0(符號位) 0000111
      • -7 1(符號位) 0000111(原碼)
      •        1                1111000(反碼)
        
      •        1                1111001(補碼)   
        
    • 反碼
      • 正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
    • 補碼
      • 正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
      • 整數的原反補都一樣
      • 在計算機中運算都是使用補碼運算

A:什麼是變數 * 在程式執行的過程中,在某個範圍內其值可以發生改變的量

  • B:變數的定義格式
    • 資料型別 變數名 = 變數值;
  • C:為什麼要定義變數
    • 用來不斷的存放同一型別的常量,並可以重複使用

為什麼有資料型別 * Java語言是強型別語言,對於每一種資料都定義了明確的具體資料型別,在記憶體中分配了不同大小的記憶體空間

  • B:Java中資料型別的分類
    • 基本資料型別
    • 引用資料型別
      • 面向物件部分講解
  • C:基本資料型別分類(4類8種)
    • 整數型
      • byte 佔一個位元組 -128到127 一個位元組也就是8個二進位制位。
      • short 佔兩個字 -215~215-1
      • int 佔四個位元組 -231~231-1
      • long 佔八個位元組 -263~263-1
    • 浮點型
      • float 佔四個位元組 -3.403E38~3.403E38 單精度
      • double 佔八個位元組-1.798E308~1.798E308 雙精度
    • 字元型
      • char 佔兩個位元組 0~65535
    • 布林型
      • boolean
        • boolean理論上是佔八分之一個位元組,因為一個開關就可以決定是true和false了,但是java中boolean型別沒有明確指定他的大小 Java中的預設轉換規則
    • 取值範圍小的資料型別與取值範圍大的資料型別進行運算,會先將小的資料型別提升為大的,再運算 強制轉換問題
    • int a = 10;
    • byte b = 20;
    • b = a + b;
  • B:強制轉換的格式
    • b = (byte)(a + b);
  • C:強制轉換的注意事項 如果超出了被賦值的資料型別的取值範圍得到的結果會與你期望的結果不同

面試題:看下面的程式是否有問題,如果有問題,請指出並說明理由。 * byte b1 = 3; * byte b2 = 4; * byte b3 = b1 + b2; * 從兩方面去回答這個題 * b1和b2是兩個變數,變數裡面儲存的值都是變化的,所以在程式執行中JVM是無法判斷裡面具體的值 byte型別的變數在進行運算的時候,會自動型別提升為int型別 byte b4 = 3 + 4; 3和4都是常量,java有常量優化機制,就是在編譯的的時候直接把3和4的結果賦值給b4了

字元和字串參與運算 A:案例演示 * System.out.println(‘a’); * System.out.println(‘a’+1);

* 通過看結果知道'a'的值是多少,由此引出ASCII碼錶
  • B:ASCII碼錶的概述
    • 記住三個值:
      • ‘0’ 48
      • ‘A’ 65
      • ‘a’ 97
  • C:案例演示
    • System.out.println(“hello”+‘a’+1);
    • System.out.println(‘a’+1+“hello”);
  • D:+在有字串參與中被稱為字串連線符
    • System.out.println(“5+5=”+5+5);
    • System.out.println(5+5+"=5+5");

Java語言中的字元char可以儲存一箇中文漢字嗎?為什麼呢? * 可以。因為Java語言採用的是Unicode編碼。Unicode編碼中的每個字元佔用兩個位元組。中文也是佔的兩個位元組 * 所以,Java中的字元可以儲存一箇中文漢字

A:什麼是運算子 * 就是對常量和變數進行操作的符號。

  • B:運算子的分類
    • 算術運算子,賦值運算子,比較(關係或條件)運算子,邏輯運算子,位運算子,三目(元)運算子
  • C:算數運算子有哪些
    • +,-,*,/,%,++,–
  • D:注意事項:
    • a:+號在java中有三種作用,代表正號,做加法運算,字串的連線符
    • b:整數相除只能得到整數。如果想得到小數,必須把資料變化為浮點數型別
    • c:/獲取的是除法操作的商%獲取的是除法操作的餘數
    • %運算子
      • 當左邊的絕對值小於右邊絕對值時,結果是左邊
      • 當左邊的絕對值等於右邊或是右邊的倍數時,結果是0
      • 當左邊的絕對值大於右邊絕對值時,結果是餘數
      • %運算子結果的符號只和左邊有關係,與右邊無關
      • 任何一個正整數%2結果不是0就是1可以用來當作切換條件

算術運算子++和–的用法

  • A:++,–運算子的作用
    • 自加(++)自減(–)運算
    • ++:自加。對原有的資料進行+1
    • –:自減。對原有的資料進行-1
  • B:案例演示
    • a:單獨使用:
      • 放在運算元的前面和後面效果一樣。(這種用法是我們比較常見的)
    • b:參與運算使用:
      • 放在運算元的前面,先自增或者自減,然後再參與運算。
      • 放在運算元的後面,先參與運算,再自增或者自減。

算術運算子++和–的練習

  • A:案例演示
    • 請分別計算出a,b,c的值?
    •   int a = 10;
        int b = 10;
        int c = 10;
      
        a = b++;		a=10,b=11;
        c = --a;		c=9,a=9;	
        b = ++a;		b=10;a=10;
        a = c--;		a=9,c=8;	
                  a=9,b=10,c=8
      
  • B:案例演示
    • 請分別計算出x,y的值?

        int x = 4;
        int y = (x++)+(++x)+(x*10);        
        a = x++;     a=4,x=5;
        b=++x;       b=6,x=6;
        c=x*10;      x=60;
        y=70
      
  • C:
    • byte b = 10;
    • b++;
    • b = b + 1; //因為b為byte型別,b+1運算結果為int型別。
    • 問哪句會報錯,為什麼

賦值運算子

  • A:賦值運算子有哪些
    • a:基本的賦值運算子:=

      • 把=右邊的資料賦值給左邊。
    • b:擴充套件的賦值運算子:+=,-=,*=,/=,%=

      • += 把左邊和右邊做加法,然後賦值給左邊。

賦值運算子

  • A:案例演示
    • 面試題:看下面的程式是否有問題,如果有問題,請指出並說明理由。
    • short s=1;s = s+1; 有問題,S+1過程中自動提升s為int型
    • short s=1;s+=1;

關係運算符的基本用法及其注意事項

  • A:關係運算符有哪些(比較運算子,條件運算子)
    • ==,!=,>,>=,<,<=
  • 注意事項:
    • 無論你的操作是簡單還是複雜,結果是boolean型別

    • "==“不能寫成”="