内容导视:
内容导视:
IDE 即集成开发环境,可以把编写代码、组织项目、编译、运行、调试放在一个环境下,极大提高开发效率。
有快捷键一键生成代码与注释;写代码会有自动提示补全方法名;会自动检查代码中有误的地方并给出提示选择方案修改错误;查看类与类的关系、此类的所有方法和字段等。
目前最流行用于 Java 开发的 IDE 是 IntelliJ IDEA,因为确实好用,整合主流框架十分轻松,极大提升开发代码的效率。
介绍
IDEA 是 JetBrain 公司的其中一款产品,官网:https://www.jetbrains.com
其它产品如 WebStorm 用于开发 JavaScript、HTML5、CSS3 等前端技术。
IDEA 全称 IntelliJ IDEA,是 Java 语言的集成开发环境,在业界被公认为是最好的 java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、Ant、JUnit、CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。
IDEA 也支持主流的技术与框架,擅长企业应用、移动应用和 WEB 工具的开发。
相比 Eclipse 的优势
下载地址:https://www.jetbrains.com/idea/download/#section=windows
有 Ultimate 旗舰版和 Community 社区版,社区版是免费的,旗舰版支持的功能更多,如协同远程开发、数据库工具、前端语言、JavaEE 等,两个版本的详细对比:JetBrains Products Comparison,需要付费,可以先试用一个月,选择其一点击 Download 下载,.exe 与 .zip 随意(exe 直接双击,zip 需要解压缩)
您不需要安装 Java 来运行 IntelliJ IDEA,因为 JetBrains 运行时与 IDE 捆绑在一起(基于 JRE 11)。但是,如果要开发 Java 应用程序,还需要一个独立的 JDK。
安装方法:IDEA 的安装 - 阿龙er、知了(zhile.io)、【汇总】Jetbrains 全家桶
请勿无限制重置,有能力请支持正版!本文中资源全部收集整理于网络并无偿提供,仅可用于个人学习交流;请勿转载、售卖或商用;侵权删!
汉化:https://blog.csdn.net/qq_35067322/article/details/105429832
目录结构
bin 目录下的 idea64.exe.vmoptions 文件是虚拟机的配置信息
-Xmx750m// 最大内存,将数值调大可以提高程序性能
-Xms128m// 初始内存
-XX:ReservedCodeCacheSize=512m// 保留代码的缓存大小
-XX:+UseG1GC// 垃圾优先收集器
请勿添加注释
C:\Users\用户名\AppData\Local\JetBrains\IntelliJIdea2021.2
存放(system)系统临时、缓存、本地历史文件等
C:\Users\用户名\AppData\Roaming\JetBrains\IntelliJIdea2021.2
存放(config)插件、文件模板、快捷键等文件
控制面板/卸载程序,或 Windows 设置/应用
点击要卸载的应用;且手动删除内容如下:软件的安装目录、system 与 config、代码存放目录。
一个 project 项目就是一个工作窗口,一个项目可以有多个 module 模块,每个模块里面都有 src 目录存放着 *.java 源文件;除了创建空项目,每个项目都自带一个模块。
官方详细使用文档:https://www.jetbrains.com/help/idea/installation-guide.html#standalone
IntelliJ IDEA使用教程:https://lixuekai.blog.csdn.net/article/details/77449117,作者:请叫我大师兄
内容导视:
创建一个新项目:Projects/New Project/java
如果没有配置 JAVA_HOME 环境变量,就不会显示 SDK,需要 Add JDK… 指定 JDK 的安装目录;
Project name 是项目名,Project location 是此项目的路径,Finish 即可。
创建空项目
还可以创建一个空项目,模块由自己手动创建。
会弹出一个 Project Structure 窗口,点击 New Module 创建模块。
或者 Alt + F 快捷键选择 New 可以创建 Module,或项目右键 New Module,或 Ctrl + Shift + Alt + S 打开 Project Structure/Modules 按下 + 号,点击 New Module。
在多个项目之间切换是 Open Recent,关闭项目 Close Project;
可以单击想要操作的项目即可进入或者点击 Open Selected。
Show in Explorer 可以打开文件资源管理器的项目所在目录;Remove from Recent Projects 是删除此项目,但硬盘上还在;删除此项目后把文件资源管理器对应的项目选中按下 Shift + Del 快捷键永久删除。
而删除模块有两个步骤,右键模块 Remove Module,可以看到模块右下角的蓝色方块消失,意味着它变成了普通目录,再次右键 Delete(Del 是普通删除,Alt + Del 是安全删除)即可删除。
分为菜单栏、工作列表、编辑区域、快捷栏。
在编辑区域编写源代码,按下 Ctrl + Shift + F10 即可运行 main 方法。
Java 版本问题
打开项目结构,或快捷键 Ctrl + Alt + Shift + S
这个地方没设置会出错无法运行代码。
Project name:当前项目的名字
Project SDK:控制项目使用的 JDK 版本
Project language level:项目语言级别
当使用的新特性所在版本超过设定的 JDK 版本,就会报错。
例:在 JDK7 版本,新增了一个特性:自动类型推断机制(钻石表达式),使用泛型 new 对象时后面的 <>
中可以省略数据类型,会通过前面 <>
的内容自动推断类型。
一旦设置 level 为小于 7,如 level 6 就会报错:
Project language level 是编译时检查源码是否符合指定版本的语法。如果 level 设置为 6,则代码使用的 JDK7 和 JDK8 版本的新特性会被认为是语法错误。
一般 level 等级与 JDK 版本一致即可,但如果自己开发使用的 JDK 版本大于部署时服务器的 JDK 版本,可以把 level 往下调至服务器的 JDK 版本,且不使用高版本的新特性。
JDK8 新增了 Lambda 表达式、函数式接口等新特性;特性只能往下兼容,如 JDK8 版本可以使用 JDK7、JDK6 … 的特性,而不能使用 JDK9 的特性。
Project compiler output:用于指定项目中的 java 源文件编译后生成的这些 *.class 文件存放的根目录
修改成如下即可,记得修改后点击 Apply 或 OK,否则不生效。如 01-module 模块的 class 文件会在 out/production/01-module 下。
module 下有个蓝色的 src 文件夹,用于存放源文件,src 右键/new/Java Class
或按下 Alt + Ins scrlk 快捷键,此键在 Backspace 退格键的上面。
通过上下左右箭头定位到 Java Class 然后回车或点击 Java Class,输入源文件名后回车。(不用写后缀 .java
)
导入其它模块的类
在类中使用其它模块的类时,在错误处(将光标定位到红色波浪处)按下 Alt + Enter,选择 Add dependency on module ‘模块名’ 后回车。
实际在模块下的 iml 文件中添加了
标签。
内容导视:
首先打开设置 File/Settings(快捷键:Ctrl + Alt + S)
从上至下依次为:外观与行为、快捷键、编辑、插件、版本控制、构建执行部署、语言和框架、工具、高级设置
依次介绍:
设置主题
Appearance/Theme
设置菜单栏字体大小
Appearance/Size
如果觉得菜单项或设置中的字体太小,Size 可以往上调,一般设置为 12。
重新启动项目时,如何打开一个项目
内容如下:
设置使用鼠标滚轮调节字体大小
General/Mouse Control,勾上 Change font size with Ctrl + Mouse Wheel,回到编辑页面按住 Ctrl 同时滚动鼠标滚轮即可调整字体大小。
Move code fragments with drag-and-drop:可以拖拽选中的代码片段到别的位置
自动导包
General/Auto Import
Insert imports on paste(在粘贴时导入),Always:总是,Never:从不,Ask:询问
如想使用 Date 类,但有多个简单类名为 Date,需要 Alt + Enter 键 import class 选择一个。
输入 DateFormat,类名唯一,会自动在首行添加 import 此类的完整类名
;删去 DateFormat 会自动删除首行的 import 导入语句。
行号与分隔符
General/Appearance,勾选 Show method separators,显示方法之间的分隔符;勾选 Show line numbers 显示行号。
关闭文档弹窗
General/Code Completion 取消勾选 Show the documentation popup in…
显示方法参数信息
General/Code Completion 勾选 Show the paramerter info…
Show parameter name hints…:提示方法参数名称和类型
Show the paramerter info…:弹出方法参数名和类型
Show full method signatures:弹出完整的方法签名
忽略大小写提示
General/Code Completion
老版将 Case sensitive completion 改为 None;
新版取消勾选 Match case(区分大小写)
First letter only:仅首字母区分大小写,如 String 等同于 STRing
All letters:所有都区分大小写,String 不等同于 string
取消单行显示文件标签
如果设置单行显示,当编辑区即代码书写区域,编辑了或者浏览很多文件,可以看到 Number.java、Object.java …这样展示不下的文件就会被隐藏。
General/Editor Tabs 取消勾选 Show tabs in one row(在同一行显示,可能会造成文件名显示不完全)
Hide tabs if there is no space:如果空间不足就隐藏标签
设置悬浮提示
当指针停在方法或某处时,会自动显示对应的文档注释信息。
Code Editing 勾选 Show quick documentation on hover
翻到最下面,Editor Tooltips/Tooltip delay:500,延迟 500 毫秒后再提示。
设置编辑区域字体
Font/Size
font 可以选择喜欢的字体,size 是字体大小,line height 是每行间距。
设置编辑区域主题
Color Scheme/Scheme
Scheme 与整体主题风格一致即可,下面就不太搭。
除了 Font/size 可以设置字体外,通过 Color Scheme/Color Scheme Font,勾选 Use color scheme font instead of the,也可以设置。
单独设置控制台字体
Color Scheme/Console Font 勾选 Usb console font instead of the
设置文档注释的字体颜色
Color Scheme/Language Defaults,Comments/Doc comment/Text
**同一个包下超过指定个数的 import 会自动转为 ***
Code Style/java/Imports
Class count to use import with ‘*’:5,导入同一个包的类累计 5 次时,自动转为 *
Names count to use static import with ‘*’:3,导入同一个包下静态的类累次 3 次时,自动转为 *
例:导入 5 个 java.util 包下的类会转为 import java.util.*;
添加文件头部信息
File and Code Templates/Includes/File Header 写入信息,每当创建文件时,自动在头部加入这段文字,在 Description:
中有各个变量的含义,如 ${DATE} 是当前系统日期。
我习惯在 java 源文件头部添加文档注释;作者处可以使用 ${USER} 替代。
设置项目文件字符编码
File Encodings/Global Encoding 等为 UTF-8(统一编码才不会乱码,UTF-8 是全球通用的)
勾选 Transparent native-to-ascii conversion:将 properties 文件输入的所有字符转换成 ASCII 序列码保存
UTF-8 BOM 又叫 UTF-8 签名。(BOM:byte order mark)
UTF-8 的 BOM 是为了支援 UTF-16、UTF-32;BOM 签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别。BOM 虽然在编辑器中不显示,但是会产生输出,就像多了一个空行。
有很多软件不能识别 BOM,也会被当作编码的一部分造成乱码,所以最好选择 with NO BOM。
取消方法形参名提示
想要取消显示 second:、minute:、hour:
Inlay Hints,将 java 取消勾选,确定保存。
或者右键 Disable Hints
若想重新显示提示,Inlay Hinst/java,Parameter hints,勾上 Show parameter hints for
自动编译
Build project automatically:项目自动编译
Compile independent modules in parallel:多个模块并行编译
内容导视:
省电模式
File/Power Save Mode会关闭代码检查与提示等功能
如果没有了提示功能,可以看看是否误点了
文件的显示位置
Split Right:将文件在右边分屏
Split and Move Right:将文件移到右边分屏
Split Down:将文件在下边分屏
Split and Move Down:将文件移到下边分屏
设置单个文件的字符编码
编辑区右下角修改文件编码
Reload:暂时改成 xxx 编码显示,但文件还是原来的编码
Convert:真正的转换
保存及导入原有配置
File/Manage IDE Settings,Export Settings 导出设置;以后 Import Settings 导入,恢复原本设置。
内容导视:
的确很便捷对吧。up、down、left、right 分别对应上下左右箭头。
选择要粘贴的内容 | Ctrl + Shift + V |
---|---|
粘贴带包名的类名 | 先 Ctrl + Shift + Alt + C 复制类名,再 Ctrl + Shift + Alt + V 粘贴 |
撤销 | Ctrl + Z |
反撤销 | Ctrl + Shift + Z |
逐渐选中区域 | Ctrl + W |
删除一行(Delete Line) | Ctrl + Y |
向下复制一行(Duplicate Line Or Selection) | Ctrl + D |
在域的范围内上下移动行 | Shift + Ctrl +上下箭头 |
上下移动行 | Shift + Alt +上下箭头 |
整体移动 | Tab |
向上开始新的一行(Start New Line Before Current) | Ctrl + Alt + Enter |
向下开始新的一行(Start New Line) | Shift + Enter |
自动在语句末尾加上分号 | Ctrl + Shift + Enter |
单行注释 | Ctrl + / |
多行注释 | Ctrl + Shift + /,再按还原 |
格式化代码 | Ctrl + Alt + L |
---|---|
大小写转换 | Ctrl + Shift + U |
重命名 | Shift + F6 |
提示补全(Basic) | Ctrl + 空格 |
收起代码块或方法 | Ctrl + . 或 Ctrl + - 或右键/Folding |
---|---|
打开代码块或方法 | Ctrl + . 或 Ctrl + + |
收起全部代码块 | Ctrl + Shift + - |
打开全部代码块 | Ctrl + Shift + + |
提示方法形参类型(Parameter Info) | Ctrl + P(先将光标定位到方法的括号里) |
---|---|
查看文档(Quick Documentation),将光标定位方法名或类名上 | Ctrl + Q 、 Alt +鼠标中键 |
快速定位至错误处 | F2 、 Shift + F2 |
解决错误 | Alt + Enter |
快速生成构造和其他方法如 getset 、 toString 等方法 | Alt + Ins Scrlk |
---|---|
局部变量抽取为成员变量 | Ctrl + Alt + F |
生成 try-catch 等常用代码块 | Ctrl + Alt + T |
抽取成方法 | Ctrl + Alt + M |
自动分配变量名 | Ctrl + Alt + V |
清除多余的 import | Ctrl + Alt + O |
重写方法 | Ctrl + O |
实现接口方法 | Ctrl + i |
选择单词填入(Cyclic Expand Word): Alt +(Shift)+ /,Shift 是反方向
当你什么都不写,按下此快捷键从当前行的上方选择并填入单词;当你已经输入开头,如 s,就会寻找本类 s 开头的单词自动填人。(可以多按几次找到想要的单词)
多行操作:Shift + Alt + Ins Scrlk,再按住 Shift 和上下箭头,或者按住鼠标左键不放拖动鼠标,会增加光标个数。(期间左键单击光标变为 1)
另一种方法,按住 Alt 和鼠标左键不放,鼠标往下滑。
快速生成方法
Select None 是无参构造,如果想同时选中多个字段,可以通过 Shift + 上下键或 Ctrl + A 或 Ctrl + 鼠标点击选择生成的有参构造为哪些字段赋值。
关闭当前编辑页面 | Ctrl + F4、右键编辑区的文件标签点击 Close、Shift + 单击标签 |
---|---|
单独为编辑页面生成窗口 | Shift + F4 |
关闭/隐藏页面 | (Shift)+ Esc、Ctrl + Shift + F4 |
编辑窗口全屏显示 | Ctrl + Shift + F12 |
左右移动标签查看对应文件 | Alt +左右箭头 |
光标不动,上下翻页 | 按住 Ctrl 不松,按下 Up/Down |
光标至当前显示的内容首尾 | Ctrl + Pgup/Pgdn |
光标至文件首尾 | Ctrl + Home/End |
光标在方法之间移动 | Alt + 上下箭头(up/down) |
光标返回上一次编辑的位置 | Ctrl + Alt + 左右箭头(left+right) |
查看光标最近到过的位置(Recent Locations) | Ctrl + Shift + E |
跳转至某行某列 | Ctrl + G |
打开对应菜单栏 | Alt + 划横线的字母 |
---|---|
打开对应快捷栏 | Alt + 数字 |
打开当前文件所在文件夹(Show In Explorer) | 按住 Ctrl 点击文件标签 或 Ctrl + Alt + F12 |
打开最近修改的文件 | Ctrl + E 、Ctrl + Tab(Ctrl 不要松,按下 Tab 键或按下画横线的字母和数字) |
Alt + 1 、 Alt + Home 进入工作列表,上下箭头选择文件,回车或按下 F4。
查找所有文件 | 双击 Shift |
---|---|
查找类文件 | Ctrl + N |
查找文件 | Shift + Ctrl + N |
查找(全局) | Ctrl +(Shift)+ F |
---|---|
选中查找的结果之一 | (Shift)+ F3、 Ctrl +(Shift)+ L |
替换 | Ctrl + R |
标记某行 | Ctrl + Shift + 数字(再按取消标记) |
---|---|
标记某行 | Ctrl + F11,点击对应序号标记 |
跳转至标记的某行 | Ctrl + 数字 |
添加书签 | F11 |
---|---|
查看收藏与书签 | Alt + 2 |
跳转书签所在位置 | Shift + F11 |
查找已有的模板缩写 | Ctrl + J |
---|---|
查看源码 | 按住 Ctrl 再单击类名、Ctrl + B |
查看父类方法(Go To Super Method) | 将光标定位到子类方法名处,按下 Ctrl + U |
查看一个类的结构 | Ctrl + F12、Alt + 7 |
查看类的继承关系 | Ctrl + H |
查看有关所有实现或者覆写了当前方法的类的结构图(Method Hierarchy) | Ctrl + Shift + H |
查看类的继承结构图(Show UML Diagram) | Ctrl + Alt +(Shift)+ U、右键 Diagrams |
呈现当前方法的调用层级结构(Call Hierarchy) | Ctrl + Alt + H |
查看此文件在磁盘的位置:按住 Ctrl 键,点击此文件标签,或者右键 Open In/Explorer
添加到收藏(Add To Favorites):Shift + Alt + F、或者文件右击 Add To Favorites 选择已有的收藏夹,Add To New Favorites List 创建新的收藏夹。
替换:Ctrl + R,Replace 一个个替换,All 全部替换,include 排除(被排除的不会被替换)
打开 Settings/keymap,有两个放大镜,左边输入功能名称;点击右边的放大镜按下快捷键,寻找快捷键对应的功能;
比如修改复制当前行操作的快捷键,搜索 Duplicate,右键 Add keyboard Shortcut,更换快捷键。不用输入字母,而是把你希望的组合键同时按下。
Add Keyboard Shortcut:键盘快捷键
Add Mouse Shortcut:鼠标快捷键,例 Ctrl + 左键单击
Add Abbreviation:添加操作的缩写
Remove:移除快捷键
Reset Shortcuts:重新设置快捷键
你怎么知道输入 Duplicate?在 IDEA 安装路径下有个 help 目录,里面有两个 pdf 文件,打开查看对组合键作用的描述;如 Ctrl + D,Duplicate current line or selected block:复制当前行及选中的文本,与上面的解释大同小异,配合显示的快捷键即可快速定位想要修改的组合键。
如 Ctrl + Alt + L 格式化代码,在第一列第 19 个,搜索 Reformat code
如果习惯使用 Eclipse 的快捷键,可以将 keymap 改为 Eclipse。
按下快捷键时,如果没有反应,那么这组快捷键可能是被其他软件占用了,需要更改快捷键组合方式。
或者你觉得快捷键很别扭,易混淆;比如 Ctrl + D,在其他软件是 delete 删除的意思,而在 IDEA 却是 add 增加一行的意思。
Ctrl + 空格、Ctrl + . 等快捷键已被 Windows 系统占用;
打开 Windows 设置,时间和语言/语言/键盘/输入语言热键,可以看到 Ctrl + 空格已被占用,所以 IDEA 的自动补全失效了。
或者首选语言选择中文(简体、中国)选项,键盘/微软拼音/选项/按键,看看快捷键组合方式是否被占用了。
内容导视:
Templates,代码片段对应的字母缩写,输入缩写按下 Tab 键后可以出现预定义的固定模式的代码,提高了开发效率;如 sout 是 System.out.println()
,Ctrl + J 快捷键可以查看所有模板缩写。
输入缩写后按下 Tab 键,如 main 方法的缩写:main、psvm。
输出语句 | 缩写 |
---|---|
普通输出语句 | sout |
输出方法参数名及值 | soutp |
输出方法名 | soutm |
输出变量值 | soutv 或 xxx.sout |
输出变量名及值 | xxx.soutv |
for 语句 | 缩写 |
---|---|
i 从 0 到 ?,i++ | fori |
增强 for 循环 | iter、xxx.for |
遍历数组 | itar |
迭代器遍历 | itit |
顺序遍历 | xxx.fori |
逆序遍历 | xxx.forr |
if 语句 | 缩写 |
---|---|
if (xxx == null) | ifn、xxx.null |
if (xxx != null) | inn、xxx.nn |
打开 Settings,Editor/General/Postfix Completion,没法修改预定义的代码模板,倒是可以修改缩写(先选择要修改的地方,然后点击 + 右边的铅笔)。
Enable postfix completion:启动后缀模板
Expand templates with Tab:输入xxx.缩写后按下 Tab 键后生成模板,一般还未输入完时 IDEA 会自动弹出提示回车就行。
打个比方,定义了一个 int 类型的数组 arr,fori 是后缀模板缩写,输入 arr.fori 按下 Tab 键后出现预定义的代码。
自定义后缀模板
自定义后缀模板,按下 +,选择将模板应用在哪里,比如 java。
介绍含义:
key:缩写,这里我填写的是 syso
Minimum language level:此模板生效的最低 JDK 版本。例:假如 level 设置为 9,那么在 JDK8 中此模板不生效
Use static import if possible:如果可能的话使用静态导入
$EXPR$
:引用目标表达式
点击 OK,在 java 源文件中,假设现在有变量,名为 i,输入 i.syso
按下 Tab 键后生成 System.out.println("i的值:" + i);
那么 $EXPR$
就是 i。
Applicable expression types:应用至哪些类型,如果不选择,默认任意类型都可以使用此模板;
void:没有返回类型才能使用此模板
not primitive type:包装类型
array:数组类型
choose class in xxx:选择自己的模块中哪些类可以使用此模板
enter class name:选择哪些类可以使用此模板
$END$
:生成模板后光标所在位置
例:设置只有数组类型的变量才能使用此模板,有 int 类型的数组 arr,输入 arr.cqhsort
后按下 Tab 键才会生效。
if ($EXPR$ instanceof int[]) {
int temp = 0;
for (int i = 0; i < $EXPR$.length - 1; i++) {
int min = i;
for (int j = i + 1; j < $EXPR$.length; j++) {
if($EXPR$[j] < $EXPR$[min]) {
min = j;
}
}
if (min != i) {
temp = $EXPR$[min];
$EXPR$[min] = $EXPR$[i];
$EXPR$[i] = temp;
}
}
}
System.out.println(Arrays.toString($EXPR$));$END$
Edit/Live Templates
单词翻译
By default expand with Tab:默认情况按下 Tab 生成模板
Abbreviation:模板的缩写词
Description:模板的描述
Template text:预定义的模板文本
Applicable in Java: statement:将此模板应用至 java 中的语句声明
Expand with Tab:按下 Tab 键后生成模板
Reformat according to style:格式化预定义的模板
Use static import if possible:如果可能的话使用静态导入
模板应用范围
点击 Change 改变模板应用范围
Comment:注释
Consumer function:方法
Declaration:变量声明
Expression:表达式
Statement:语句声明
自定义模板
按下 + 号(Alt + Ins scrlk),创建组,任意取名如 cqh;
Live Template:定义模板
Template Group … :创建模板组
选中自己刚刚创建的组按下 + 号,点击 Live Template,可以模仿如下设置:
点击 Define 选择模板应用范围如 java;
点击 Edit variables,为变量 $VAR$
设值为第一个变量名,默认值为 var,跳过定义(如果 skip if defined 不勾选,光标会停在 $VAR$
处)
suggestFirstVariableName("Object")
:获取第一个变量名
常见的 Expression(预定义函数)请看实时模板变量。
点击 OK 后,在 java 文件中输入 try 按下 Tab 后即可生成模板。
run 即调用某个类的 main 方法,快捷键:Shift + Ctrl + F10,也可以右键或点击绿色三角图标也可以运行此类;运行过后右上角会多出此类的运行配置信息,下拉框选中此类,Shift + F10 即可运行,Shift + F9 即可调试。
Edit Configurations 用来编辑每个类的运行配置
Alt + Shift + F9/F10,会列出已运行过的类,可以通过左右上下箭头选择 Run 后回车。
常用的 run 和 debug 快捷键
减少内存占用
打开 Settings/Build,Execution,Deployment/Debugger,设置 Debug 连接方式,默认是 Socket。
Shared memory 是 Windows 特有的一个属性,一般在 Windows 系统下建议使用此设置,内存占用相对较少。
步入源码
Debugger/Stepping
Do not step into the classes:不要进入此类
取消勾选 java.*、javax.*
显示完整实例信息
Debugger/Data Views/Java
取消勾选 Enable alternative view for Collections classes
1:step over(F8):进入下一行,如果当前行断点是方法,不进入方法内
2:step into(F7):进入下一行,如果当前行断点是方法,则进入方法体内
3:force step into(Alt + Shift +F7):同上,但有些进不去的方法可以使用此键强制进入(比如源码)
4:step out(Shift + F8):跳出方法
5:Drop Frame:回退到上一个调用的方法
6:Run to Cursor(Alt + F9):运行到光标位置,只能前进
7:Ctrl + F5:重新 debug
8:Resume Program(F9):恢复程序运行,但如果下面还有断点则停到下个断点处,没有断点直接跑完
9:stop(Ctrl + F2):结束进程
10:View Breakpoints(Ctrl + Shift + F8):查看所有断点,Condition:为断点设置执行的条件
11:Mute Breakpoints:忽略剩下的断点
12:Evaluate Expression …(Alt +F8):计算表达式,输入表达式查看结果。按下Alt + ↓ 或下拉框查看历史记录
debug 就是断点调试,在某一行设置一个断点,debug 时,程序运行到这一行就会卡住,可以一步步执行代码(按下 F7 或 F8),定位错误的地方。
设置断点
单击红点的位置处生成断点,再单击就是取消断点。点击绿色小虫图标开始 debug,代码自动在断点处停下。
设置条件
当断点处于循环内时,右击红点,在条件处输入布尔表达式,如 i == 6,那么只有 i == 6 为 true 时,程序才会停下,不用 i = 1,2,3… 慢慢步进。
或者点击 Set Value(F2)修改值加快进程。
内容如下:
展开包名
使用 Alt + Ins scrlk 创建 package 后,包名都重叠在一起。
点击 Project 右边的设置图标,取消 Compact Middle Packages 的对勾
查看文件历史修改记录
对比两个文件
右键 Compare with 选择比较的文件,或者按住 Ctrl 不放选中两个文件,再按下 Ctrl + D
Do not ignore:不要忽视,Ignore whitespaces:忽略空格
官方比较文件的详细说明
新增 JDK 与源码
Project Structure/SDKs,点击 +/Add JDK…
SDK 是软件开发工具包,辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK;JDK是SDK的子集。
SDKs/Sourcepath/+,导入源码,方便以后 Ctrl + B 查看。
生成 JavaDoc
Tools/Generate JavaDoc…
Generate JavaDoc Scope:生成 API 文档的范围
Whole project:当前项目的所有模块
Module '01-package':当前模块
File:当前文件
Custome scope: 自定义范围
Include JDK and library sources in -sourcepath:包含 JDK 源码
Link to JDK documentation:链接 JDK 的 API 文档
Output directory:生成的 API 文档的位置
显示 protected 以上级别的内容:private 私有和 package 包级别不显示
Locale:语言类型,如 zh_CN
Other command line arguments:其它命令行参数:-encoding UTF-8 -charset UTF-8
-charset 是告知浏览器此文件采用什么编码方式读取这个文件
-encoding 是告知 java 源代码的字符编码
Open generated documentation in browser:在浏览器打开生成的文档
点击 OK 后,生成了一大堆 html 文件,点击 index.html 即可。
清理缓存
我没有经历过,用的挺好,下面是尚硅谷资料的原话。
IntelliJ IDEA 首次加载项目的时候,都会创建索引,创建索引的时间跟项目的文件多少成正比。IntelliJ IDEA的缓存和索引主要是用来加快文件查询,从而加快各种查找、代码提示等操作的速度。
在某些特殊条件下,IntelliJ IDEA 的缓存和索引文件也是会损坏的,比如:断电、蓝屏引起的强制关机,当你重新打开 IntelliJ IDEA,很可能 IntelliJ IDEA 会报各种莫名其妙错误,甚至项目打不开,IntelliJIDEA 主题还原成默认状态。
即使没有断电、蓝屏,也会有莫名奇怪的问题的时候,也很有可能是 IntelliJ IDEA 缓存和索引出现了问题,这种情况还不少。遇到此类问题也不用过多担心。我们可以清理缓存和索引。
File/Invalidate Caches…
Invalidate Caches:清除缓存
Reload All from Disk:从磁盘重新加载所有内容
Clear file system cache and Local History:清除文件的系统缓存和本地历史修改记录(即清除C:/Users/用户名/AppData/Local/JetBrains/IntelliJIdea2021.2/LocalHistory,一般不建议勾选)
Clear VCS Log caches and indexes:清除 VCS(版本控制系统) 日志缓存和索引
Clear downloaded shared indexes:清除下载的共享索引
Ask before downloading new shared indexes:请在下载新的共享索引之前进行询问
Invalidate and Restart:清除并重启(老版会全部清除,记得备份 config)
cancel:取消
Just Restart:仅重启
取消更新
打开 Settings,Appearance & Behavior/System Settings/Updates
老版取消勾选 Automatically check updates for
下面根据自己的情况取消勾选
Check IDE updates for Stable Releases:检查 IDEA 稳定版的更新
Check for plugin updates:检查插件的更新
Show What’s New in the editor after an IDE update idea:更新后显示更新的内容
插件使用
Settings/Plugins,在 Marketplace 中搜自己想要的插件,installed 是已安装的插件。(官方的插件库:https://plugins.jetbrains.com/)
也可以点击设置从磁盘上安装插件。
插件名 | 功能 | 网址 |
---|---|---|
Key promoter | 快捷键提示 | https://plugins.jetbrains.com/plugin/4455?pr=idea |
CamelCase | 驼峰式命名和下划线命名交替变化 | https://plugins.jetbrains.com/plugin/7160?pr=idea |
Checkstyle-IDEA | 代码样式检查 | https://plugins.jetbrains.com/plugin/1065?pr=idea |
FindBugs-IDEA | 代码 Bug 检查 | https://plugins.jetbrains.com/plugin/3847?pr=idea |
Statistice | 代码统计 | https://plugins.jetbrains.com/plugin/4509?pr=idea |
JRebel Plugine | 热部署 | https://plugins.jetbrains.com/plugin/?id=4441 |
CodeGlance | 在编辑代码最右侧,显示一块代码小地图 | https://plugins.jetbrains.com/plugin/7275?pr=idea |
Eclipse Code Formatter | 使用 Eclipse 的代码格式化风格,在一个团队中如果公司有规定格式化风格,这个可以使用 | https://plugins.jetbrains.com/plugin/6546?pr=idea |
GsonFormate | 把 JSON 字符串直接实例化成类 | https://plugins.jetbrains.com/plugin/7654?pr=idea |
IDE Eval Reset | 重置 IDEA 使用 | https://zhile.io/2020/11/18/jetbrains-eval-reset-deprecated.html |
Translation | 中英文翻译 Ctrl + Shift + O,或选中单词 后 Ctrl + Shift + Y | https://plugins.jetbrains.com/plugin/8579-translation |
Xcode-Dark Theme | 一种 IDEA 主题 | https://plugins.jetbrains.com/plugin/13106-xcode-dark-theme |
Alibaba Java Coding Guidelines | 阿里巴巴代码检查 | https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines |
其实也没有什么好回顾的,我又不擅长做视频,内容也不太全面,大家百度就行。虽然使用 IDEA 体验更好,方便整合,但是如果是因为 Eclipse 太卡了,才考虑使用 IDEA,但 IDEA 占用内存只会更多,大概 40% 的内存。
9.1 使用 debug 测试创建对象时的代码执行顺序。
9.1 使用 debug 测试创建对象时的代码执行顺序。
创建子类对象时,会先显示初始化父类的实例变量,再执行父类的构造方法,接着显示初始化子类的实例变量,执行子类的构造方法。
// 父类
class A {
int age = 22;
String name;
String flag;
public A() {
age = 33;
name = "33";
}
}
// 子类
class B extends A {
{
tag = "无聊";
}
String tag;
public B() {
System.out.println(tag);
}
}
class test {
public static void main(String[] args) {
// new 对象
new B();
}
}
在 new 对象的地方打个断点,使用 debug 得知:
new 先创建了 B 类的对象,age、name、flag、tag 等实例变量附上默认值 0 或 null。随之调用 B 类的无参构造器,构造器省略了两句话 :
忽略 Object 类的存在,最开始显示初始化的是 A 类的实例变量,接着执行可见部分的 A 类无参构造器给实例变量赋值。返回到 B 类的无参构造器,执行实例语句块给 tag 赋值,执行可见部分的 B 类的构造器输出 tag 的值。
符合看到的现象(先显示初始化父类实例变量,执行父类的构造方法;接着显示初始化子类的实例变量,执行子类的构造方法)。