回顧Java基礎1
阿新 • • 發佈:2021-07-07
學習方法
- 需求:為什麼學習新技術
- 工作需要
- 技術控
- 日常工作需求觀察:能否用傳統技術解決
- 能解決,但是不完美
- 解決不了
- 引出新技術和知識點:知曉新技術優勢所在
- 學習進技術或者知識點的基本原理和語法(不考慮細節)
- 快速入門新技術(基本程式,crud)
- 能搭出一個大的框架
- 等到需求的時候,再研究細節(細節是無止境的,根據專案學習)
- 注意事項
- 使用細節
- 使用規範
- 如何優化
Java程式碼的一些規範
- 類、方法的註釋,要用Javadoc的方式來寫
- 非Javadoc的註釋,往往是給程式碼的維護者看的,著重告訴讀者為什麼要這麼寫,如何修改,注意什麼問題等
- 使用tab操作,實現縮排,預設整體向右移動,shift+tab整體向左移
- 運算子和 = 兩邊習慣性各加一個空格。如:2 + 4 * 5 + 345 - 89
- 原始檔使用utf-8編碼
- 行寬度不要超過80字元
- 程式碼編寫次行風格和行尾風格
運算子
取模運算子的本質
例如
a % b = a - a / b * b;
10 % 3 = 10 - 10 / 3 * 3; // 1
(-10) % 3 = (-10) - (-10) / 3 * 3; // -1
10 % (-3) = 10 - 10 / (-3) * (-3); // 1
(-10) % (-3) = (-10) - (-10) / (-3) * (-3); // -1
自增運算子
int i = 1; i = i++; sout(i);//i = 1 //原理等同於 int i = 1; int temp; temp = i++;//temp = 1, i = 2 i = temp;//i = 1 sout(i);//i = 1 temp = 2,但是temp被丟棄了
邏輯運算子
&和&&的區別
邏輯與和短路與的區別,功能上相同,短路與如果第一個條件為false,則不會判斷第二個條件,邏輯與無論第一個條件是什麼,第二個條件都要判斷。效率低。開發中使用的基本都是短路與,效率高。
|與||同理
練習題
boolean x = true; boolean y = false; short z = 46; if((z++ == 46)&&(y = true)) z++; T 47 T 48 if((x = false)||(++z == 49)) z++; F T 49 50 sout(z);// 50
邏輯運算子基本不用&和|,&和|也是位運算子。
賦值運算子
複合賦值運算子會進行型別轉換(強制)
byte b = 2;
b += 3;//正確
b = b + 3;//錯誤,int型不能轉到byte型
三元運算子
條件?表示式1:表示式2
表示式1和表示式2要為可以賦給接受變數的型別(或強制轉換)
int a = 3;
int b = 5;
int c = a > b ? a : b;//a和b要和c的型別保持一致,或可自動轉換的,或強制轉換為c型別
int c = a > b ? 1.1 : 3.4;//錯 double型別不能轉成int型別
int c = a > b ? (int)1.1 : (int)3.4;//對
原碼、反碼、補碼
- Java沒有無符號位,換言之,Java中的數都是有符號的。
- 二進位制的最高位表示符號位,0位正,1位負。
- 正數的原碼、反碼、補碼都一樣。
- 負數的補碼=反碼+1,反碼=補碼-1。
- 計算機的儲存和運算都是以補碼的形式。
- 看運算結果的時候,看的是原碼。
位運算子
- &與
- |或
- ^異或
- ~非
- <<算術左移:符號位不變,低位補0:本質是*2
- 算術右移:低位溢位,符號位不變,並用符號位補益出的高位:本質是/2
- 邏輯右移:無符號右移:低位溢位,高位補0
沒有<<<符號
有關位運算
- 先將運算數的原碼錶示出來
- 將原碼轉換成補碼,進行運算
- 獲得結果補碼,回推成原碼
- 根據原碼轉換成運算數
原碼、反碼、補碼的轉換,符號位不變
位運算子~。按位取反,符號位也變
程式流程控制
分支控制
-
多分支可以沒有else,如果所有的條件表示式都不成立,則一個執行入口都沒有。
-
如果有else,所有的條件表示式都不成立,則預設執行else程式碼塊。
巢狀分支
不要超過3層(可讀性不好)
switch分支結構
switch(表示式)中的表示式返回值必須是byte、short、int、char、enum、String這幾種