1.2Java一些規範,常量變量及類型轉換

1.代碼書寫規則:
關鍵字:必須小寫

標識符:
        由26個英文字母大小寫,數字0~9,符號_  $組成
        (符號一般用於公司統一規範名稱)
        不能以數字開頭
        不能使用關鍵字(用關鍵字名字的大寫形式也不建議)

2.代碼書寫規範:
類名首字母一般大寫,後面每個單詞首字母也大寫(駝峯命名法)

3.註釋
單行註釋 //
多行註釋 /* */
多行註釋不能嵌套多行註釋
註釋的另一個作用:調試縮小代碼錯誤範圍
註釋存在源文件中,但在編譯的字節碼class文件中註釋不會被編譯進去。

java特有註釋:
文檔註釋
/**
文檔註釋
*/

註釋應用:
開發 或者 面試上機:要寫註釋
學習當中:第一步寫多行註釋,需求,思路,步驟:

/*
需求:練習一個hello world程序。

思路(通用的,不分語言):
1.定義一個類。因爲java程序都定義在類中,類的形式其實就是一個字節碼文件的最終體現
2. 定義一個主函數。爲了讓類可以獨立運行
3. 輸出語句

步驟(根據具體語言,用不同的表現形式寫出來):
1.class關鍵字來完成類的定義,起一個閱讀性強的類名
2.主函數:public static void main(String[]  agrs) 這是固定格式,JVM認識
3.使用輸出語句:System.out.println("Hello Java!");

代碼僅僅是思想的一種體現形式
*/

4.常量,變量:
(1)基本常量(6種):

1.整數常量(4個字節)
2.小數常量
3.布爾(boolean)常量:true false
4.字符常量:將一個數字字母或者符號 用單引號 ' ' 標識
5.字符串常量:將一個或多個字符用雙引號 " " 標識
6.null常量:只有一個數值:null

""       空字符串
null: 空值(串都給扔了,啥也沒有)

整數:表現形式

二進制(Bin,Binary system):01   滿21
八進制(Oct,Octal number system):0~7    滿81,用0開頭
十進制(Dec,Decimal system):0~9    滿101
十六進制(Hex,Hexadecimal ):0~9,A~F   滿161,用0x開頭

數據最小單元:byte 字節(一個字節等於8個bit位(二進制位))
              1byte = 8bit
         計算機中:1k = 1024
    生活中(U盤等):1k = 1000
0101 1101
三個一組 轉換成對應十進制數,形成的數爲八進制數
四個一組 轉換成對應十進制數,形成的數爲十六進制數

負數的二進制形式:(二進制最高位是1)
是這個數的正數的二進制取反,加1。

(2)變量:
內存中的一個存儲區域
該區域有自己的名字(變量名)和類型(數據類型)
該區域的數據可以在同一類型範圍內不斷變化

作用範圍:
一對 { } 之內

格式:
數據類型 變量名 = 初始化值;
定義變量時必須進行初始化。

細分:

數據類型:
    基本數據類型:
        數值型:
               整數類型(byte(1),short(2),int(4)默認,long(8))
               浮點類型(單精度float(4),雙精度double(8)默認)
        字符型:char(2),可以放中文,一箇中文佔兩個字節
        布爾型:boolean

    引用數據類型:
        類:class
        數組:[]
        接口:interface

3.強制類型轉換中 數據溢出計算:
正向溢出:byte b = (byte)128; b=128 - 2^8 = -128
反向溢出:short s = (short)-32770; s=2^16 -32770= 32766

有一種情況不需要強轉,會默認進行無條件強轉:
當操作數都是默認類型時,而且單個運算數值都沒有超過類型範圍,但是運算後的結果超出類型範圍時,編譯檢查不會報錯,結果會自動強轉,造成精度丟失,如:
int x = 0, y = 2147483647;  //y = Integer.MAX_VALUE;
x = y + 1;   // x = - 2147483648

4.類型轉換:
不同類型的數據是不能一起運算的。
不過 數值型數據 存在特殊情況,通過類型轉換來運算:

自動類型轉換(隱式):以佔用內存大的類型爲主,自動提升。
特別的:
如果操作數有long,結果就是long;
如果操作數有float,結果就是float;
如果操作數有double,結果就是double。

int x = 3;
byte b =5;
x = x + b;   //正確

b = b + 4;   //左邊爲byte類型,右邊爲int類型,大內寸轉小內存,可能會丟失精度,此時需要強制類型轉換。

強制類型轉換(顯示):慎用,可能丟失精度。
b = (byte)(b + 4)

5.字符類型運算:
字符型(2個字節)和 int型(4個字節)運算: 字符型數據自動提升爲 int型(對應的ASCII編碼),然後進行運算。

中文編碼表 GB2312  國標碼  6000多漢字
                  GBK   國標擴展碼 (目前通用) 2萬多漢字
                  GBK18030
常用ASCII碼:
A  65
a  97
0  48

JDK內置unicode國際標準碼錶,包括ASCII等。

面試題:
byte b = 4;  //編譯器自動判斷int型4是否在byte範圍內,如果在則進行一次默認強轉。
byte b1 = 3;
byte b2 = 7;
b = b1 + b2;   //編譯出現丟失精度錯誤,b1和b2是非默認型變量,不能進行檢查判斷後面的byte型值和是否在byte範圍內,以及後續的默認強轉賦值操作。

//另一種情況不會報錯,即當b1,b2是默認型變量(int,double...):
int b = 4; 
int b1 = 3;
int b2 = 7;
b = b1 + b2;   //和如果超出了int範圍,默認強轉,不報錯。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章