Java基礎-->瞭解java語言

由於之前沒有計算機專業的基礎,剛開始學習JAVA時,我感覺到很吃力,感覺JAVA語言的世界離我很遠。但是我懂得“萬事開頭難”這個道理,我還是堅持了一段時間自學視頻!然後我到傳智播客開始了預熱班,我才真正進入了JAVA的世界!

第一節   基本概念概述

一、關鍵字:

被java賦予了特殊含義的單詞。總結如下:

1、類型定義符關鍵字:

     整數類型:byte,short,int,long     浮點類型:float、double

     字符類型:char                                  布爾類型:boolean     

2、循環判斷修飾符關鍵字:

     表判斷:if、else、else if;switch、case;

     表循環:for,while、do while;

     表繼續:continue;表結束:break;

3、訪問權限修飾符關鍵字:

      私有的:private;受保護的:protected;公有的:public。

      修飾符間的比較見後面文章的總結。

4、類、函數、變量修飾符關鍵字:

     抽象的:abstract;最終的:final;靜態的:static;同步的:synchronized;枚舉類:enum。

5、類與類間關係的關鍵字

     繼承的:extends;實現的:implements。

6、實例的建立、引用及判斷的關鍵字:

     創建:new;當前引用:this;父類引用:super;判斷所屬:instanceof。

7、異常處理的關鍵字:

      嘗試(檢查異常):try; 捕獲(異常):捕獲異常;  最終(一定執行):finally;  

      拋出(異常對象):throw;  拋出(異常):throws。

8、包關鍵字:

     包:package;導入(包)import。

9、其他修飾符關鍵字(現在不做重點說明,以及java保留關鍵字不再闡述):

      native:定義本地方法;

      strictfp:即strict float point,精確浮點;

      transient:變量修飾符,用它聲明一個實例變量,當對象存儲時,它的值不需要維持。

      volatile:類型修飾符,用來修飾被不同線程訪問和修改的變量。

      assert:斷言,作爲異常處理的一種高級形式,在測試代碼運行時使用。


二、標識符:

1、定義:程序中自定義的一些名稱。如類名

2、命名規則:

a.由26個英文字符大小寫,數字0-9,符號中的_和$,組成。

b.數字不可以開頭,不可以使用關鍵字

c.嚴格區分大小寫,起名爲了提高閱讀性,儘量使用有意義的名字

3、名稱規範:

a.包名:多單詞組成是全部爲小寫字母。如:packageperson

b.類名和接口名:首個單詞大寫,多個單詞組成時,後面的每個單詞首字母大寫。如:StringDemo

c.變量名和函數名: 首個單詞小寫,多個單詞組成時,後面的每個單詞首字母大寫。如:functionTest

d.常量名:所有字母都大寫。多個單詞組成時,用下劃線(“_”)連接。如MAX_VALUE


三、變量:

1、概述:將不確定的數據進行存儲,會在內存中開闢一塊空間,存放在棧內存中。每一個變量都隸屬於一種類型。它代表着一個值,便於在語句中靈活使用,且比具體值更有意義。

2、聲明變量:a.數據類型 變量名;  b.數據類型 變量名 = 初始化值;

3、變量初始化:對於上面的a,系統默認初始化值,也稱隱式初始化。對於b,是顯式初始化值。

     默認初始化值:

     數值類型:byte、short、int :0 ;      long:0L;        float:0.0f;  double:0.0d

     字符類型:char:''(空字符,打印時無顯示)

     布爾類型:boolean:false

     引用型默認初始化值爲null。

4、常量:

在java中,使用final聲明常量,變量名要全部大寫。。如:

      public static final double PI = 3.1415926;

需要注意的是:

a.聲明變量並賦初值後,這個值就不能再更改了。

b.類常量的聲明位於main方法的外部,或無main函數的類的全局中的位置。這樣,可以在同一個類中的其他地方使用這個常量。

c.上面默認初始化的那些值皆爲常量值。


第二節   數據類型


java中的數據類型分爲基本數據類型和引用數據類型(後面會具體體現,這裏主要講基本數據類型)。他們的共性之處在於,都是存在於棧內存中的。但是基本數據類型和引用數據類型在內存中的本質是有區別的,基本數據類型本身的值就是在棧內存中的,無需引用任何數據,自己管自己的。但是引用數據類型則不一樣,它在棧內存中也有值,只不過這值是地址值,拿的別人的東西。下面我就簡單總結一下關於基本數據類型。

先來個黑馬面試的題目:

然後我們來說一下有哪些數據類型?


好的,這個表格已經完全展示了數據類型的結構了!下面我們就根據這個表格來一步一步學習數據類型:

