標籤:
知識要點:
關鍵字 標識符 注釋 常量、進位和進位轉換 變數 資料類型和類型轉換 運算子 語句
1:關鍵字(掌握) (1)被Java語言賦予特定含義的單詞 (2)特點: 全部小寫。 (3)注意事項: A:goto和const作為保留字存在。 B:類似於Notepad++這樣的進階記事本會對關鍵字有特殊顏色標記
用於定義存取權限修飾符的關鍵字 |
private |
protected |
public |
|
|
用於定義類,函數,變數修飾符的關鍵字 |
abstract |
final |
static |
synchronized |
|
用於定義類與類之間關係的關鍵字 |
extends |
implements |
|
|
|
用於定義建立執行個體及引用執行個體,判斷執行個體的關鍵字 |
new |
this |
super |
instanceof |
|
用於異常處理的關鍵字 |
try |
catch |
finally |
throw |
throws |
用於包的關鍵字 |
package |
import |
|
|
|
其他修飾符關鍵字 |
native |
strictfp |
transient |
volatile |
assert |
2:標識符(掌握)(1)就是給類,介面,方法,變數等起名字的字元序列(2)組成規則: A:英文大小寫字母 B:數字 C:$和_(3)注意事項: A:不能以數字開頭 B:不能是java中的關鍵字 C:區分大小寫(4)常見的命名規則(見名知意)A: 包 全部小寫 單級包:小寫 舉例:liuyi,com 多級包:小寫,並用.隔開 舉例:cn.itcast,com.baiduB: 類或者介面 一個單詞:首字母大寫 舉例:Student,Demo 多個單詞:每個單字首大寫 舉例:HelloWorld,StudentNameC:方法或者變數 一個單詞:首字母小寫 舉例:name,main 多個單詞:從第二個單詞開始,每個單字首大寫 舉例:studentAge,showAllNames()D:常量 全部大寫 一個單詞:大寫 舉例:PI 多個單詞:大寫,並用_隔開 舉例:STUDENT_MAX_AGE
3:注釋(掌握)(1)就是對程式進行解釋說明的文字(2)分類: A:單行注釋 // B:多行注釋 /**/ C:文檔注釋(後面講) /** */(3)把HelloWorld案例寫了一個帶注釋的版本。 後面我們要寫一個程式的過程。 需求: 分析: 實現: 代碼體現:(4)注釋的作用 A:解釋說明程式,提高了代碼的閱讀性。 B:可以協助我們偵錯工具。 後面我們會講解一個更高端的一個調試工具
4:常量(掌握)(1)在程式執行的過程中,其值不發生改變的量(2)分類: A:字面值常量 B:自訂常量(後面講) (3)字面值常量 A:字串常量 "hello" B:整數常量 12,23 C:小數常量 12.345 D:字元常量 ‘a‘,‘A‘,‘0‘ E:布爾常量 true,false F:空常量 null(後面講) (4)在Java中針對整數常量提供了四種表現形式 A:二進位 由0,1組成。以
0b開頭。 B:八進位 由0,1,...7組成。以
0開頭。 C:十進位 由0,1,...9組成。整數預設是十進位。 D:十六進位 由0,1,...9,a,b,c,d,e,f(大小寫均可)組成。以
0x開頭。
進位概述以及二進位,八進位,十六進位圖解
5:進位轉換(瞭解)(1)其他進位到十進位 係數:就是每一個位上的數值 基數:x進位的基數就是x 權:對每一個位上的資料,從右,並且從0開始編號,對應的編號就是該資料的權。 結果:係數*基數^權次冪之和。(2)十進位到其他進位 除基取餘,直到商為0,餘數反轉。(3)進位轉換的快速轉換法 A:十進位和二進位間的轉換 8421碼。 B:二進位到八進位,十六進位的轉換 二進位到八進位 3位組合 100110 二進位到十六進位 4位組合 100110
任意進位到十進位的轉換
十進位到任意進位的轉換
快速的進位轉換法
. 原碼反碼 在電腦內,有符號數有3種標記法:原碼、反碼和補碼。所有資料的運算都是採用補碼進行的。原碼 : 就是二進位定點標記法,即最高位為符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。反碼 : 正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。補碼 : 正數的補碼與其原碼相同;負數的補碼是在其反碼的末位
原碼反碼補碼的講解
6:變數(掌握)(1)在程式的執行過程中,其值在某個範圍內可以發生改變的量(2)變數的定義格式: A:資料類型 變數名 = 初始化值; B:資料類型 變數名; 變數名 = 初始化值;
7:資料類型(掌握)(1)Java是一種強型別語言,針對每種資料都提供了對應的資料類型。(2)分類: A:基礎資料型別 (Elementary Data Type):4類8種 B:引用資料類型:類,介面,數組。(3)基礎資料型別 (Elementary Data Type) A:整數 佔用位元組數 byte 1 short 2 int 4 long 8 B:浮點數 float 4 double 8 C:字元 char 2 D:布爾 boolean 1
注意: 整數預設是int類型,浮點數預設是double。 長整數要加L或者l。 單精確度的浮點數要加F或者f。
8:資料類型轉換(掌握) (1)boolean類型不參與轉換 (2)預設轉換 A:從小到大 B:byte,short,char -- int -- long -- float -- double C:byte,short,char之間不相互轉換,直接轉成int類型參與運算。 (3)強制轉換 A:從大到小 B:可能會有精度的損失,一般不建議這樣使用。 C:格式: 目標資料類型 變數名 = (目標資料類型) (被轉換的資料);
(4)思考題和面試題:#面試#
A:下面兩種方式有區別嗎? float f1 = 12.345f; float f2 = (float)12.345;
B:下面的程式有問題嗎,如果有,在哪裡呢? byte b1 = 3; byte b2 = 4; byte b3 = b1 + b2; //有,因為變數相加會先看類型問題,這個是型別提升,所以有問題(byte相加 會類型提升--int,int賦值 給byte而沒有經過強轉, 所以編譯會報錯) byte b4 = 3 + 4; //沒有,常量,先計算出來,看結果是否超過byte範圍,如果不超過就不報錯
在定義Long或者Float類型變數的時候,要加L或者f。
整數預設是int類型,浮點數預設是double。
byte,short在定義的時候,他們接收的其實是一個int類型的值。
這個是自己做了一個資料檢測的,如果不再它們的範圍內,就報錯。
C:下面的操作結果是什麼呢? byte b = (byte)130; //-126(詳解見下)
D:字元參與運算 是尋找ASCII裡面的值 ‘a‘ 97 ‘A‘ 65 ‘0‘ 48 System.out.println(‘a‘); //結果:a System.out.println(‘a‘ + 1); //結果:98
E:字串參與運算 這裡其實是字串的串連 System.out.println("hello"+‘a‘+1); //helloa1 System.out.println(‘a‘+1+"hello"); //98hello System.out.println("5+5="+5+5); //5+5=55 System.out.println(5+5+"=5+5"); //10=5+5
思考題:在java中為什麼 int的範圍是-2^31到2^31-1弄清楚為什麼java中Byte類型的取值範圍是-128~127 ?也就明白上面的問題了: Byte佔一個位元組8位,首位是符號位,最大值為0111 1111即127,關鍵是這個-128,有人說首位是符號位,那就是剩餘的7位表示真值,最大為111 1111,最小為000 0000,那最小即為1000 0000,就是-128,(關鍵是不是說好首位是符號位了嗎?怎麼負數算真值得時候又把首位1給算進去了?) (負數)最大 1111 1111 代表的是-1 最小1000 0000 代表的是 -128 這個很難理解嘛? 1111 1111、1000 0000代表的是-1,-128的補碼,在記憶體中,存放的都是補碼,不是涉及到負數,負數所謂的補碼就是他們絕對值的原碼的取反加+1 比如 -1的絕對值是1 1的原碼是0000 0001 反碼是 1111 1110反碼+1 也就是補碼就是 1111 1111 -128的絕對值是 128 原碼是 1000 0000 反碼是 0111 1111反碼+1 也就是 1000 0000(補充:)
| ①在記憶體中,存放的都是補碼,不是涉及到負數,都用補碼,正數、負數在記憶體中都是補碼形式表示,只不過正數的補碼與其原碼相同,而負數的補碼是其絕對值的原碼的反碼+1 |
128:10000000-128:10000000 (這裡的1即是符號位,也是數值位) |
| /* byte b = 130;有沒有問題?如果我想讓賦值正確, 可以怎麼做?結果是多少呢? 練習:byte b = (byte)300;*/class DataTypeDemo7 { public static void main(String[] args) { //因為byte的範圍是:-128到127。 //而130不在此範圍內,所以報錯。 //byte b = 130; //我們可以使用強制類型轉換 byte b = (byte) 130; //結果是多少呢? System.out.println(b); }}/* 分析過程: 我們要想知道結果是什麼,就應該知道是如何進行計算的。 而我們又知道電腦中資料的運算都是補碼進行的。 而要得到補碼,首先要計算出資料的二進位。 A:擷取130這個資料的二進位。 00000000 00000000 00000000 10000010 這是130的原碼,也是反碼,還是補碼。 B:做截取操作,截成byte類型的了。 10000010 這個結果是補碼。 C:已知補碼求原碼。 符號位 數值位 補碼: 1 0000010 反碼: 1 0000001 原碼: 1 1111110 = -126*/ |
附錄:
運算子的優先順序(從高到低)
優先順序 |
描述 |
運算子 |
1 |
括弧 |
()、[] |
2 |
加號或減號 |
+、- |
3 |
自增自減,非 |
++、--、! |
4 |
乘除,取餘 |
*、/、% |
5 |
加減 |
+、- |
6 |
移位元運算 |
<<、>>、>>> |
7 |
大小關係 |
>、>=、<、<= |
8 |
相等關係 |
==、!= |
9 |
按位與 |
& |
10 |
按位異或 |
^ |
11 |
按位或 |
| |
12 |
邏輯與 |
&& |
13 |
邏輯或 |
|| |
14 |
條件運算 |
?: |
15 |
賦值運算 |
=、+=、-=、*=、/=、%= |
16 |
位賦值運算 |
&=、|=、<<=、>>=、>>>= |
Java基礎班學習筆記(2)