Java學習記錄二
①關鍵字:•被Java語言賦予特定含義的單詞,常用的關鍵字不需要記憶,用的多了自然就熟了。
關鍵字特點
•組成關鍵字的字母全部小寫
關鍵字注意事項
•goto和const作為保留字存在,目前並不使用
•
②識別符號:•就是給類,介面,方法,變數等起名字時使用的字元序列 (見名知意、駝峰原則)
組成規則
•英文大小寫字母
•數字字元
•$和_
注意事項
•不能以數字開頭
•不能是Java中的關鍵字
•區分大小寫
③註釋:•用於解釋說明程式的文字 ,要勤寫註釋,不認一段時間後不認識自己寫的程式碼。
•單行註釋
•格式: //註釋文字
•
•格式: /* 註釋文字 */
•文件註釋
•格式:/** 註釋文字 */
④常量:•在程式執行的過程中其值不可以發生改變
Java中常量分類
•字面值常量
•自定義常量(面向物件部分說)
字面值常量的分類
字串常量 用雙引號括起來的內容
整數常量 所有整數 :•12,23
小數常量 所有小數 :12.34,56.78
字元常量 用單引號括起來的內容 :‘a’,’A’,’0’
布林常量 較為特有,只有true和false
空常量 null(陣列部分講解)
⑤進位制:就是進位制,是人們規定的一種進位方法。 對於任何一種進位制--X進位制,就表示某一位置上的數運算時是逢X進一位。二進位制就是逢二進一,八進位制是逢八進一,十進位制是逢十進一,十六進位制是逢十六進一。
•二進位制 ----------->由電訊號開關演變而來
•八進位制 ------------>只用二進位制太長了,三位二進位制用一位來表示,有了八進位制
•十進位制
•十六進位制
1)進位制的區分
•二進位制
•由0,1組成。以0b開頭
•八進位制
•由0,1,…7組成。以0開頭
•十進位制
•由0,1,…9組成。整數預設是十進位制的
•十六進位制
•由0,1,…9,a,b,c,d,e,f(大小寫均可)。以0x開頭
2)進位制的轉換
十進位制和二進位制的快速轉換
•8421碼
二進位制和八進位制,十六進位制如何轉換
•二進位制到八進位制 3位組合
•100110
•二進位制到十六進位制 4位組合
•100110
3)有符號資料表示法 :原碼、反碼、補碼,所有的資料的運算都是採用補碼進行的。感覺原、反、補主要針對的是負數
•原碼
•就是二進位制定點表示法,即最高位為符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
•反碼
•正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
•補碼
•正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
⑥變數:•在程式執行的過程中,在某個範圍內其值可以發生改變的量
變數定義格式
•資料型別 變數名 = 初始化值;
⑦資料型別:Java語言是強型別語言,對於每一種資料都定義了明確的具體資料型別,在記憶體總分配了不同大小的記憶體空間
整數預設:int 小數預設:double
1)記憶體分配
2)注意事項
•作用域
•變數定義在哪一級大括號中,哪個大括號的範圍就是這個變數的作用域。相同的作用域中不能定義兩個同名變數。
•初始化值
•沒有初始化值不能直接使用
•在一行上建議只定義一個變數
•可以定義多個,但是不建議
3)資料型別的轉換
boolean型別不能轉換為其他的資料型別
預設轉換
•byte,short,char—int—long—float—double
•byte,short,char相互之間補轉換,他們參與運算首先轉換為int型別
強制轉換
•目標型別 變數名=(目標型別)(被轉換的資料);
面試題 :常量:java在編譯時期會檢查該常量的和是否超出byte型別的範圍,變數:轉int,再賦值給byte報錯。
•byte b1=3,b2=4,b;
•b=b1+b2;
•b=3+4;
⑧運算子
1)算數運算子
2)賦值運算子
符號:
•= , +=, -=, *=, /=, %=
3)關係運算符
4)邏輯運算子
異或( ^ )與或( | )的不同之處是:當左右都為true時,結果為false。左右相同false,不同則為true
5)位運算子
&:110(6) & 011(3)→ 010 (2) 有0則0
| :110 | 011 →7 有1則1
^:110 ^ 011 → 5 不同為1相同為0
6)三目運算子
格式
•(關係表示式)?表示式1:表示式2;
•如果條件為true,運算後的結果是表示式1;
•如果條件為false,運算後的結果是表示式2;
⑨流程控制:在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。也就是說程式的流程對執行結果有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現我們要完成的功能。
1)順序結構概述
•是程式中最簡單最基本的流程控制,沒有特定的語法結構,按照程式碼的先後順序,依次執行,程式中大多數的程式碼都是這樣執行的。
•總的來說:寫在前面的先執行,寫在後面的後執行
2)選擇結構
•也被稱為分支結構。
•選擇結構有特定的語法規則,程式碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,所以產生選擇,按照不同的選擇執行不同的程式碼。
•Java語言提供了兩種選擇結構語句
•if語句
•switch語句
3)迴圈結構:常用的有while for do...while
迴圈語句可以在滿足迴圈條件的情況下,反覆執行某一段程式碼,這段被重複執行的程式碼被稱為迴圈體語句,當反覆執行這個迴圈體時,需要在合適的時候把迴圈判斷條件修改為false,從而結束迴圈,否則迴圈將一直執行下去,形成死迴圈。
•初始化語句:
•一條或者多條語句,這些語句完成一些初始化操作。
•判斷條件語句:
•這是一個boolean 表示式,這個表示式能決定是否執行迴圈體。
•迴圈體語句:
•這個部分是迴圈體語句,也就是我們要多次做的事情。
•控制條件語句:
•這個部分在一次迴圈體結束後,下一次迴圈判斷條件執行前執行。通過用於控制迴圈條件中的變數,使得迴圈在合適的時候結束。
注:迴圈的跳出
break 中斷
continue 繼續
return 返回
⑩方法:方法就是完成特定功能的程式碼塊
方法格式解釋
•修飾符 比較多,後面會詳細介紹。目前public static
•返回值型別 用於限定返回值的資料型別
•方法名 一個名稱,為了方便我們呼叫方法
•引數型別 限定呼叫方法時傳入引數的資料型別
•引數名 是一個變數,接收呼叫方法時傳入的引數
•方法體 完成功能的程式碼
•return 結束方法以及返回方法指定型別的值
•返回值 程式被return帶回的結果,返回給呼叫者
如何定義一個方法
•返回值型別 明確功能結果的資料型別
•引數列表 明確有幾個引數,以及引數的型別
方法的注意事項
方法不呼叫不執行
方法與方法是平級關係,不能巢狀定義
方法定義的時候引數之間用逗號隔開
方法呼叫的時候不用在傳遞資料型別
如果方法有明確的返回值,一定要有return帶回一個值
方法的過載
方法過載概述
•在同一個類中,允許存在一個以上的同名方法,只要它們的引數個數或者引數型別不同即可。
方法過載特點
•與返回值型別無關,只看方法名和引數列表
•在呼叫時,虛擬機器通過引數列表的不同來區分同名方法
陣列:陣列是儲存同一種資料型別多個元素的集合。也可以看成是一個容器
陣列的定義格式
•格式1:資料型別[] 陣列名;
•格式2:資料型別 陣列名[];
動態初始化:初始化時只指定陣列長度,由系統為陣列分配初始值。
•格式:資料型別[] 陣列名 = new 資料型別[陣列長度];
靜態初始化:初始化時指定每個陣列元素的初始值,由系統決定陣列長度。
•格式: 資料型別[] 陣列名 = new 資料型別[]{元素1,元素2,…};
資料型別[] 陣列名 = {元素1,元素2,…};
常見問題:
陣列索引越界
•ArrayIndexOutOfBoundsException
•訪問到了陣列中的不存在的索引時發生。
空指標異常
•NullPointerException
陣列引用沒有指向實體,卻在操作實體中的元素時
二維陣列:
格式1
•資料型別[][] 變數名 = new 資料型別[m][n];
•m表示這個二維陣列有多少個一維陣列
•n表示每一個一維陣列的元素個數
格式2
•資料型別[][] 變數名 = new 資料型別[m][];
•m表示這個二維陣列有多少個一維陣列
•這一次沒有直接給出一維陣列的元素個數,可以動態的給出。
格式3
•資料型別[][] 變數名 = new 資料型別[][]{{元素…},{元素…},{元素…}};
•簡化版格式:
•資料型別[][] 變數名 = {{元素…},{元素…},{元素…}};
Java中的記憶體分配:重點!!
Java 程式在執行時,需要在記憶體中的分配空間。為了提高運算效率,就對空間進行了不同區域的劃分,因為每一片區域都有特定的處理資料方式和記憶體管理方式。
•棧 儲存區域性變數
•堆 儲存new出來的東西
•方法區 (面向物件部分講)
•本地方法區 (和系統相關)
•暫存器 (給CPU使用)