這篇博客是慕課網上視頻的學習筆記,手打出來方便日后查閱。原視頻地址
第一章 IDEA入門
1.1 Intellij IDEA下載
1.2 IDEA界面介紹
- IDEA的左側側邊欄有1:Project、7:Structure和2:Favorities 開發時,習慣全屏代碼區,當需要左側側邊欄時,無需使用鼠標,只需按住Alt+數字即可出現相應的側邊菜單。然后按下ESC就會把鼠標重新聚焦到代碼區。
- Alt+1:Project
- Alt+2:Favorities
- Alt+4:Run
- Alt+5:Debug
- Alt+6:TODO
- Alt+7:Structure
- Favorites功能:可以顯示工程中所有的斷點位置;收藏功能。
第二章 Find Action
- IDEA中Help下的Find Action可以幫助我們定位到各個指令。Find Action本身的快捷鍵是Ctrl+Shift+A
第三章 無處不在的跳轉
3.1 項目之間的跳轉
- 當使用IDEA同時打開多個項目協同開發時,可以使用快捷鍵進行跳轉:
- Ctrl+Alt+右方括號跳轉到Next Project Window下一個項目窗口
- 使用Ctrl+Alt+左方括號跳轉到Previous Project Window前一個項目窗口
- 使用Ctrl+Shift+A輸入window project等關鍵字成功得到相應提示
3.2 文件之間的跳轉
- 在項目中文件很多的情況下,有時我們會想找到最近瀏覽過的文件
- Ctrl+E可以找到Recent Files最近瀏覽過的文件
- 找到最近修改過的文件
- Ctrl+Shift+E可以找到Recently Changed Files最近修改過的文件
3.3 瀏覽、修改位置的跳轉
- 使用Ctrl+Shift+Backspace可以跳轉到Last Edit Location最后修改過的位置
- Next Edit Loaction沒有默認快捷鍵
- 使用Ctrl+Alt+向左箭頭可以跳轉到Back光標之前停留過的地方
- 使用Ctrl+Alt+向右箭頭可以跳轉到Forward光標之后停留過的地方
3.4 利用書簽進行跳轉
- 當使用IDEA查看源碼時,可以對關注的代碼位置添加書簽
- Ctrl+F11可以Toggle Bookmark with Mnemonic使用數字書簽標記位置
- Ctrl+1..9可以跳轉到對應的書簽位置
- 可以某個類單獨添加書簽
- Alt+Shift+F可以給某個類add to Favorites添加到Favorites中
- Favorites中可以創建列表,例如把值得學習的代碼放到一個列表中
- Alt+Shift+F可以給某個類的某個方法添加到Favorites中
- Alt+Shift+F可以給某個類add to Favorites添加到Favorites中
3.5 跳轉插件emacsIDEAs
- 在編輯一個文件時,有時需要將光標跳轉到以某個字母開頭的位置如以s開頭,文件中有多個以s開頭的位置,這時,可以借助emacsIDEAs插件做到快捷跳轉
- 安裝插件,Ctrl+Shift+A,輸入plugins,到Browse Repositories中找到emacsIDEAs插件,Install,然后重啟IDEA
- 設置其快捷鍵,Ctrl+Shift+A,輸入keymaps,找到Manage keymaps
- 選擇Plug-ins,在最下面找到emacsIDEAs,找到AceJumpWord
- AceJumpWord 默認的快捷鍵為Meta+F,一般計算機鍵盤上並沒有這個鍵,需要另外添加快捷鍵
- 右鍵,Add keyboard Shortcut,為其添加快捷鍵,我這里設置為Ctrl+J
- 使用:如要跳轉到以p開頭的位置,先按住Ctrl+J,然后再輸入p,這時,emacsIDEAs插件會為文件的所有以p開頭的單詞進行編號,asdf…按下光標要跳轉到位置對應的字母即可
3.6 編輯區和文件區的跳轉
- 在代碼編輯區按Alt+1可以跳轉到文件區下,再按ESC就可以從文件區返回到編輯區
3.7 精准搜索
- 類
- Ctrl+N,可以搜索到指定的Class類
- Ctrl+N+N,可以搜索包含JAR包中的類
- 文件
- Ctrl+Shift+N,可搜索到指定的File文件
- 符號
- Ctrl+Alt+Shift+N,可以搜索關鍵字,包括變量名、函數名和類名等。
- 字符串
- 要搜索字符串,可以通過Ctrl+Shift+F來實現,有幾個選項:
- Match case,是否匹配大小寫
- Words,是否是一個單詞
- Regex,通過正則表達式搜索
- File mask,可以指定在哪個文件下搜索
- In Project,在項目下搜索
- Module,在模塊下搜索
- Directory,在目錄下搜索
- Scope,在指定區域內搜索,還可以自定義搜索區域
- 要搜索字符串,可以通過Ctrl+Shift+F來實現,有幾個選項:
第四章代碼助手
4.1 列操作
- 光標選中相關操作
- Shift+右箭頭,選中下一個位置,按住Shift並多次按方向鍵選中多個位置
- Ctrl+右箭頭,Move Caret to Next Word把光標移動到下一個單詞
- Ctrl+Shift+右箭頭,Move Caret to Next Word With Slection把光標移動到下一個單詞並選中
- 大小寫轉換
- Ctrl+Shift+U,Toggle Case
- Home,Move Caret to Line Start將光標移動到本行開始的位置
- End,Move Caret to Line End將光標移動到本行最后的位置
- Ctrl+Alt+Shift+J,Select All Occurrences,選中所有相同的字符串,多光標操作
- F2,自動將光標定位到報錯的位置
- Ctrl+Alt+L,Reformat Code,重新格式代碼
- 案例,后台向前台傳遞響應狀態時,定義如下四種狀態,分別為響應成功、錯誤、需要登陸和非法參數
0: "success" 1: "error" 10: "need_login" 2: "illegal_argument"
- 1
- 2
- 3
- 4
現在要把狀態封裝成枚舉類,需要以下幾步: 1. 創建枚舉類ResponseCode,聲明兩個屬性code和desc並生成構造方法和get方法 2. 把上面四種狀態復制過來 3. 將光標選中到“:”,按Ctrl+Alt+Shift+J進行多光標操作,也可以用Alt+J,會依次選中下一個 4. 將全部的光標移動到雙引號后面的位置,按住Ctrl+Shift+右箭頭選中success等單詞,並按Ctrl+Shift+U將單詞轉換成大寫 5. Ctrl+C復制這些單詞,使用Home,將光標移動到行首,粘貼,輸入左括號,Ctrl+右箭頭,將光標移動到“:”前面 6. Ctrl+Shift+右箭頭,會選中“: ”,替換成“,” 7. 連續按三次Ctrl+右箭頭,或者直接按End鍵,將光標顯示到行的末尾,輸入“),” 8. 現在除了最后一行報錯,前面的三行就都完成了。ESC取消多光標操作,按F2光標會定位到報錯的位置,Shift+左箭頭,將最后一個枚舉的“,”換成“;” 9. Ctrl+Alt+L,Reformat Code,重新格式代碼
public enum ResponseCode { SUCCESS(0,"SUCCESS"), ERROR(1,"ERROR"), NEED_LOGIN(10,"NEED_LOGIN"), ILLEGAL_ARGUMENT(2,"ILLEGAL_ARGUMENT"); private final int code; private final String desc; ResponseCode(int code, String desc) { this.code = code; this.desc = desc; } public int getCode() { return code; } public String getDesc() { return desc; } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
4.2 live template
- 可以使用Setting下的Live Templates定義常用的代碼模板,分為以下幾步:
- 創建分組:點擊+按鈕下的Template Group,Create New Group,取組名為“方法”
- 創建模板:在“方法”分組下,點擊+按鈕下的Live Templates創建模板。以main函數為例,下圖中Abbreviation為模板名稱,Description為模板注釋,Template text中的內容為模板,其中
$END$
表示最后光標停留位置,最后要點擊define,選擇Java表示這個模板定義為Java語言的模板
- 為public static void main定義模板 - Abbreviation:main - Description:public static void main - Template text:
public static void main(String[] args) { $END$ }
- 1
- 2
- 3
- 為public static final int定義模板
- Abbreviation:psfi
- Description:public static final int自定義(IDEA本身就提供了一個)
- Template text:
public static final int $var1$ = $var2$;
使用時var1的內容輸入完成后按回車光標就直接到等號右邊var2了
- 為public static final String定義模板
- Abbreviation:psfs
- Description:public static final String自定義(IDEA本身就提供了一個)
- Template text:
public static final String $var1$ = $var2$;
- 為private int定義模板
- Abbreviation:pi
- Description:private int
- Template text:
private int $VAR2$; $END$
- 1
- 2
- 3
- 為private int定義模板
- Abbreviation:pic
- Description:private int 有注釋
- Template text:
/** * $VAR1$ */ private int $VAR2$; $END$
- 1
- 2
- 3
- 4
- 5
- 6
- 為private String定義模板
- Abbreviation:ps
- Description:private String
- Template text:
private String $VAR2$; $END$
- 1
- 2
- 3
- 為private String定義模板
- Abbreviation:psc
- Description:private String 有注釋
- Template text:
/** * $VAR1$ */ private String $VAR2$; $END$
- 1
- 2
- 3
- 4
- 5
- 6
4.3 postfix
for (int i = 0; i < 100; i++) { }
- 1
- 2
- 上面的for循環,只需輸入100.fori按回車就可以出來
- 可以在Settings下的Postfix Completion查看有哪些后綴實現
常用的Postfix:
- fori:for循環,例子:100.fori
- sout:打印輸出,例子:new Date().sout
- field:引入表達式字段,例子:
//當忘記聲明arg變量時,使用field public class Foo { public Foo(int arg) { arg.field } } //使用后,會自動生成屬性 public class Foo { private final int arg; public User(int arg) { this.arg = arg; } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- return:返回值,例子:
String m() { "result".return } String m() { return "result"; }
- 1
- 2
- 3
- 4
- 5
- 6
- nn:檢查表達式是否為空,例子
void m(Object o) { o.nn } void m(Object o) { if (o != null){ } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
4.4 Alt+Enter
- 自動創建函數
public static void main(String[] args) { f1();//Alt+Enter就會自動創建出下面的函數 } private static void f1() { }
- 1
- 2
- 3
- 4
- 5
- 6
- List Replace
for (int i = 0; i < list.size(); i++) { String item = list.get(i); } //選中for循環按住alt+enter出現Replace with foreach for (String item : list) { }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 實現接口
- 單詞拼寫
System.out.println("usernmea is jone");//username拼寫錯誤,單詞下會出現波浪線 //按下alt+enter,出現Typo Change to... //Intellij會給出一些建議的單詞
- 1
- 2
- 3
- 4
- 導包
第五章 編寫高質量代碼
5.1 重構
- 重構變量,Shift+F6,Rename
- 重構函數
- Ctrl+F6,Change Signature,添加參數
- 先在調用的地方添加實參,Alt+Enter
5.2 抽取
- 抽取變量,Ctrl+Alt+V。Refactor->Extract->Variable
//抽取前
System.out.println("sun"); System.out.println("sun"); System.out.println("sun"); //抽取后 String sun = "sun"; System.out.println(sun); System.out.println(sun); System.out.println(sun);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 抽取成靜態常量,Ctrl+Alt+C
public static final String SUN = "sun"; public static void main(String[] args) { System.out.println(SUN); System.out.println(SUN); System.out.println(SUN); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 抽取成員變量,Ctrl+Alt+F
private static String sun; public static void main(String[] args) { sun = "sun"; System.out.println(sun); System.out.println(sun); System.out.println(sun); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 抽取函數,Ctrl+Alt+M
第六章 尋找修改軌跡
6.1 git的集成
- annotate,注釋。在顯示行號的位置右擊,選中Annotate即可查看當前行代碼的commit、author和date
6.2 local history
- show history,查看本地所有的更改
- put label,做了更改后,為本次更改做個標記,再次show history可以看到左側的標簽
第七章 關聯一切
7.1 spring的關聯
- File->Project Structure->Facets->+按鈕->Spring把接口和實現類對應起來,bean是在哪個文件掃描到的等
7.2 數據庫的關聯
- 數據庫視圖,IDEA右側邊欄的Database->+按鈕->Data Source->選擇是那種數據庫->輸入主機、數據庫、用戶名、密碼、URL。
- 書寫Mapper時,IDEA就會提示數據庫的相關信息(表名、列名)
- 可以在視圖中重構表名、列名,Shift+F6
第八章 調試程序
8.1 斷點調試
- 添加斷點,Toggle Line Breakpoint,Ctrl+F8
- Debug方式啟動程序,Shift+F9
- 單步運行,F8,Step Over
- resume(重新開始,繼續),F9。會跳轉到下一個斷點,如果沒有斷點了,直接結束程序運行
- 查看所有斷點,Ctrl+Shift+F8
- 禁止所有斷點,Mute Breakpoint,然后按F9,就可以跳過余下的所有斷點了
- 表達式求值,Alt+F8。可以對程序中的變量做一些操作如list.size等
- 運行到指定行,從斷點運行的位置直接讓程序運行到光標所在的行,Run to Cursor,Alt+F9
- setValue,在debug窗口,選中要設值得變量,F2,可以在調試時改變變量的值
第九章 其他操作
9.1 文件操作
- Ctrl+Alt+Insert,快速創建類,文件等
- 復制當前文件,F5,無需復制粘貼
- 移動當前文件
- 剪切、復制
- F6
9.2 文本操作
- 復制文件名:選中文件名,Ctrl+C
- 復制文件完整路徑:Ctrl+Shift+C
- Ctrl+[ OR ],可以跑到大括號的開頭與結尾
- Alt+Insert,可以生成構造器/Getter/Setter等
- Ctrl+Shift+Space,自動補全代碼
- Alt+Shift+Up/Down,將代碼上/下移一行
- Ctrl+X,刪除行
- Ctrl+D,復制行
9.3 結構圖
- 查看field、method大綱,File Structure,Ctrl+F12
- 查看maven依賴大綱,pom.xml右擊->Maven->Show Dependency
- 查看類圖大綱,找到代碼右鍵Diagrams或Ctrl+Alt+Shift+U
- 查看類繼承結構,Ctrl+H
- 查看當前函數調用了哪些其他函數,或當前函數被哪些函數調用,Ctrl+Alt+H,可以幫助看其他項目源碼的結構