【注】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 (·https://www.jetbrains.com/
)公司的产品,该公司成立于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 latestmodern technologies and frameworks available out of thebox.
功能强大:
① 强大的整合能力。比如:Git、Maven、Spring等
② 开箱即用的体验(集成版本控制系统、多语言支持的框架随时可用,无需额外安装插件)
符合人体工程学:
① 高度智能(快速的智能代码补全、实时代码分析、可靠的重构工具)
③ 好用的快捷键和代码模板
④ 精准搜索
https://www.jetbrains.com/idea/download/#section=windows
旗舰版(Ultimate)
和社区版(Community)
。两个不同版本的详细对比,可以参照官网:https://www.jetbrains.com/idea/features/editions_comparis on_matrix.html
官网提供的详细使用文档: https://www.jetbrains.com/help/idea/meet-intellij-idea.html
这里以卸载2022.1.2版本为例说明。在【控制面板】找到【卸载程序】
右键点击或左键双击IntelliJ IDEA 2022.1.2进行卸载:
如果需要保留下述数据,就不要打√。如果想彻底删除IDEA所有数据,那就打上√。
从安装上来看,IntelliJ IDEA 对硬件的要求 似乎不是很高
。可是在实际开发中并不是这样的,因为 IntelliJIDEA 执行时会有大量的缓存、索引文件,所以如果你正在使用 Eclipse / MyEclipse,想通过 IntelliJ IDEA来解决计算机的卡、慢等问题,这基本上是不可能的,本质上你应该对自己的硬件设备进行升级。
是否同意发送用户数据(特性、使用的插件、硬件与软件配置等),建议选择:不发送。
接着,会提示我们进行注册。
选择3:(推荐)
《 .\03-资料\01-IDEA 2022.1 注册文档\IntelliJ IDEA2022.1注册文档.docx 》
操作即可。问题描述1:2022.1启动不了,双击桌面图标,没有响应。
问题描述2:进入到安装目录…\IntelliJ IDEA 2022.1.2\bin,打开CMD。输入idea,发现报错。
解决办法:
打开C:\Users\songhk\AppData\Roaming\JetBrains\IntelliJIdea2022.1\idea64.exe.vmoptions
这个文件。
原因:之前使用过的比如2021.2.2版本,pojie了。新版IEDA太智能了,把现有的启运参数也都复制过去了。又因为最新的IDEA,不兼容pojie程序-javaagent:D:\develop_tools\IDEA\IntelliJ IDEA2021.2.2\bin\jetbrains-agent.jar了,所以报错了,所以JVM结束了,所以没有启动画面,凉凉了。
注意:每次新创建一个Project都要重新配置一下Maven,重新设置一下编码(5.8),重新设置一下自动编译(5.11),idea的其它配置只要配置一次即可。
指名工程名、存放的位置、使用的JDK版本等信息。如下所示:
工作空间看需求可以是普通java类型的,也可以是Maven类型的,甚至是插件创建Maven类型的。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello,World!");
}
}
File-->Project Structure...-->Platform Settings -->SDKs
File-->Project Structure...-->Project Settings -->Project
启动IDEA时,默认自动打开上次开发的项目?还是自己选择?
如果去掉Reopen last project on startup前面的对勾,每次启动IDEA就会出现如下界面:
即:打钩会默认打开最近使用的工作空间,不大勾它会显示你的所有工作空间,之后根据你自己的选择进行打开。
Settings-->Appearance & Behavior->System Settings -> Updates
默认都打√了,建议检查IDE更新的√去掉,检查插件更新的√选上。
温馨提示:如果选择某个font字体,中文乱码,可以在fallback font(备选字体)中选择一个支持中文的字体。
方法和方法之间会显示分隔符。
IntelliJ IDEA 的代码提示和补充功能有一个特性: 区分大小写
。 如果想不区分大小写的话,就把这个对勾去掉。 建议去掉勾选
。
自动导包设置
说明: Transparent native-to-ascii conversion主要用于转换ascii,显式原生内容。一般都要勾选。
比如:
/**
* 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 会 关掉代码检查 和 代码提示 等功能。所以一般也可认为这是一种 阅读模式 ,如果你在开发过程中遇到突然代码文件不能进行检查和提示,可以来看看这里是否有开启该功能。
因为我们按shift切换中英文输入方式,经常被按到,总是弹出搜索框,太麻烦了。可以取消它。使用ctrl+n同样可以进行搜索。
方式1:适用于IDEA 2022.1.2版本
在2022.1版本中,采用如下方式消双击shift出现搜索框:搜索double即可,勾选Disabledouble modifierkey shortcuts,禁用这个选项。
方式2:适用于IDEA 2022.1.2之前版本
双击shift 或 ctrl + shift + a,打开如下搜索窗口:
选择registry…,找到"ide.suppress.double.click.handler",把复选框打上勾就可以取消双击shift出现搜索框了。
提示级别:根据自己的习惯选择。
error:错误,即不实现序列化id就报错(影响程序运行)。
warning:警告,即不实现序列化id有警告(警告不影响运行有风险)。
weak warning:微弱警告
server problem:服务器问题
使用:选中想要实现序列化的pojo类上 alt+enter
1). 编辑时出现这个粗光标后,换行无效.解决办法是:按下insert键后,光标会变细,这样就能够恢复正常的操作
2). 如果切换回来以后,光标仍然是显示很粗的,需要进行光标设置。
取消勾选
问题:在2022版本的Idea中,新增了引用提示(Usages)和作者(Annotations)的功能(默认打开)。
引用提示的使用效果,如下图:
在类或方法上,我们可以看到该类有几处被使用到了。比如code变量显示为“4 usages”,也就是4处被用到了。
点击“4 usages”可以看到,具体使用它的类和方法,如下图:
当然,如果是接口的话,还能看到被谁实现了。如下图:
如果你的电脑性能还可以,这些信息可以直观的帮助你看到该类的基本使用情况。但如果出于某种原因想关闭掉,也是可以的。
这功能对自己没什么用,还会导致初次加载时,代码的上面空一行,不想用取消掉即可:
总结:
以上这些设置看似只是针对当前Project设置的,但是新建的其它Project也是同样适用的。
层级关系:
project(工程) - module(模块) - package(包) - class(类)
具体的:
一个project中可以创建多个module
一个module中可以创建多个package
一个package中可以创建多个class
这些结构的划分,是为了方便管理功能代码。
在 IntelliJ IDEA 中,提出了Project和Module这两个概念。
在 IntelliJ IDEA 中Project是 最顶级的结构单元
,然后就是Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是 按功能划分的
,比如:user-core-module、user-facade-module和userhessian-module等等,模块之间彼此可以 相互依赖
,有着不可分割的业务关系。因此,对于一个Project
来说:
互相依赖
的关联关系。建议创建“Empty空工程”,然后创建多模块,每一个模块可以独立运行,相当于一个小项目。JavaSE阶段不涉及到模块之间的依赖。后期再学习模块之间的依赖。
步骤:
(1)选择创建模块
(2)选择模块类型:这里选择创建Java模块,给模块命名,确定存放位置
(1)将老师的模块 teacher_chapter04
整个的复制到自己IDEA项目的路径下
接着打开自己IDEA的项目,会在项目目录下看到拷贝过来的module,只不过不是以模块的方式呈现。
(2)查看Project Structure,选择import module
(4)接着可以一路Next下去,最后选择Overwrite
最后点击OK即可了。
有些同学想要把上课练习代码和作业代码分开两个IDEA项目工程。
当前项目是UTF-8。如果原来的.java文件都是GBK的(如果原来.java文件有的是GBK,有的是UTF-8就比较麻烦了)。
例如:定义sop代表System.out.print();语句
①在Live Templates中增加模板
②先定义一个模板的组,这样方便管理所有自定义的代码模板
其它模板1:单元测试模板:
@Test
public void test$var1$(){
$var2$
}
其它模板2:创建多线程
new Thread(){
public void run(){
$var$
}
};
其它模板3:冒泡排序
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;
}
}
}