【注】JetBrains官方说明:
- 尽管我们采取了多种措施确保受访者的代表性,但结果可能会略微偏向 JetBrains 产品的用户,因
为这些用户更有可能参加调查。
此外,2022年,某美国软件开发商在对近千名专业的Java开发者调研后,发布了《2022年Java开发者生
产力报告》。报告提到:JetBrains 的 IntelliJ IDEA是最受欢迎的 Java IDE,占 48% ,其次是 Eclipse,占24%,Visual Studio Code 占 18%。
在Java 17正式发布之前,Java开发框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3计划
在2022年第四季度实现总体可用性的高端基线:
Spring 官方说明: https://spring.io/blog/2022/01/20/spring-boot-3-0-0-m1-is-now-available
意味着:springboot3.0 是需要用java17和spring6.0为基础建设。如果从企业选型最新springboot3.0
作为架构来说,它搭配jdk17肯定是标配了。
本着" 工欲善其事必先利其器
"的精神,本套课程从IDEA的介绍、安装、设置入手,讲解IDEA中项目的创建、快捷键与模板的使用、断点调试、常用插件等。
IDEA,是 JetBrains公司的产品,该公司成立于2000年,总部位于捷克的布
拉格,致力于为开发者打造最高效智能的开发工具。
公司旗下还有其它产品,比如:
用于开发 Android的Android Studio,也是Google 基于 IDEA 社区版进行迭代的。
IDEA,全称 IntelliJ IDEA
,是 Java 语言的集成开发环境,目前已经(基本)代替
了Eclipse的使
用。IDEA 在业界被公认为是最好的 Java 开发工具(之一),因其 功能强悍
、 设置人性化
,而深受
Java、大数据、移动端程序员的喜爱。尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、
JUnit、CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。
IntelliJ IDEA 在 2015 年的官网上这样介绍自己:
Excel at enterprise, mobile and web development with Java, Scala and Groovy,with all the latest
modern technologies and frameworks available out of thebox.
(1)功能强大:
(2)符合人体工程学:
旗舰版(Ultimate)
和 社区版(Community)
。从安装上来看,IntelliJ IDEA 对硬件的要求 似乎不是很高
。可是在实际开发中并不是这样的,因为 IntelliJ
IDEA 执行时会有大量的缓存、索引文件,所以如果你正在使用 Eclipse / MyEclipse,想通过 IntelliJ IDEA
来解决计算机的卡、慢等问题,这基本上是不可能的,本质上你应该对自己的硬件设备进行升级。
(3)是否删除电脑上低版本的IDEA(如果有,可以选择忽略)
(4)选择安装目录
(5)创建桌面快捷图标等
(6)在【开始】菜单新建一个文件夹(这里需要确认文件夹的名称),来管理IDEA的相关内容。
(7)完成安装
(1)首先,需要通过用户协议:
(2)接着,会提示我们进行注册。
进行注册(对应IDEA相应的版本号)
问题描述1:2022.1启动不了,双击桌面图标,没有响应。
问题描述2:进入到安装目录…\IntelliJ IDEA 2022.1.2\bin,打开CMD。输入idea,发现报错。
(1)解决办法:
原因:
- 之前使用过的比如2021.2.2版本,pojie了。新版IEDA太智能了,把现有的启运参数也都复制过去了。又因为最新的IDEA,不兼容pojie程序-javaagent:D:\develop_tools\IDEA\IntelliJ IDEA
2021.2.2\bin\jetbrains-agent.jar了,所以报错了,所以JVM结束了,所以没有启动画面,凉凉了。
注意:以下举例dk17来说明,别的版本只需要修改jdk即可;
(2)指名工程名、使用的JDK版本等信息。如下所示:
(3)接着创建Java类:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello,World!");
}
}
(1)显示工具栏:
(2)选择详细配置菜单或按钮:
(1)默认启动项目配置:
(2)取消自动更新:
(1)选择主题:
(2)设置菜单和窗口字体和大小:
(3)设置IDEA背景图:
(1)编辑器主题:
(2)字体大小:
温馨提示:
- 如果选择某个font字体,中文乱码,可以在fallback font(备选字体)中选择一个支持中文的字体。
(3)注释的字体颜色:
IntelliJ IDEA 的代码提示和补充功能有一个特性:
区分大小写
。 如果想不区分大小写的话,就把这个对勾去掉。建议去掉勾选
。
(1)默认需要自己手动导包,Alt+Enter快捷键:
(2)自动导包设置:
/**
* ClassName: ${NAME}
* Package: ${PACKAGE_NAME}
* Description:
* @Author 尚硅谷-宋红康
* @Create ${DATE} ${TIME}
* @Version 1.0
*/
${PACKAGE_NAME} - the name of the target package where the new class or interface will
be created.
${PROJECT_NAME} - the name of the current project.
${FILE_NAME} - the name of the PHP file that will be created.
${NAME} - the name of the new file which you specify in the New File dialog box during
the file creation.
${USER} - the login name of the current user.
${DATE} - the current system date.
${TIME} - the current system time.
${YEAR} - the current year.
${MONTH} - the current month.
${DAY} - the current day of the month.
${HOUR} - the current hour.
${MINUTE} - the current minute.
${PRODUCT_NAME} - the name of the IDE in which the file will be created.
${MONTH_NAME_SHORT} - the first 3 letters of the month name. Example: Jan, Feb, etc.
${MONTH_NAME_FULL} - full name of a month. Example: January, February, etc.
Settings-->Build,Execution,Deployment-->Compiler
注意:
- IntelliJ IDEA 有一种叫做
省电模式
的状态,开启这种模式之后 IntelliJ IDEA 会关掉代码检查
和代码提示
等功能。所以一般也可认为这是一种阅读模式
,如果你在开发过程中遇到突然代码文件不能进行检查和提示,可以来看看这里是否有开启该功能。
(1)方式1:适用于IDEA 2022.1.2版本
在2022.1版本中,采用如下方式消双击shift出现搜索框:搜索double即可,勾选Disable double modifier
key shortcuts,禁用这个选项。
总结:
- 以上这些设置看似只是针对当前Project设置的,但是新建的其它Project也是同样适用的。
层级关系:
project(工程) - module(模块) - package(包) - class(类)
具体的:
一个project中可以创建多个module
一个module中可以创建多个package
一个package中可以创建多个class
这些结构的划分,是为了方便管理功能代码。
在 IntelliJ IDEA 中,提出了Project和Module这两个概念。
(1)在 IntelliJ IDEA 中Project是
最顶级的结构单元
,然后就是Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分
的,比如:user-core-module、user-facade-module和userhessian-module等等,模块之间彼此可以相互依赖
,有着不可分割的业务关系。因此,对于一Project来说:
- 当为单Module项目的时候,这个单独的Module实际上就是一个Project。
- 当为多Module项目的时候,多个模块处于同一个Project之中,此时彼此之间具有
互相依赖
的关联关系。
-当然多个模块没有建立依赖关系的话,也可以作为单独一个“小项目”运行。
建议创建“Empty空工程”,然后创建多模块,每一个模块可以独立运行,相当于一个小项目。JavaSE阶段
不涉及到模块之间的依赖。后期再学习模块之间的依赖。
(1)步骤:
(1)移除模块:
(1)将老师的模块 teacher_chapter04
整个的复制到自己IDEA项目的路径下
(1)两个IDEA项目工程效果:
(3)打开两个IDEA项目:
(1)创建chapter01、chapter02、chapter03等章节的module:
(2)设置编码:
(1)非空判断:
(2)遍历数组和集合:
(3)输出语句:
(4)对象操作
创建对象
- Xxx.new .var :创建Xxx类的对象,并赋给相应的变量
- Xxx.new .field:会将方法内刚创建的Xxx对象抽取为一个属性
强转- 对象.cast:将对象进行强转
- 对象.castvar:将对象强转后,并赋给一个变量
(5)静态常量声明
例如:定义sop代表System.out.print();语句
其它模板1:单元测试模板:
@Test
public void test$var1$(){
$var2$
}
new Thread(){
public void run(){
$var$
}
};
for(int $INDEX$ = 1; $INDEX$ < $ARRAY$.length; $INDEX$++) {
for(int $INDEX2$ = 0; $INDEX2$ < $ARRAY$.length-$INDEX$; $INDEX2$++) {
if($ARRAY$[$INDEX2$] > $ARRAY$[$INDEX2$+1]){
$ELEMENT_TYPE$ temp = $ARRAY$[$INDEX2$];
$ARRAY$[$INDEX2$] = $ARRAY$[$INDEX2$+1];
$ARRAY$[$INDEX2$+1] = temp;
}
}
}
快捷键 | 说明 |
---|---|
ctrl + c | 复制代码-copy |
ctrl + v | 粘贴-paste |
ctrl + x | 剪切-cut |
ctrl + z | 撤销-undo |
ctrl + shift + z | 反撤销-redo |
ctrl + s | 保存-save all |
ctrl + a | 全选-select all |
快捷键 | 说明 |
---|---|
alt + enter | 智能提示-edit |
ctrl+j | 提示代码模板-insert live template |
ctrl+alt+t | 使用xx块环绕-surround with … |
alt+insert | 调出生成getter/setter/构造器等结构-generate … |
ctrl+alt+v | 自动生成返回值变量-introduce variable … |
ctrl+d | 复制指定行的代码-duplicate line or selection |
ctrl+y | 删除指定行的代码-delete line |
shift + enter | 切换到下一行代码空位-start new line |
ctrl +alt+ enter | 切换到上一行代码空位-start new line before current |
ctrl+shift+↑ | 向上移动代码-move statement up |
ctrl+shift+↓ | 向下移动代码-move statement down |
alt+shift+↑ | 向上移动一行-move line up |
alt+shift+↓ | 向下移动一行-move line down |
ctrl+p | 方法的形参列表提醒-parameter info |
快捷键 | 说明 |
---|---|
shift+f6 | 批量修改指定的变量名、方法名、类名等-rename |
ctrl+alt+m | 抽取代码重构方法-extract method … |
ctrl+o | 重写父类的方法-override methods … |
ctrl+i | 实现接口的方法-implements methods … |
ctrl+shift+u | 选中的结构的大小写的切换-toggle case |
ctrl+alt+o | 批量导包-optimize imports |
快捷键 | 说明 |
---|---|
ctrl + 选中指定的结构 或 ctrl+n | 如何查看源码-go to class… |
ctrl+f12 | 显示当前类结构,支持搜索指定的方法、属性等-file structure |
ctrl+alt+← | 退回到前一个编辑的页面-back |
ctrl+alt+→ | 进入到下一个编辑的页面-forward |
alt+←/→ | 打开的类文件之间切换-select previous/next tab |
ctrl+h | 光标选中指定的类,查看继承树结构-Type Hierarchy |
ctrl+q | 查看方法文档-quick documentation |
ctrl+alt+u | 类的UML关系图-show uml popup |
ctrl+g | 定位某行-go to line/column |
ctrl+alt+b | 回溯变量或方法的来源-go to implementation(s) |
ctrl+shift+ - | 折叠方法实现-collapse all |
ctrl+shift+ + | 展开方法实现-expand all |
快捷键 | 说明 |
---|---|
ctlr+f | 查找指定的结构 |
ctrl+l | 快速查找:选中的Word快速定位到下一个-find next |
ctrl+r | 查找与替换-replace |
home | 直接定位到当前行的首位-move caret to line start |
end | 直接定位到当前行的末位 -move caret to line end |
ctrl+f7 | 查询当前元素在当前文件中的引用,然后按 F3 可以选择 |
ctrl+shift+f | 全项目搜索文本-find in path … |
ctrl+f4 | 关闭当前窗口-close |
快捷键 | 说明 |
---|---|
ctrl+alt+l | 格式化代码-reformat code |
ctrl + / | 使用单行注释-comment with line comment |
ctrl + shift + / | 使用/取消多行注释-comment with block comment |
tab | 选中数行,整体往后移动-tab |
shift + tab | 选中数行,整体往前移动-prev tab |
快捷键 | 说明 |
---|---|
F8 | 单步调试(不进入函数内部)- step over |
F7 | 单步调试(进入函数内部)- step into |
alt+shift+f7 | 强制单步调试(进入函数内部) - force step into |
shift + F7 | 选择要进入的函数 - smart step into |
shift + F8 | 跳出函数 - step out |
alt + F9 | 运行到断点 - run to cursor |
F9 | 继续执行,进入下一个断点或执行完程序 - resume program |
Ctrl+F2 | 停止 - stop |
Ctrl+Shift+F8 | 查看断点 - view breakpoints |
Ctrl+F4 | 关闭 - close |
(1)已知快捷键操作名,未知快捷键:
(2)已知快捷键,不知道对应的操作名:
注意:
- 苹果电脑或者是用惯Eclipse快捷的,可以选择其他快捷键插件。
编好的程序在执行过程中如果出现错误,该如何查找或定位错误呢?简单的代码直接就可以看出来,但
如果代码比较复杂,就需要借助程序调试来查找错误了。
运行编写好的程序时,可能出现的几种情况:
> 情况1:没有任何bug,程序执行正确!
====================如果出现如下的三种情况,都又必要使用debug=============================
> 情况2:运行以后,出现了错误或异常信息。但是通过日志文件或控制台,显示了异常信息的位置。
> 情况3:运行以后,得到了结果,但是结果不是我们想要的。
> 情况4:运行以后,得到了结果,结果大概率是我们想要的。但是多次运行的话,可能会出现不是我们想要的情况。
比如:多线程情况下,处理线程安全问题。
Debug(调试)程序步骤如下:
- 添加断点
- 启动调试
- 单步执行
- 观察变量和执行流程,找到并解决问题
IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫” 等等
说明:在Debug过程中,可以动态的下断点。
package com.atguigu.debug;
/**
* ClassName: Debug01
* Package: com.atguigu.debug
* Description: 演示1:行断点 & 测试debug各个常见操作按钮
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 18:44
* @Version 1.0
*/
public class Debug01 {
public static void main(String[] args) {
//1.
int m = 10;
int n = 20;
System.out.println("m = " + m + ",n = " + n);
swap(m, n);
System.out.println("m = " + m + ",n = " + n);
//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;
}
}
package com.atguigu.debug;
import java.util.HashMap;
/**
* ClassName: Debug02
* Package: com.atguigu.debug
* Description: 演示2: 方法断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 21:15
* @Version 1.0
*/
public class Debug02 {
public static void main(String[] args) {
//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);
}
}
package com.atguigu.debug;
/**
* ClassName: Debug03
* Package: com.atguigu.debug
* Description: 演示3:字段断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 21:34
* @Version 1.0
*/
public class Debug03 {
public static void main(String[] args) {
Person p1 = new Person(3);
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 +'}';
}
}
package com.atguigu.debug;
/**
* ClassName: Debug04
* Package: com.atguigu.debug
* Description: 演示4:条件断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 21:49
* @Version 1.0
*/
public class Debug04 {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10,11,12};
for (int i = 0; i < arr.length; i++) {
int target = arr[i];
System.out.println(target);
}
}
}
package com.atguigu.debug;
import java.util.Date;
/**
* ClassName: Debug05
* Package: com.atguigu.debug
* Description: 演示5:异常断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 22:01
* @Version 1.0
*/
public class Debug05 {
public static void main(String[] args) {
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());
}
}
package com.atguigu.debug;
/**
* ClassName: Debug06
* Package: com.atguigu.debug
* Description: 演示6:线程调试
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 22:46
* @Version 1.0
*/
public class Debug06 {
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(); //java8新特性Lambda表达式
}
}
package com.atguigu.debug;
/**
* ClassName: Debug07
* Package: com.atguigu.debug
* Description: 演示7:强制结束
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 23:15
* @Version 1.0
*/
public class Debug07 {
public static void main(String[] args) {
System.out.println("获取请求的数据");
System.out.println("调用写入数据库的方法");
insert();
System.out.println("程序结束");
}
private static void insert() {
System.out.println("进入insert()方法");
System.out.println("获取数据库连接");
System.out.println("将数据写入数据表中");
System.out.println("写出操作完成");
System.out.println("断开连接");
}
}
package com.atguigu.debug;
import java.util.HashMap;
/**
* ClassName: Debug08
* Package: com.atguigu.debug
* Description: 演示8:用户自定义数据视图
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 23:21
* @Version 1.0
*/
public class Debug08 {
public static void main(String[] args) {
HashMap<Integer,String> map = new HashMap<>();
map.put(1,"高铁");
map.put(2,"网购");
map.put(3,"支付宝");
map.put(4,"共享单车");
System.out.println(map);
}
}
(1)问题:使用Step Into时,会出现无法进入源码的情况。如何解决?
经验:
- 初学者对于在哪里加断点,缺乏经验,这也是调试程序最麻烦的地方,需要一定的经验。简单来说,在可能发生错误的代码的前面加断点。如果不会判断,就在程序执行的起点处加断点。
(1)在工程上,右键- New - Module,如下:
(3)创建包:
(4)提供包名:
(5)在包下创建类,即可:
(6)提供类名:
(7)测试代码:
(8)点击运行即可:
注意:
- 在IDEA中配置Tomcat之前,需要保证已经安装并配置了Tomcat的环境变量。
- 配置完成以后,在命令行输入:catalina run 。能够启动tomcat,则证明安装配置成功。
(1)下面看如何在IDEA中配置:
(2)配置Tomcat Server的位置:
(1)选择New Module,指明当前工程的名称:
(2)选中当前创建的工程,添加框架支持:
(3)选择:Web Application,选择Create web.xml,如下
(1)部署当前的web项目:
(2)配置当前web工程的详细信息,如下:
(3)配置好后,可以直接运行:
(1)如果Tomcat日志出现乱码,需要配置:
-Dfile.encoding=UTF-8
-Dfile.encoding=UTF-8
注意:
- 在第二步的Startup/Connection页签的Run和Debug添加一个key为 JAVA_TOOL_OPTIONS , value为“ -Dfile.encoding=UTF-8 ”的环境变量**
(1)Maven是一款自动化构建工具,专注服务于Java平台的 项目构建 和 依赖管理 。在JavaEE开发的历史上构建工具的发展也经历了一系列的演化和变迁:
Make→Ant→Maven→Gradle→其他……
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。
③测试:运行单元测试用例程序,确保项目在迭代开发过程中关键点的正确性。
④报告:测试程序的结果。
⑤打包:将java项目打成jar包;将Web项目打成war包。
⑥安装:将jar包或war包安装到本地仓库中。
⑦部署:将jar或war从Maven仓库中部署到Web服务器上运行。
下面直接整合Maven。选择自己Maven的目录,和settings文件,然后配置自己的仓库reposiroty。
(1)指明当前maven工程的名称、模板等信息。这里要求一个项目组的jdk版本必须一致。
(2)新创建的maven 的java工程缺少相应的resources文件目录,需要创建如下:
(3)指明main下resources的文件目录类型:
(4)类似的操作test目录下,提供resources即可。
工程名
src
----main
--------java
--------resources
----test
--------java
--------resources
pom.xml
- main目录用于存放主程序。
- test目录用于存放测试程序。
- java目录用于存放源代码文件。
- resources目录用于存放配置文件和资源文件。
(1)第1步:创建Maven的核心配置文件pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.atguigu.mavengroupId>
<artifactId>maven-01artifactId>
<version>1.0-SNAPSHOTversion>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.18version>
dependency>
dependencies>
project>
(2)第2步:编写主程序代码
package com.atguigu.java;
/**
* ClassName: HelloMaven
* Package: com.atguigu.java
* Description:
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 18:20
* @Version 1.0
*/
public class HelloMaven {
public String sayHello(String message) {
return "Hello, " + message + "!";
}
}
(3)第3步:编写测试代码
package com.atguigu.java;
import org.junit.Test;
/**
* ClassName: HelloMavenTest
* Package: com.atguigu.java
* Description:
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 18:21
* @Version 1.0
*/
public class HelloMavenTest {
@Test
public void testHelloMaven() {
HelloMaven helloMaven = new HelloMaven();
System.out.println(helloMaven.sayHello("Maven"));
}
}
(1)指明Maven的web工程的名称和模板。如下:
(2)在Tomcat上进行部署:
(3)配置部署的详细信息:
(1)找不到HttpServlet错误
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
可以加入如下依赖解决。<dependency>
<groupId>javax.servletgroupId>
<artifactId>servlet-apiartifactId>
<version>2.5version>
<scope>providedscope>
dependency>
(2)EL表达式没有提示问题
<dependency>
<groupId>javax.servlet.jspgroupId>
<artifactId>jsp-apiartifactId>
<version>2.1.3-b06version>
<scope>providedscope>
dependency>
<%@page language="java" pageEncoding="utf-8" contentType="text/html;UTF-8" %>
(1)找到数据库选项:
(3)配置MySQL数据库的详细信息:
- 表面上很多人认为配置 Database 就是为了有一个 GUI 管理数据库功能,但是这并不是 IntelliJ IDEA 的
Database 最重要特性。数据库的 GUI 工具有很多,IntelliJ IDEA 的 Database 也没有太明显的优势。- IntelliJ IDEA 的 Database 最大特性就是对于 Java Web 项目来讲,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等。
图标1:同步当前的数据库连接。这个是最重要的操作。配置好连接以后或通过其他工具操作数据库以后,需要及时同步
图标2:配置当前的连接
图标3:断开当前的连接
图标4:显示相应数据库对象的数据
图标5:编辑修改当前数据库对象
(2)可以导出文件:
- 阿里巴巴Java编码规范检查插件,检测代码是否存在问题,以及是否符合规范。
- 使用:在类中,右键,选择编码规约扫描,在下方显示扫描规约和提示。根据提示规范代码,提高代码
质量。
可视化的字节码查看器。
使用:
- 在 IDEA 打开想研究的类。
- 编译该类或者直接编译整个项目( 如果想研究的类在 jar 包中,此步可略过)。
- 打开“view” 菜单,选择“Show Bytecode With jclasslib” 选项。
- 选择上述菜单项后 IDEA 中会弹出 jclasslib 工具窗口。
-Duser.language=en
- 注册翻译服务(有道智云、百度翻译开放平台、阿里云机器翻译)帐号,开通翻译服务并获取其应用ID
和密钥 绑定应用ID和密钥:偏好设置(设置) > 工具 > 翻译 > 常规 > 翻译引擎 > 配置…- 使用:鼠标选中文本,点击右键即可自动翻译成多国语言。
- 注:请注意保管好你的应用密钥,防止其泄露。
实际开发中还有一个非常常见的场景: 我们创建一个对象后,想依次调用 Setter 函数对属性赋值,如果
属性较多很容易遗漏或者重复。
可以使用这 GenerateAllSetter 提供的功能,快速生成对象的所有 Setter 函数(可填充默认值),然后自
己再跟进实际需求设置属性值。
给括号添加彩虹色,使开发者通过颜色区分括号嵌套层级,便于阅读
快捷键提示插件。当你执行鼠标操作时,如果该操作可被快捷键代替,会给出提示,帮助你自然形成使
用快捷键的习惯,告别死记硬背。
{
"name": "tom",
"age": "18",
"gender": "man",
"hometown": {
"province": "河北省",
"city": "石家庄市",
"county": "正定县"
}
}
对于很多人而言,写代码时略显枯燥的,如果能够安装自己喜欢的主题将为开发工作带来些许乐趣。
IDEA 支持各种主题插件,其中最出名的当属 Material Theme UI。