一、基本數據類型:

        上面程序中提到的int、float、double等是數據類型中的幾種。這些都屬於基本數據類型。對於基本數據類型,上面也說到了,是自己的值存放在棧內存中。對於基本數據類型,主要有八種,分別爲:

1、整數類型:

byte:  字節型       ------->  1字節,取值範圍:(-2E7 ~ 2E7 - 1)-128 ~ 127

short:短整型       ------->  2字節,取值範圍:(-2E15 ~ 2E15 - 1)-32768 ~ 32767

int:        整型      ------->  4字節,取值範圍:(-2E31 ~ 2E31 - 1)-2147483648 ~ 214748367 ---超過20億

long: 長整型       ------->  8字節,取值範圍:(-2E61 ~ 2E61 - 1)-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807

2、浮點型:

float:     單精度浮點型    ------->  4字節,取值範圍:大約± 3.402 823 47E + 38F(有效位6 ~ 7位)

double:雙精度浮點型    ------->  8字節,取值範圍:大約± 1.797 693 134 862 315 70E + 308(有效位15位)

3、字符型:

char:字符型  ------->用於表示單個字符。如‘A’。

4、布爾型:

boolean:布爾型  ------->表示邏輯判斷條件,有兩個值爲true和false。


二、基本數據類型說明:

1、int類型:在整數類型中,對數據進行賦值的時候,默認是int類型的,就是說,可以直接使用任何整型數據,基本上是作爲int使用的。大數值單說。

2、double類型:在浮點型類型中,和int相似,默認的是double類型的。

3、char類型:每一個字符都對應一個ASCll碼,如'A'對應着65,'a'對應着97。

4、對於基本數據類型,在進行參數傳遞時,是進行的值傳遞。

5、基本數據類型的初始化:

      整型默認初始化爲:         0                          字符型默認初始化爲:null

      浮點型默認初始化爲:     0.0(f)                   布爾型默認初始化爲:false


三、關於基本類型轉化與提升問題

1、自動類型轉換:

也成爲隱式類型轉化。當一個“小”(指範圍小)數據與“大”數據進行運算時,java默認會向“大”數據方向轉換,然後再運算,如上面的程序中的運算,就是講i = 5轉爲i = 5.0在和f進行運算,然後再提升爲double類型。

注:

a.所有byte、short、char類型的值將提升爲int類型。

b.自動類型轉換關係:byte -->short(char) -->int -->long -->float -->double

2、強制類型轉換:

和自動轉換類型相反,格式:int i = (int)6.53;,就是將“大”數據強轉爲“小”數據。

注:

a.會損失精度,如6.53轉完後爲6,會將小數點後的值去除,只保留整數位。

b.強制類型轉換關係:double -->float -->long -->int -->short(char) -->byte

c.對於int m = (int)'a';//結果爲97,因爲a在ASCll碼中的值爲97。


第三節   運算符

一、概述:

數據的存儲不僅僅只爲了存,更多的是運算,那麼該如何對這些數據進行運算呢?先說一說基本的運算符及運算。


二、運算符:

1、算數運算符

      正號:+             負號:-                      

      加法:+              減法:-              乘法:*              除法:/              取模:%  

      自增:++,即自加1,可至於前或後;如:++a(a先自增,然後再和a相加),a++(先和a相加,a再自增)

      自減:- -,即自減1, 可至於前或後;如:- -a(a先自減,然後再和a相減),a- -(先和a相減,a再自減)

      字符串相連:+

2、賦值運算符:=、+=、-=、*=、/=、%=等

如:s += 5,就是將s的值和5相加再賦值給s。但是這種運算和s = s + 5;是有區別的。

s += 5有自我提升的功能,而 s = s + 5;可能就會編譯失敗。比如,s爲short型的值,對於後者那麼編譯時就會報錯:可能損失精度。對於前者,會將5強轉爲short型,在與s的值相加,然後再賦值給s。

3、比較運算符:==、!=、< 、> 、<= 、>= 、instanceof

結果均爲boolean型,即所得的值爲true或者false

如:5 == 3爲false;5 != 3爲true

4、邏輯運算符:&、|、^、!、&&、||

      與: &; 如:true & false 爲false;

      或:|;    如:true | false爲true;

      非: !;    如:  ! true 爲false

      異或: ^; 如:true ^ false 爲true(真異或真爲假)

      短路:&&:只要有一邊爲false,結果則爲false

                   ||:只要有一邊爲true,結果則爲true

5、位運算:<<  、>> 、>>> 、 &、|、^ 、~;在二進制水平上運算

      左移:<<;3 << 2 = 12  ---->3*2*2=12

      右移:>>;3 >> 1 = 1     ---->3/2 =1

      無符號右移:>>>; 3 >>> 1 = 1     ---->3/2 =1

      與: &;6 & 3 = 2 

      或:|;6 | 3 = 7

      異或: ^;6  ^ 3 = 5。一個數以後兩次相同點數,那麼結果還爲本身。在加密和解密中有應用。

      ~:反碼:~ 6 = -7,其實就是對當前數的二進制的取反。

