1. 程式人生 > >java基礎複習第二天——基本資料型別,引用資料型別,資料型別轉換,運算子

java基礎複習第二天——基本資料型別,引用資料型別,資料型別轉換,運算子

目錄

1.基本資料型別(4類八種)

2.引用資料型別

3.基本型別和引用型別的區別

4.資料型別轉換

5.運算子



----------------------------------------------------------------------我是分割線-----------------------------------------------------------------------------------

Java中一共有兩大類資料型別:

1.基本資料型別(4類八種)

整型:

                      所佔記憶體       取值範圍

位元組型 byte   1個位元組        -128-127

短整型 short  2個位元組        +-30000左右

整型     int      4個位元組        +-21億

長整型 long     8個位元組        不得了

 

浮點型:

單精度浮點型 float    4個位元組    詳細取值範圍見下圖

雙精度浮點型 double 8個位元組

 

字元型:

字元型 char      2位元組

 

布林型:

布林型 boolean  1位元組    true/false

 

  tip:1.8E20  代表 1.8*10的20次方

2.引用資料型別

  String (字串)、類、介面等

  提到String,便想起了 == 和 equals的區別,有時間專門整一下子,其實這些度娘那有一大把,我這就是用最簡單的語言表述一下

3.基本型別和引用型別的區別

引用型別的儲存原理:

基本資料型別 都是直接儲存在記憶體中的記憶體棧上的,資料本身的值就是儲存在棧空間裡面

引用型別 繼承於Object類(也是引用型別)都是按照Java裡面儲存物件的記憶體模型來進行資料儲存的,使用Java記憶體堆和記憶體棧來進行這種型別的資料儲存,簡單地講,“引用”是儲存在有序的記憶體棧上的,而物件本身的值儲存在記憶體堆上的;

 

4.資料型別轉換

 

    public static void main(String[] args) {
        
        //自動型別轉換,小範圍--->大範圍

        long c =5;//int 5自動轉換成long型別
        System.out.println(c); //5

        //強制轉換型別 大範圍--->小範圍 ,精度可能損失
        long c1=10L;
        int b =(int)c1;

        //double和float的經度範圍不同
        double d =3.12345678999999999;
        float f =(float)d;
        System.out.println(f); //3.1234567
        int a2 =(int)1000000000000000L;
        System.out.println(a2);//-1530494976 精度損失

        char b2 ='中';
        int b3=b2;
        System.out.println(b2);//中
        System.out.println(b3);//20013
      
    }

5.運算子

1.算術運算子

+: 加

a.求2個數的和

i.如果是兩個型別一樣的資料,直接求和

ii.如果兩個型別不一樣的資料.先轉成一樣,在求和

a.如果是byte,char,short 那麼無條件先轉成int

b.如果是多個型別相加,那麼最後的結果是最寬的型別

c.所有小數相加,得到都是近似值

b.連線一個字串和另外一個任意資料,得到連線後的新字串

 

-: 減

求兩個數差

*: 乘

求兩個數積

/: 除

求兩個數的商

如果兩個數都是整數,那麼結果肯定是整數

 

%: 取模/求餘數

10 % 3 結果是 1

 

++:自增

自增運算子只能用於變數

格式:

++變數名;

變數名++;

作用: 都是讓該變數的值增加1

 

++在前和在後的區別:

a.如果 變數名++ 或者 ++變數名 是單獨一個式子 那麼沒有任何區別

b. 如果 變數名++ 或者 ++變數名 不是單獨一個式子

口訣: ++在前,先加後用

++在後,先用後加

 

 

--:自減

自減運算子只能用於變數

格式:

--變數名;

變數名--;

作用:讓變數的值減少1

 

--在前和在後的區別:
           a.如果 變數名-- 或者 --變數名 是單獨一個式子 那麼沒有任何區別

b. 如果 變數名-- 或者 --變數名 不是單獨一個式子

口訣:--在前,先減後用

--在後,先用後減

 

擴充套件:編譯器的優化

a.對byte short 賦值時,編譯器會優化,只要數值沒有超過範圍 那麼沒有問題

byte b = 10;

short s = 11;

b.如果是常量相加,編譯器階段直接計算

byte b = 1 + 2; // 編譯器會直接計算出 3

 

c.如果是變數相加,編譯器不會優化

byte b1 = 1;
           byte b2 = 2;
           int b3 = b1 + b2; //變數相加不優化,所以結果是int型別
           int b4 = b1 + 2; //變數相加不優化,所以結果是int型別
           int b5 = 1 + b2; //變數相加不優化,所以結果是int型別

 

2.賦值運算子

=: 最簡單的賦值運算子

int a = 10;

一個變數可以無數次賦值,但是該變數最終只能儲存一個值,最後一次賦的值

int a = 10;

+=:

a+=10; ====>  a = a+10

 

注意: += 具有強轉功能

比如 byte b = 10;

b+=1;

// b = (byte)(b + 1);

tip: short、char、byte進行運算是自動轉化成了int型別

3.比較運算子

比較運算子 最後結果是 boolean類的值

>

<

>=

<=

==

!=

 

4.邏輯運算子

使用邏輯運算子 只能計算兩個boolean型別資料,其結果還是boolean

&&: 短路與  口訣:全真為真(一假則假)

||: 短路或  口訣:全假為假(一真則真)

! : 非     單目運算子, 口訣: 取反

^ : 異或     口訣:相同為假(不同為真)

 

短路與 和 短路或 中 "短路"的含義

false && 後面編譯器是不看的

true || 後面編譯器是不看的

 

5.三目/元運算子

符號:  ?  :

格式:

boolean型別值?值1:值2

結果:   如果boolean型別的值是true ,那麼結果就是值1

如果boolean型別的值是false,那麼結果就是值2

           這個三元運算很簡單,但是等到用的時候總是想不起來,還是一直再用if..else 藍廋!