基本語法
關鍵字:特定含義的單詞。組成關鍵字字母全部小寫。goto和const作為保留關鍵字。


標識符:由英文和數字和$,_字符組成。不能數字開頭,不可以是關鍵字。用于給包,類,接口,方法,變量,常量命名。
建議寫法:包:全部小寫。單級:hello。多級:section.hello。
類和接口:一個單詞:每個單詞首字母大寫。多個單詞:每個單詞首字母大寫。Name,TypeName
方法和變量:一個單詞:單詞首字母小寫。多個單詞:第二個單詞開始每個單詞首字母大寫。name,typeName
常量:一個單詞:全部大寫。多個單詞:每個字母大寫并用下劃線隔開。NAME,TYPE_NAME
注釋: 將自己的思想通過注釋寫出來,在通過代碼表現
單行注釋://
多行注釋:/* */
文檔注釋:/** */ (被javadoc解釋生成一個說明書)
常量:字面值常量:字符串常量("abc"),整數常量(1),小數常量(1.2),字符常量('a'),布爾常量(ture,false),空常量(NULL)。
1. java對于整數常量有四種表達形式二進制(0b),八進制(0),十進制(默認數據),十六進制(0x)。
常用轉換:
其他進制轉十進制:位權展開法:系數*基數^權次冪。十進制轉其他進制:除基取余,直到商為零,余數反轉。
(系數:就是每一個位上的數值。基數:x進制的基數就是x。權:對每一個位上的數據)
快速轉換:
十進制和二進制:BCD碼:8421碼時BCD的一種,將每一位二進制使用固定數值表示,將其相加就可以得到二進制對應的十進制數。
二進制轉十六進制:4位組合。
二進制轉八進制:3位組合。
2. 原碼:最高位為符號位,其余為數值位。符號位為0表示正,符號位1表示負。
反碼:正數的反碼與原碼相同。負數的反碼是對其原碼逐位取反,符號位不變。
補碼: 正數的補碼與原碼相同。負數的補碼是其反碼加一。(計算機內部存儲采用補碼)
變量:變量本質是內存中的一塊區域,使用變量名訪問該區域。 定義變量(為變量申請空間),初始化變量(給對應空間賦值),Java中必須初始化變量才可以使用。
數據類型:



Java默認整數是int類型,定義long類型的變量要在字面常量后面加L。默認浮點數是double類型,定義一個float類型的變量要在字面常量后面加F。
long l_var = 123L; float f_var = 1.23F;
boolean類型不能進行強制類型轉換。
Java沒有無符號類型的數據,全部都是有符號類型的數據。
字符串類型與其他類型做加法是+被重載為字符串連接符,字符相加是做數值加法。
"hello" + 'a' + 1 --> "helloa1"
'a' + 1 + "hello" --> "98hello"
Java語言char類型占用兩個字符,可以表示中文。Java語言采用Unicode編碼。
默認類型轉換:byte,short,char( 整型提升) ----> int ----> long ----> float ----> double (float占用四個字節但是其表示數字范圍大于long類型的變量)
byte b1 = 0,b2 = 1,b3; b3 = b1 + b2; // error。當byte,short,char類型的變量進行運算時,不相互轉換,會單獨提升到默認類型int再運算。
b1 = 3 + 4; // ok 預處理器先將常量計算出來,查看結果是否在byte范圍內,在的話就不報錯。
b1 = 130; // 打印結果 -126。00000000 0000000 0000000 10000010(截斷) --> 10000010(補碼) -->100000001(反碼) ---> 11111110(原碼)。
b1 = (byte)130; //打印結果-126 。 0 --> 1 --> 127 --> -128 --> -1 --> 0。范圍是循環 。
浮點數的存儲:
17.625在內存中的存儲:
首先要把17.625換算成二進制:10001.101 ( 整數部分,除以2,直到商為0,余數反轉。小數部分,乘以2,直到乘位0,進位順序取。)
在將10001.101右移,直到小數點前只剩1位:1.0001101 * 2^4 因為右移動了四位
底數:因為小數點前必為1,所以IEEE規定只記錄小數點后的就好。所以,此處的底數為:0001101
指數:實際為4,必須加上127(轉出的時候,減去127),所以為131。也就是10000011
符號部分是整數,所以是0
存儲格式是:01000001 10001101 00000000 00000000
float存儲規則:
一個浮點數有2部分組成:底數m和指數e
底數部分: 使用二進制數來表示此浮點數的實際值。(實際是占用24bit的一個值,但是最高位始終為1)
指數部分: 占用8bit的二進制數,可表示數值范圍為0-255。(指數可正可負,此處算出的次方必須減去127才是真正的指數)
float格式:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S表示浮點數正負
E指數加上127后的值得二進制數據
M底數
運算符:
算術運算符:+ - * / % ++ -- +
賦值運算符:= += -= *= /= %=
關系運算符:== != < > <= >=
邏輯運算符:& | ^ ! && ||
位運算符:<< >> >>> & | ^ ~
三目運算符:() ? : ;
short s = 1; s = s + 1; // error 1是int類型字面常量
short s = 1; s += 1; // ok +=包含了強制類型轉換。等價于 s = (short)(s + 1);
比較運算符,邏輯操作符表達式返回ture或則false。
當 & 左操作符和右操作符為邏輯表達式時做的是邏輯運算。當左操作數和右操作數為數值時做的是位運算。
^ 異或.某一個數據被同一個數據異或兩次的結果是其本身a ^ b ^ b = a. 交換兩個變量的值: a = a ^ b; b = a ^ b; a = a ^ b;
a = a + b; b = a - b; a = a - b;
b = (a + b) - (a = b);
<< 空位補零,被移除的高位丟棄.
>> 高位是0,右移后,高位補0 . 高位是1 ,右移后, 高位補1.
>>> 最高位不論是0還是1,都以0補齊.
鍵盤數據錄入:
a. 導包。格式:import java.util.Scanner;
b. 創建錄入對象。格式:Scanner sc = new Scanner(System.in);
c. 通過對象獲取數據。格式:int x = sc.nextInt();
流程控制語句:順序結構
選擇結構:
if(關系表達式1) { } // 關系表達式是帶有關系運算符和邏輯運算符的boolean表達式
else if(關系表達式2){ }
else if(關系表達式3){ }
else{ }
switch(表達式) // 表達式取值:byte,short,int,char,枚舉(JDK5),String(JDK7)
{
case 值1:語句1;break; // 值只能是常量,值1和值2不可相同
case 值2:語句2;break;
default:語句n;break;// default不一定要放在最后
}
循環結構:
for(初始化語句;條件判斷語句;控制條件語句) // 條件判斷語句是boolean表達式
{ 循環體語句; }
while(條件判斷語句) // 條件判斷語句是boolean表達式
{ 循環體語句; }
do
{
循環體語句;
}while(條件判斷語句); // boolean表達式
跳轉控制語句:
break:跳轉單層循環:break; // 跳出最近的一個循環。
跳出多層循環:格式:tag: 語句;
break tag; // 跳轉到tag語句。
continue:不執行本次循環,執行下一次循環
不執行本次循環,執行想要的循環:格式: tag: 語句;
continue tag; // 從tag語句開始執行循環
return: 在return語句處直接返回函數。
wc:for(int x=0; x<3; x++) // 給循環加一個標簽,方便跳轉 { nc:for(int y=0; y<4; y++) // { if(y == 2) { break wc; } } }

浙公網安備 33010602011771號