第04章_IDEA的安装与使用(下)
树图思维导图提供 第04章_IDEA的安装与使用(下) 在线思维导图免费制作,点击“编辑”按钮,可对 第04章_IDEA的安装与使用(下) 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:6b5d501969ab6cb440b756a8e9c6270c
第04章_IDEA的安装与使用(下)思维导图模板大纲
讲师:尚硅谷-宋红康(江湖人称:康师傅)
官网:
8.1 常用快捷键
见《
8.2 查看快捷键
1、已知快捷键操作名,未知快捷键
images/1577246789281.png
2、已知快捷键,不知道对应的操作名
images/1577246895469.png
8.3 自定义快捷键
images/1577247069135.png
8.4 使用其它平台快捷键
苹果电脑或者是用惯Eclipse快捷的,可以选择其他快捷键插件。
images/image-20221019205934099.png
9.1 为什么需要Debug
编好的程序在执行过程中如果出现错误,该如何查找或定位错误呢?简单的代码直接就可以看出来,但如果代码比较复杂,就需要借助程序调试工具(Debug)来查找错误了。
情况1:没有任何bug,程序执行正确!
====================如果出现如下的三种情况,都又必要使用debug=============================
情况2:运行以后,出现了错误或异常信息。但是通过日志文件或控制台,显示了异常信息的位置。 情况3:运行以后,得到了结果,但是结果不是我们想要的。 情况4:运行以后,得到了结果,结果大概率是我们想要的。但是多次运行的话,可能会出现不是我们想要的情况。 比如:多线程情况下,处理线程安全问题。
9.2 Debug的步骤
Debug(调试)程序步骤如下:
1、添加断点
2、启动调试
3、单步执行
4、观察变量和执行流程,找到并解决问题
1、添加断点
在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点。
images/1576476225262.png
2、启动调试
IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫”
images/1576476841154.png
3、单步调试工具介绍
images/1576477907469.png
或
images/1576477927994.png
images/1576476917169.png
S
images/1576476984903.png
S
images/1576477028289.png
F
images/1576477117156.png
S
images/1576477204366.png
R
images/1576477448969.png
R
images/1576477293031.png
S
images/1576477330355.png
V
images/1576477381767.png
M
说明:在Debug过程中,可以动态的下断点。
9.3 多种Debug情况介绍
9.3.1 行断点
断点打在代码所在的行上。执行到此行时,会停下来。
j
/**
//2. int[] arr = new int[] {1,2,3,4,5}; System.out.println(arr);//地址值 char[] arr1 = new char[] {'a','b','c'}; System.out.println(arr1);//abc } public static void swap(int m,int n){ int temp = m; m = n; n = temp; }
}
9.3.2 方法断点
断点设置在方法的签名上,默认当进入时,断点可以被唤醒。
也可以设置在方法退出时,断点也被唤醒
images/image-20221020213250606.png
在多态的场景下,在父类或接口的方法上打断点,会自动调入到子类或实现类的方法
j
import java.util.HashMap;
/**
//1. Son instance = new Son(); instance.test(); //2. Father instance1 = new Son(); instance1.test(); //3. Consumer con = new ConsumerImpl(); con.accept("atguigu"); //4. HashMap map = new HashMap(); map.put("Tom",12); map.put("Jerry",11); map.put("Tony",20); }
}
class Father{ public void test(){ System.out.println("Father : test"); } }
class Son extends Father{ public void test(){ System.out.println("Son : test"); } }
interface Consumer{ void accept(String str); }
class ConsumerImpl implements Consumer{
@Override public void accept(String str) { System.out.println("ConsumerImple:" + str); }
}
9.3.3 字段断点
在类的属性声明上打断点,默认对属性的修改操作进行监控
images/image-20221020214905607.png
j
/**
System.out.println(p1); }
}
class Person{ private int id = 1; private String name; private int age;
public Person() { } { id = 2; } public Person(int id) { this.id = id; } public Person(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; }
}
9.3.4 条件断点
j
/**
for (int i = 0; i < arr.length; i++) { int target = arr[i]; System.out.println(target); } }
}
针对上述代码,在满足arr[i] % 3 == 0的条件下,执行断点。
images/image-20221020220043375.png
9.3.5 异常断点(暂略)
对异常进行跟踪。如果程序出现指定异常,程序就会执行断点,自动停住。
j
import java.util.Date;
/**
int m = 10; int n = 0; int result = m / n; System.out.println(result);
// Person p1 = new Person(1001); // System.out.println(p1.getName().toUpperCase());
}
}
通过下图的方式,对指定的异常进行监控:
images/image-20221020220904864.png
9.3.6 线程调试(暂略)
j
/**
public static void main(String[] args) { test("Thread1"); test("Thread2"); } public static void test(String threadName) { new Thread( () -> System.out.println(Thread.currentThread().getName()), threadName ).start(); }
}
images/image-20221020231542081.png
9.3.7 强制结束
j
/**
private static void insert() { System.out.println("进入insert()方法"); System.out.println("获取数据库连接"); System.out.println("将数据写入数据表中"); System.out.println("写出操作完成"); System.out.println("断开连接"); }
}
images/image-20221020232038387.png
9.4 自定义调试数据视图(暂略)
j
import java.util.HashMap;
/**
System.out.println(map); }
}
设置如下:
images/1576478352757.png
images/1576478431514.png
9.5 常见问题
问题:使用Step Into时,会出现无法进入源码的情况。如何解决?
方案1:使用 force step into 即可
方案2:点击Setting -> Build,Execution,Deployment -> Debugger -> Stepping
把Do not step into the classess中的
<img src="images/image-20220516200427750.png" alt="image-20220516200427750" style="zoom:75%;" />
小结:
经验:初学者对于在哪里加断点,缺乏经验,这也是调试程序最麻烦的地方,需要一定的经验。
简单来说,在可能发生错误的代码的前面加断点。如果不会判断,就在程序执行的起点处加断点。
推荐1:Alibaba Java Coding Guidelines
阿里巴巴Java编码规范检查插件,检测代码是否存在问题,以及是否符合规范。
使用:在类中,右键,选择编码规约扫描,在下方显示扫描规约和提示。根据提示规范代码,提高代码质量。
推荐2:jclasslib bytecode viewer
可视化的字节码查看器。
使用:
在 IDEA 打开想研究的类。
编译该类或者直接编译整个项目( 如果想研究的类在 jar 包中,此步可略过)。
打开“view” 菜单,选择“Show Bytecode With jclasslib” 选项。
选择上述菜单项后 IDEA 中会弹出 jclasslib 工具窗口。
images/image-20221023225239838.png
英文设置:
在 Help -> Edit Custom VM Options …,加上
-Duser.language=en
推荐3:Translation
注册翻译服务(有道智云、百度翻译开放平台、阿里云机器翻译)帐号,开通翻译服务并获取其应用ID和密钥 绑定应用ID和密钥:偏好设置(设置) > 工具 > 翻译 > 常规 > 翻译引擎 > 配置…
使用:鼠标选中文本,点击右键即可自动翻译成多国语言。
注:请注意保管好你的应用密钥,防止其泄露。
推荐4:GenerateAllSetter
实际开发中还有一个非常常见的场景: 我们创建一个对象后,想依次调用 Setter 函数对属性赋值,如果属性较多很容易遗漏或者重复。
<img src="images/image-20221023230812560.png" alt="image-20221023230812560" style="zoom:80%;" />
可以使用这 GenerateAllSetter 提供的功能,快速生成对象的所有 Setter 函数(可填充默认值),然后自己再跟进实际需求设置属性值。
插件5:Rainbow Brackets
给括号添加彩虹色,使开发者通过颜色区分括号嵌套层级,便于阅读
images/image-20221019222113604.png
推荐6:CodeGlance Pro
在编辑器右侧生成代码小地图,可以拖拽小地图光标快速定位代码,阅读行数很多的代码文件时非常实用。
<img src="images/image-20221023231842846.png" alt="image-20221023231842846" style="zoom:80%;" />
推荐7:Statistic
代码统计工具。
images/image-20221023231801337.png
images/image-20221023231741671.png
推荐8:Presentation Assistant
显示快捷键操作的按键
推荐9:Key Promoter X
快捷键提示插件。当你执行鼠标操作时,如果该操作可被快捷键代替,会给出提示,帮助你自然形成使用快捷键的习惯,告别死记硬背。
推荐10:JavaDoc
按
images/image-20221019225041655.png
推荐11: LeetCode Editor
images/image-20221019225242331.png
在 IDEA 里刷力扣算法题
推荐12:GsonFormatPlus
根据 json 生成对象。
使用:使用alt + s 或 alt + insert调取。
images/image-20221023235416317.png
举例:
json { "name": "tom", "age": "18", "gender": "man", "hometown": { "province": "河北省", "city": "石家庄市", "county": "正定县" } }
插件13:Material Theme UI
对于很多人而言,写代码时略显枯燥的,如果能够安装自己喜欢的主题将为开发工作带来些许乐趣。
IDEA 支持各种主题插件,其中最出名的当属 Material Theme UI。
images/image-20220810011348421.png
安装后,可以从该插件内置的各种风格个选择自己最喜欢的一种。
树图思维导图提供 904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查 在线思维导图免费制作,点击“编辑”按钮,可对 904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:10b9a8a2dd2fb4593f8130ef16c320fc
树图思维导图提供 9.战斗的基督教 在线思维导图免费制作,点击“编辑”按钮,可对 9.战斗的基督教 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:33d168acd0cd9f767f809c7a5df86e3a