標籤:
------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------
java語言基礎(2)
主要內容:《進位、原碼反碼補碼、變數、資料類型、類型轉換、運算子》
1 不同進位資料的表現形式
A.將每三位取出,轉換為十進位:
10011100101
每三位取出:
010 011 100 101
轉成十進位:
2 3 4 5
組成一個新的數字:2345,它是一個八位元
八進位在源碼中可以表示為:
在記憶體中儲存的仍然是二進位:
B.將每四位取出,轉換為十進位:
10011100101
每四位取出:
0100 1110 0101
轉成十進位:
4 14 5
組成一個新的數字:十以上使用字母:A,B,C,D,E,F
4E5。它是一個十六進位數;
十六進位數在源碼中表示為:
在記憶體中仍然儲存是二進位;
二進位
由0,1組成。以0b開頭
八進位
由0,1,…7組成。以0開頭
十進位
由0,1,…9組成。整數預設是十進位的
十六進位
由0,1,…9,a,b,c,d,e,f(大小寫均可)。以0x開頭
2 十進位到任意進位的轉換圖解
十進位與其它進位的轉換:
十進位的表示方法:
32652
=3 * 10000 + 2 * 1000 + 6 * 100 + 5 * 10 + 2
=3 * 10^4 + 2 * 10^3 + 6 * 10^2 + 5 * 10^1 + 2 * 10^0
係數:每一位上的資料;
基數:10(進位數,我們這裡是十進位)
權:多少次冪;
整個運算式:係數 * 基數(的權次冪),的累加和
二進位轉換為十進位的表示方式:
11111110:使用十進位的公式表示一下:
= 1 * 2^7 + 1 * 2^6 + 1 * 2^5 + 1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 1 * 2^1 + 0 * 2^0
= 128 + 64 + 32 + 16 + 8 + 4 + 2 + 0
= 254
八進位轉換為十進位:
(0)376:使用十進位的公式:
= 3 * 8^2 + 7 * 8^1 + 6 * 8^0
= 192 + 56 + 6
= 254
十六進位轉換為十進位:
(0x)FE:使用十進位的公式:
= F * 16^1 + E * 16^0
= 15 * 16^1 + 14 * 16^0
= 240 + 14
= 254
十進位到二進位:用除法
十進位到其它進位:用除法;
其它進位到十進位:用乘法;
3 原碼反碼補碼的講解
有符號資料標記法
在電腦內,有符號數有3種標記法:原碼、反碼和補碼。所有資料的運算都是採用補碼進行的。
原碼
就是二進位定點標記法,即最高位為符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
反碼
正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
補碼
正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
4 變數的概述及格式
為什麼需要變數:
1.當我們反覆的想使用一個資料,例如:公司使用3.14159作為計算圓面積的π值:
如果直接使用字面量,容易發生寫錯的情況。如果這個值需要更改,所有的位置都需要改;
2.我們可以給這個值起個名字,以後使用這個名字即可;
3.給某個值起個名字,這個就是"變數名":
4.變數的定義格式:
資料類型 變數名 [ = 初始化值];
說明:
資料類型:後邊說;
變數名:自訂的標識符。遵循標識符的命名規則和命名規範;
初始化值:在聲明時,可以不指定初始化值,但不能訪問這個變數的值;
所以,建議在聲明變數時,都要初始化值;
5 資料類型的概述和分類
Java中的資料類型:
1.基礎資料型別 (Elementary Data Type):四類八種:
四類:
整數:byte,short,int,long
浮點:float,double
字元:char
布爾:boolean
2.引用資料類型:
注意:在Java中,所有的"整數字面量"全部使用int類型儲存;
在Java中,所有的"浮點字面量"全部使用double類型儲存;
boolean的空間大小:有效位是1位。在記憶體中,使用int空間對一個boolean類型的值進行運算。
整數預設:int 小數預設:double
6 使用變數的注意事項
使用變數注意事項:
範圍
變數定義在哪一級大括弧中,哪個大括弧的範圍就是這個變數的範圍。相同的範圍中不能定義兩個同名變數。
初始化值
沒有初始化值不能直接使用
在一行上建議只定義一個變數
可以定義多個,但是不建議
定義字串類型:
1.在Java中"字串"不是"基礎資料型別 (Elementary Data Type)";它是一個"引用資料類型";
2.目前只需要學會"定義字串"就可以;
3.定義格式:
String 變數名 = 值;
7 資料類型轉換之隱式轉換
byte,short,char—int—long—float—double
byte,short,char相互之間補轉換,他們參與運算首先轉換為int類型
8 資料類型轉換之強制轉換
1.將一個"寬類型"轉換為一個"窄類型"時,叫:"強制類型轉換";
2.強制類型轉換:截掉高位,保留低位。其結果可能不可預知;
3.任何的"數實值型別"都可以強制轉換;
4.boolean類型不能轉換為其它類型;
9 面試題之變數相加和常量相加的區別
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2;//編譯錯誤
byte b4 = b1 + 20;//編譯錯誤
byte b5 = 10 + b2;//編譯錯誤
byte b6 = 10 + 20;//OK的
字串的相加:
+符號:如果左右兩邊是"數實值型別",做加法運算;
如果左右兩邊,有一邊是"字串"類型,將做"字串串連"。返回一個"字串"
10 算術運算子的基本用法
整數除0:運行時異常;
整數模0:運行時異常;
浮點除0:出現Infinity
浮點模0:出現NaN
11 賦值運算子的基本用法
1.= 2.+= 3.-= 4.*= 5./= 6.%=
基本賦值運算子:順序:從右至左。整個複製運算式最後會返回這個變數
12 邏輯運算子的基本用法
1.&& : 邏輯與(並且):左右兩邊都為true,結果為:true。有一個為false,結果就為false;
2.|| :邏輯或(或者):左右兩邊有一邊為true,結果為:true。
3.! : 非(不是....):!true等於false,!false等於true.
位元運算符:可用作布爾的判斷;它們的結果跟"邏輯與"和"邏輯或"一樣的。
1.& : 與:
2.| : 或
3.^ : 異或:兩位相同,結果為:false;兩位不同,結果為:true
13邏輯運算子&&和&的區別
按位&與邏輯&&和按位|與邏輯||的區別:
1.邏輯&&和邏輯||"具有短路行為";一旦確定整個運算式的結果,將不再繼續判斷後續運算式;
2.按位&和按位|"不具有"短路行為";每個運算式都會執行到。但結果與使用邏輯運算子是一樣的。
14 關係運算子的基本用法
1.==:判斷是否相等:相等返回true,否則返回false;
2.!: 判斷是否不等。不等,返回true,否則返回false;
3.<: 判斷左運算元是否小於右運算元。是:返回true,否則返回false;
4.>: 判斷左運算元是否大於右運算元。是:返回true,否則返回false;
5.<= :判斷左運算元是否小於或等於右運算元。是:返回true,否則返回false;
6.>= :判斷左運算元是否大於或等於右運算元。是:返回true,否則返回false;
7.instanceof:在物件導向那裡說;
java--java語言基礎(2)--黑馬程式員