1. 程式人生 > 其它 >2.資料型別、方法、運算子

2.資料型別、方法、運算子

技術標籤:JavaSE筆記javajavase

2.資料型別、方法、運算子

2.1 資料型別介紹

資料型別分為兩種

  • 簡單資料型別(8種)
    • 數值型
      • 整數型別(byte,short,int,long)
      • 浮點型別(float,double)
    • 字元型(char)
    • 布林型(boolean)
  • 引用資料型別(3種)
    • 類(class)
    • 介面(interface)
    • 陣列

8種簡單資料型別的有效位

資料型別佔用儲存空間(位元組)有效範圍(bits)
boolean1位元組1位
byte1位元組8位
char2位元組16位
short2位元組16位
int4位元組32位
float4位元組32位
long8位元組64位
double8位元組64位

資料型別儲存問題

  • 用char能否儲存一箇中文漢字?
    • 能。Java中的char是採用unicode編碼,佔據2位元組。一箇中文漢字正號佔據2位元組
  • 用Java編寫的程式在與C語言編寫的程式進行互動或通訊時,C中使用char聲明瞭一個變數,將這個變數的值傳到Java中,Java中能不能使用char宣告的變數來接收
    • 不能。C中的char型變數佔一個位元組,Java中的char型佔據兩個位元組,會導致兩邊的不一致,為了達到統一會選擇byte

2.2 整數型別

  • 整數型別用來儲存整數數值,即沒有小數部分的數值。可以是正數,也可以是負數。

  • 4種整型資料的不同取值範圍如下表:

  • 型別佔用儲存空間表示數值範圍
    byte1位元組-128~127
    short2位元組-215~215-1(-32768-32767)
    int4位元組-231~231-1(-2147483648-2147483647)
    long8位元組-263~263-1
  • Java語言整型常量的三種表示形式:

    • 十進位制整數
    • 八進位制整數,要求以0開頭
    • 十六進位制整數,要求以0x或0X開頭
  • Java語言的整型常量預設為int型

  • 宣告long型常量,可以在常量後面加‘l’或“L”

2.3 浮點型別

  • 浮點型別表示有小數部分的數字,分為單精度浮點型別(float)和雙精度浮點型別(double)。它們有不同的取值範圍,如下表:

  • 型別佔用儲存空間表示數值範圍
    float4位元組-3.403E38~3.403E38
    double8位元組-1.798E308~1.798E308
  • Java浮點型別常量有兩種表示形式

    • 十進位制數形式,必須含有小數點
      • 例:double d =2.14;
    • 科學記數法形式,字母e/E後必須為整數
      • 例:double d =2.14e2;//2.14*10^2
      • double d =2.14E10;//2.14*10^10
  • Java浮點型常量預設為double型,如要宣告一個常量為float型,則需在數字後面加f或F

2.4 字元型別

  • char型資料用來表示通常意義上“字元”,用來儲存單個字元;

  • 字元常量使用單引號括起來的單個字元

    • 例:char c = ‘A’; //表示一個字母
    • char c = ‘你’; //表示一箇中文漢字
    • char c = 20556; //通過下標值獲取Unicode編碼中的字元
  • Java字符采用Unicode編碼,每個字元佔兩個位元組,因而可用十六進位制編碼形式表示(字首為u表示Unicode)

    • 例:char c = ‘\u0061’; //通過Unicode編碼得到一個字元
  • Java語言中還允許使用轉義字元’\ '來將其後的字元轉變為其它的含義

    • 例:char c = ‘\n’; //代表換行符
  • 轉義符含義Unicode值
    \b退格\u0008
    \n換行\u000a
    \r回車\u000d
    \t製表符\u0009
    \ "雙引號\u0022
    \ ’單引號\u0027
    \ \反斜槓\u005c

2.5 布林型別

  • boolean型別適用於邏輯運算,一般用於程式流程控制中作為條件判斷。

  • boolean型別資料只允許取值true或false,不可以0或非0的整數替代true和false。

  • 布林值不能與整數型別進行轉換

  • 例:

    • boolean b = false;
      if(b){}
      

2.6 資料型別轉換

有兩種:
在這裡插入圖片描述

  • 自動型別轉換:將低資料型別的值賦給高資料型別的變數

    • 兩種型別相容

    • 目標型別表示的數值範圍大於源型別

    • 有可能會丟失精度(虛線之間)

      • 例:

      • byte b = 100;
        short s = b; 
        int i =b;
        int j =123;
        double d = j;
        
  • 強制型別轉換:將搞資料型別的值賦給低資料型別的變數

    • int m = 123;
      short m1 = (short)m;
      byte m2 = (byte)m;
      float f = 3.14f;
      int n = (int)f;
      System.our.println("n = " + n); // n = 3,丟失了精度
      

2.7 成員方法的定義

  • 方法是類或物件行為特徵的抽象。

  • Java中的方法不能獨立存在,所有的方法必須定義在類裡。

  • 使用“類名.方法”或“物件.方法”的形式呼叫。

  • 語法格式:

    • 許可權修飾符 返回值型別 方法名{
          方法體
          return 返回值;
      }
      
  • 方法各種形式:無參無返回值、無參有返回值、有參無返回值、有參有返回值

2.8 成員方法的引數

  • 方法可有0到多個引數,引數型別可以是任意資料型別
    • 引數為引用資料型別時:
      • 當物件例項作為引數傳遞給方法時,傳遞的是物件的引用,為址傳遞,接受引數的方法中可以改變引數的值
    • 引數為簡單資料型別時:
      • 傳遞的是引數的副本,為值傳遞,接受引數的方法中不會改變引數的值
  • 方法引數也是區域性變數