注:

a.對於>>,最高位補什麼由原有數據的最高位值而定,若最高位爲0,右移後,用0補空位。如果最高位爲1,右移後,用1補空位。

b.對於>>>,無論最高位是0還是1,右移後,都用0補空位。


三、進制操作(瞭解不做重點總結)

1、概述:java中有四種進制形式:二進制,八進制,十進制,十六進制。

整數的表現形式:

二進制:    0和1,逢2進1.如110(表示六)

八進制:    0 - 7,逢8進1;以0開頭表示。如015(表示十三)

十進制:    0 - 9,逢10進1。如12(表示十二)

十六進制:0 - 9、A - F,逢16進1;以0x開頭表示。如0x3c(表示60)

2、進制特點:

a.二進制:始於電信號。任何計算機底層都是用二進制表示的。

b.八進制:將二進制的三位表示一位,即爲八進制,最大值爲7(2^3-1)。

c.十六進制:將二進制的四位表示一位,即爲十六進制,最大值爲15(2^4-1)。

d.進制數越大,位數越短。

3、進制間轉化:

1)十進制轉二進制:取2的餘數運算

例:求6的二進制:6/2商3---餘0,3/2商1---餘1,1/2---餘1;最終餘1或除盡餘0,則將每次除得的餘數倒敘排列爲110,即十進制的6轉爲二進制是110.

2)二進制轉十進制:取2的冪運算

例:求110的十進制:0*2^0 +1*2^1 +1*2^2 = 6,其中012...代表各位數。

3)二進制轉八進制:從右向左取二進制三位爲一位,不足補0,算出每三位的十進制值(不會超過7)

例:求10011011的八進制:八位補一位爲010,011,011;計算010 = 2, 011 = 3, 011 =3;則八進制爲233

4)二進制轉十六進制:從右向左取二進制四位爲一位,不足補0,算出每四位的十進制值(不會超過15,過了9,記爲A/B/C/D/E/F)

例:求10011011的十六進制:補位爲0000,0000,1001,1011,計算0000 = 0, 0000 = 0,1001 = 9, 1011 = B(11),則十六進制爲9B

4)八進制、十六進制轉二進制:先轉爲十進制,再轉爲二進制。

5)二進制的負數形式:取反後再求其補碼

例:求-6的二進制:

              0000-0000  0000-0000  0000-0000  0000-0110

          ^ 1111-1111  1111-1111  1111-1111  1111-1111

          --------------------------------------------------------------------

              1111-1111  1111-1111  1111-1111  1111-1001

           + 0000-0000  0000-0000  0000-0000  0000-0001

          --------------------------------------------------------------------

              1111-1111  1111-1111  1111-1111  1111-1010

則-6的二進制爲:1111-1111  1111-1111  1111-1111  1111-1010。

說明:二進制的負數形式的最高位皆爲1.


四、三元運算符:

格式:布爾型表達式 ? 表達式1 : 表達式2

說明:當布爾型表達式的值爲true時,則計算表達式1;否則計算表達式2。

如:返回兩個數中較小的值---->  x < y ? x : y。

注意:

a.這個是有返回值的,需要由變量接收這個返回值,如:int a =  x < y ? x : y;

b.表達式1和表達式2必須都返回相同類型,或是相同類型的數據。


五、運算符優先級:

運算符間有不同的優先級。就是誰先運算的問題。具體如下:從左向右運算的:

運算級別由高到低

1級----- 方法調用:[ ] . ()

2級----- 一元運算符:! 、~ 、++、-- 、+、-;強制類型轉換:( );創建:new

3級----- 二元運算符:*和 / 優於 + 和 -

4級----- 位運算:<<、>> 、>>>

5級----- 比較運算符:< 、> 、<= 、>= 、instanceof 優於 ==、!=、

6級----- 邏輯運算符:&、|、^、!、&&、||

7級----- 三元運算符:? : 

8級----- 算數運算符等: =、+=、-=、*=、/=、%=、&=、|=、 ^=、 <<=、>>= 、>>>=

上面除了第2、7和8級的是從右向左運算,其他的都是從左向右進行的運算。


六、轉義字符:

1、概述:通過 \ 來轉變後面字母或符號的含義。如:\n表示換行。

2、常用轉義字符:

      \b:退格                                 \n:換行

      \t:製表符,相當於tab鍵         \r:回車

      \\:表示反斜槓           \':表示單引號             \":表示雙引號



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章