標籤:相容 參考 極客 unicode 基礎資料型別 (Elementary Data Type) list 最小 小數 補碼
第三章 java基礎一、 電腦進位轉換:二進位、八進位、十進位、十六進位互轉
電腦系統數制概述
-
- 數制是一組固定的符號和統一的規劃來表示數值的方法;
- 電腦底層使用的數制是二進位;
- 用Java編程實用的是十進位。Java底層仍使用二進位;
- 電腦常用的數制還有八進位和十六進位;
十進位的基本數字0~9,逢十進位。
10稱做“基數”,10^n(10的n次冪)被稱作“權”。
二進位的基本數字是0、1,逢2進位。
二進位的基數為2,權為2^n(2的n次方)。
十六進位基本數字:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,逢十六進位
十六進位是二進位的簡寫,方便專業人員書寫位元據。
16進位的基數是16,權為16^n(16的n次方)
在Java代碼中十六進位用0X或0x做首碼(0是數字,不是字母)。
樣本:5E十六進位=5*16^1+14*16^0 = 80+14 =94;
二進位轉換成十六進位 規則: 四位位元相當於一位十六進位數。
十進位數轉換二進位:規則:不斷除以2,保留餘數,商為0時不再除2.
十進位數轉換十六進位:規則: 不斷除以16,保留餘數,商為0時不再除16.
二、變數與資料類型1、概述
Java 定義了基礎資料型別 (Elementary Data Type)、引用資料類型和自訂資料類型;
2、棧空間
-
- 棧空間存取資料的效率高;
- 棧中的資料按“先進後出”的方式管理;
- 棧空間儲存空間較小,不能存放大量的資料;
- JMV將基礎資料類型的資料存放在棧空間;
3、堆空間
-
- 堆空間存取資料的效率最低;
- 資料存放的位置隨機分配;
- 堆空間儲存資料的空間大,能存放大容量的資料;
三、變數的定義和變數使用的原因
變數:可變的量;
常量:不可變的量;
字面量:Java的變數和常量中存放的具體資料成為字面量;
電腦的進階語言普遍使用變數來管理記憶體中儲存的資料。
變數管理參考型別的資料:
四、變數的命名、定義和初始化1、變數的命名
-
- 首字母是英文字母、$或底線,由字母、數字、底線組成;
- 變數的命名遵循見名知義的原則。
- Java變數名建議不用中文。
- 變數名首字母不用大寫字母。
- 用駝峰命名法命名多個單片語成的變數名。eg:sumScore
- 變數名不要使用Java關鍵字。
2、變數的定義
定義變數:每個變數必需屬於一種類型。
類型 變數名1,變數2,…,變數n;
e.g: byte score; //儲存單科分數
short age; //儲存年齡
int sumScore; //儲存總分
3、變數的初始化
賦值 =
e.g: age = 18;
score = 60;
sumScore = 600;
五、變數的範圍
1、java用一對大括弧作為語句塊的範圍,稱為範圍。
2、範圍中的變數不能重複定義。
3、離開範圍,變數所分配的記憶體空間將為JVM回收。
六、基礎資料類型的封裝類
Java為基礎資料類型提供了對應的類,這些類稱作封裝類,如
1、封裝類中封裝了一些很實用的方法和常量。例如:Byte.MIN_VALUE是Byte類中的一個常量,存放了byte類型資料的最小值。
2、封裝類在集合中用來自訂集合元素的類型。
3、使用封裝類
Integer.MIN_VALUE: int類型的最小值:-2^31
Integer.MAX_VALUE: int類型的最大值:2^31-1
int Integer.parseInt(String sInteger);
作用:將字串類型的整數轉換為int類型的資料。
String Integer.toBinaryString(int value);
作用:將十進位數轉化為二進位,返回結果String類型。
String Integer.toHexString(int value);
作用:將十進位數轉換為十六進位,返回結果String類型。
七、二進位補碼1、概述
電腦系統的內部一二進位形式儲存資料。
在Java程式中輸入的十進位的資料都會被自動轉換為二進位,Java內部也以二進位來進行數值運算,但返回的結果是是進位。
2、補碼規則
-
- 在電腦系統中,數值一律用二進位的補碼來儲存。
- 二進位的最高位是符號位,0表示正數,1表示負數。
- 正數的值是其本身,負數的值是最高位(符號位)不變,其它位逐位取反,再加1.
- 兩數相加,若最高位(符號位)有進位,則進位被捨棄。
3、為什麼使用補碼
-
- 可以將符號位和其他位統一處理。
- 最高位不再表示數值,而是作為符號位,正好將數值折半,即一半是0至正數,一半是負數。eg :4位 位元共有16個數,用補碼錶示,則一半是0~7,一半是-1~-8. 8位 位元共有256個數,用補碼錶示,則一半是0~127,一半是-1~-128.
4、補碼運算的特徵
-
- 電腦中正數和負數的關係是取反加一。
- 補碼運算是封閉的:運算結果保留在補碼範圍之內,超範圍就溢出。
- 4位二進位補碼最多能表示2^4(16)個數,數的範圍是-8~7.
- 8位二進位補碼最多能表示2^8(256)個數,數的範圍是-128~127.
- 16位二進位補碼最多能表示2^16(65536)個數,數的範圍是-32768~32767.
- 32位二進位補碼最多能表示2^32個數,數的範圍是-2^31~2^31-1.
5、補碼運算的原理
正數+負數 = 模
模:某種類型資料的總數,例如:
4位二進位的模是2^4=16
因此,負數=模-正數,這就是逐位取反加1的原因。
八、整數、浮點、字元類型1、整數類型
-
- Java有四種整數類型:byte、short、int、long。
- Java預設整數計算的結果是int類型。
- 整數的字面量是int類型。
- 若字面量超過int類型的最大值,則字面量是long類型,那麼後面要用L(或l)表示該值是long類型。eg: long longValue = 300000000L
2、浮點類型
-
- 浮點類型用於表示小數的資料類型。
- 浮點數原理:也就是二進位科學計數法。
- Java的浮點類型有float和double兩種。
- Java預設浮點類型計算的結果是double類型,字面量也是double類型。若要給float類型的變數賦字面量的值,則要在字面量後面加F(或f)。eg : float f=5.3;將會出現編譯錯誤,正確的賦值是:float f=5.3f;
浮點數科學計演算法:
-
- 十進位浮點數科學計數法:219345=2.19345*(10^5)
- 二進位浮點數科學計數法:10111=1.0111*(2^100)
float類型:
-
- float類型共32位,1位為符號位,指數8位,為數32位。
- float的精度是23位(即能精確表示23位的數,超過就被截取了)。小數是以尾數長度來表示精確度的,比如pi=3.1415的精度是4位。
- float儲存資料的範圍大於int類型,但精度比int要小,因為int的精度是31位。
double類型
-
- double類型,1位符號位,11位指數,52位尾數。
- double範圍遠遠大於long,但double精度不如long(long儲存資料的位元是63位)。
浮點運算的特點:
浮點運算就是實數運算,由於電腦智能儲存整數,所以實數都是約數,這樣浮點運算是很慢的而且會有誤差。
3、字元類型
-
- char類型的字面量可以是一個英文字母、字元或者一個漢字,並且由單引號包括。eg:’A’.
- Java底層使用一個16位的整數來處理字元類型,該數值是一個字元的unicode編碼值。
unicode編碼:
-
- unicode編碼是全球範圍內的編碼方法。
- unicode編碼的英文部分與ASCII碼相容(ASCII表示範圍0~128),同時英文字元和數字是連續編碼的。
- Java在處理char類型的資料時,在底層是按unicode碼來處理的。
編碼:
電腦硬體系統智能用0和1表示數,我們人為地做了規定,某個數還可以表示一個字元。eg:65表示A。
參考:極客學院課程 http://ke.jikexueyuan.com/zhiye/javaweb/
Java Web 學習筆記 第三章 java基礎(一)