2.9 成員方法的返回值

  • 方法可以有返回值型別宣告,也可以沒有,沒有時使用void宣告

  • 方法返回值型別可以是任意型別

  • 有返回值的方法體中必須有且僅有“一個return值“語句能被執行,執行後方法執行會立即結束

  • 返回值與方法返回值型別可以相同或自動轉換為方法返回值型別,或強制轉換為方法返回值型別

  • 呼叫有返回值的方法時,可以接收返回值,也可以不接收

  • 例:

    • public class Demo{
          int a = 1000;
          public Demo method(){
              System.out.println("method");
              return new Demo();
          }
          public static void main(String[] args){
              Demo d = new Demo();
              d.method(); //沒有接收方法的返回值
              
              Demo d2 = new Demo(); //接收方法的返回值
              System.out.println(d2.a);
          }
      }
      /*控制檯顯示為:
      method
      1000
      */
      

2.10 區域性變數和成員變數

變數宣告語法:

  • 資料型別 識別符號 = 值,…;
    • 可以宣告變數並初始化
    • 也可先宣告變數再初始化

區域性變數:

  • 定義在類的方法內或程式碼塊內的變數,方法的引數也是區域性變數
  • 區域性變數的作用域範圍:只在定義它的方法體內或程式碼塊內有效
  • 區域性變數在使用之前,必須先初始化

全域性變數(成員變數):

  • 一個類中既不在方法體內也不在程式塊內定義的變數

  • 作用域範圍:類中所有的方法和程式碼塊都可以訪問成員變數

  • 對於沒有初始化的成員變數,系統會指定預設的值

    • 成員變數的預設初始值:

    • 資料型別預設值
      byte0
      short0
      int0
      long0L
      float0.0f
      double0.0d
      char\u0000(空字元)
      booleanfalse
      object ref(引用資料型別)null

2.11 運算子介紹

  • 分隔符:,,;,[],()
  • 算術運算子:+,-,*,/,%,++,–
  • 關係運算符:>,<,>=,<=,==,!=
  • 邏輯運算子:!,&,|,^,&&,||
  • 賦值運算子:=
    • 擴充套件賦值運算子:+=,-=,*=,/=
  • 三目運算子:?
  • 字串連線運算子:+

2.12 算術運算子

  • Java中的算術運算子主要有+(加)、-(減)、*(乘)、/(除)、%(取餘),它們都是二元運算子。
    • 二元運算子:這個運算子左右兩側必須有兩個運算元。
  • “+”和“-”運算子還可以作為資料的正負符號。
  • 自增和自減運算子
    • 自增、自減運算子是單目運算子。
    • 對於需要對運算元進行加1或減1操作時,可以使用遞增或遞減運算子
      • 遞增:++
        • i++:先用i變數的值,然後再進行加1運算;先用後加
        • ++i:先進行加1運算,再使用i變數的值;先加後用
      • 遞減:–
        • i–:先用後減
        • –i:先減後用

2.13 關係運算符

  • ==:判斷相等
  • !=:判斷不等
  • >:判斷大於
  • <:判斷小於
  • >=:判斷大於等於
  • <=:判斷小於等於

2.14 邏輯運算子

  • !:邏輯非
    • 對結果取反
  • &:邏輯與
    • 只要其中一個位false,那麼結果就為false
  • |:邏輯或
    • 只要其中一個變數為true,那麼結果就為true
  • ^:邏輯異或
    • 兩個邏輯變數相同則為false,相異則為true
    • 兩個邏輯變數相異,輸出才為1
  • &&:短路與
    • 只要其中一個表示式或方法的返回值為false,那麼結果就為false,且不執行之後的操作
  • ||:短路或
    • 只要其中一個表示式或方法的返回值為true,那麼結果就為true,且不執行之後的操作

2.15 賦值運算子

  • 賦值運算子“=”是最常用的一種運算子。它將等於號右邊的表示式的值賦給左邊的變數
    • 賦值運算子的優先順序很低
    • 賦值運算子先計算右邊,再計算左邊
    • 賦值表示式也有值
  • 使用“+=,-=,*=,/=”時,會進行型別轉換(含強轉),轉換成我們定義的變數型別

2.16 三目運算子

語法格式:

  • x ? y : z
  • 其中x為boolean型別表示式,先計算x的值,若為true,則整個三目運算的結果為表示式y的值,否則整個運算結果為表示式z的值

2.17 字串連線符

  • 運算子“+”用於數值型別資料,是加法運算子
  • 用於字串型別(String)資料中,是連線符
  • 字串+數值,Java會自動將數值轉換成字串,然後兩個字串相連生成一個新的字串
    • 只要+“加號”兩邊任意一邊出現了字串,那麼+就被當成字串連線符使用

2.18 運算子的優先順序

表示式:

  • 表示式是運算子和運算元的結合,它是任何一門程式語言的關鍵組成部分
  • 表示式允許程式設計師進行數學計算、值的比較、邏輯操作以及在Java中進行物件的操作

運算子的優先順序:

  • 下面的表格說明了各個運算子的優先順序,優先順序高的運算子放置在表的上部,而在同一行的運算子擁有同樣的優先順序

  • 除了單目運算子、賦值運算子以及條件運算子,其它的運算子都是從左到右結合的。

  • 運算子優先順序口訣:非、算、關、與或、賦

  • 運算子說明Java運算子
    分隔符. [] () , ;
    單目運算子+ - ~ ! ++ –
    建立或型別轉換New
    乘法/除法* / %
    加法/減法+ -
    關係< <= >= > instanceof
    等價== !=
    按位與&
    按位異或^
    按位或|
    條件與&&
    條件或||
    條件?:
    賦值=