IDE
IDE 就是集成了写代码、编译运行、找 bug 等功能的"一站式编程工具",不用在多个软件间来回跳。
不同场景选不同 IDE:
- 写 Java 后端 → 用 IntelliJ IDEA;
- 写 Python 数据分析 → 用 PyCharm;
- 写前端网页 → 用 WebStorm;
- 临时写小脚本、跨语言编辑 → 用 VS Code(轻量灵活)。
核心就是选最贴合你当下要做的事的工具,能少折腾、多写代码~
Jetbrains
JetBrains是一家知名的捷克软件开发公司,在全球多地(俄罗斯圣彼得堡、美国麻省波士顿等)设有办公室。它最广为人知的是各类编程语言的集成开发环境(IDE),能助力开发者更高效编程:
- IntelliJ IDEA:Java开发的核心工具,市场占有率已超过Eclipse。
- WebStorm:专注前端,支持JavaScript、HTML5、CSS3等技术开发。
- PyCharm:Python开发利器,适配人工智能、大数据等领域需求。
- PhpStorm:为PHP开发量身打造。
- RubyMine:用于Ruby/Rails开发。
- AppCode:可替代Xcode,支持Objective - C/Swift开发苹果生态应用。
- CLion:专攻C/C++开发。
- DataGrip:聚焦数据库与SQL相关开发。
- Rider:服务于.NET开发。
- GoLand:针对Go语言,该语言在区块链领域应用广泛。
IDEA卸载
- 一个是自己安装的目录删掉
- 另一个是C盘
IDEA页面

Ant和Maven哪个更好取决于具体的项目需求、团队习惯以及开发者的偏好 ,以下从不同角度来分析:
从项目规模和复杂度来看
- 小型简单项目:Ant更具优势。小型项目的构建流程相对简单,不需要过于复杂的约定和默认设置,这时Ant灵活的手动配置方式可以按需定制构建步骤, 避免引入过多不必要的约定和依赖。例如,开发一个简单的Java命令行工具,可能只需要简单几步编译和打包操作,使用Ant可以快速编写简洁的构建脚本, 直接完成这些操作。
- 大型复杂项目:Maven更合适。大型项目通常涉及众多模块、大量依赖以及复杂的构建流程,Maven的约定优于配置原则,能让团队成员快速理解项目结构和构建逻辑,减少沟通成本。其强大的依赖管理可以自动处理复杂的依赖传递关系,避免依赖冲突。比如一个大型的企业级Java Web项目,包含多个子模块,依赖众多第三方库,Maven能轻松管理这些依赖, 并按照标准的构建生命周期(清理、编译、测试、打包、部署等)来执行构建任务。
从配置难度和学习成本来看
- 对新手友好度:Maven更胜一筹。Maven的默认项目结构和构建流程对于新手来说更容易理解和遵循,上手门槛较低。即使是没有太多构建工具使用经验的开发者,也能快速创建和运行一个基本的Maven项目。而Ant需要开发者手动编写大量XML配置来定义构建任务,对构建流程和XML语法都要有较好的掌握, 学习成本相对较高。
- 团队协作:Maven在团队协作中更具优势。因为其约定是统一的,新成员加入项目后,能迅速熟悉项目的构建方式,减少因为配置差异导致的问题。而Ant的配置因人而异,不同开发者编写的Ant构建脚本风格和结构可能差异较大,团队成员接手时需要花费更多时间去理解和维护。
从插件和生态系统来看
- 功能扩展:Maven的插件生态系统更为丰富和成熟。无论是代码质量检查(如Checkstyle插件)、测试覆盖率统计(如Surefire和Failsafe插件), 还是生成项目文档(如Javadoc插件)等,都能找到对应的插件,并且配置和使用相对简单。Ant虽然也有插件,但数量和成熟度不如Maven, 并且在使用Ant插件时,开发者往往需要更多地了解插件的实现细节和配置方式。
从灵活性和定制化需求来看
- 高度定制化:Ant表现更好。如果项目有非常特殊的构建需求,无法通过Maven的默认约定和插件满足时,Ant的灵活性就能发挥作用。开发者可以完全按照自己的需求编写构建脚本,实现任何复杂的构建逻辑。但这也意味着开发者需要投入更多的时间和精力来维护这些定制化的脚本。
总体而言,对于大多数常规的Java项目,尤其是中大型项目和团队协作项目,Maven是更常用和推荐的选择;而当项目对构建流程有独特、高度定制化的需求,或者项目规模较小、构建简单时,Ant也能很好地完成构建任务。
IDEA常用操作
- out目录:编译后的字节码文件

- 删除模块

- 滚轮改变字体大小

- 鼠标悬浮在代码上有提示:

- 自动导包和优化多余的包

- 同一个包下的类,达到指定个数的时候,导包合并为*

单个静态成员导入(如import static java.lang.Math.PI;
),其作用范围都仅限于当前使用了该导入语句的 Java 类
静态导入是Java中用于直接导入类的静态成员(静态方法、静态变量)的语法,让你无需通过类名就能直接使用这些成员。
"当静态导入的名称数量达到3个时,使用静态通配符导入"是IDEA的代码风格规则,举例说明:
-
如果你从
java.lang.Math
类中导入1-2个静态成员,IDEA会保持显式导入:javaimport static java.lang.Math.PI; import static java.lang.Math.abs;
-
当导入的静态成员达到3个及以上时,IDEA会自动改用通配符
*
简化导入:javaimport static java.lang.Math.*; // 一个语句替代多个,*表示导入该类所有静态成员
这样做的目的是减少导入语句的数量,让代码更简洁(尤其当需要使用某个类的多个静态成员时)。
- 显示行号、方法和方法间的分隔符:

- 忽略大小写进行提示(比如new String,小写s也提示)

- 多个类不隐藏,多行显示


- 设置默认的字体,字体大小,字体行间距:(编辑区和控制台都会变化)

- 修改代码中注释的字体颜色:

- 修改类头的文档注释信息:---》注意:对新建的类才有效
perl
/**
* @author : xx
* @date: ${DATE} - ${MONTH} - ${DAY} - ${TIME}
* @Description: ${PACKAGE_NAME}
* @version: 1.0
*/

- 设置项目文件编码:

- 自动编译:

在开启 "Build project automatically(自动构建项目)" 后,集成开发环境(如 IntelliJ IDEA)的自动编译是实时触发的。
- 省电模式

在 IntelliJ IDEA 等 JetBrains 系列 IDE 中,开启省电模式后,IDE 会关闭一些比较消耗资源的功能,比如代码自动补全的高级提示、实时代码检查与高亮、自动构建(包括自动编译等)等,以此来减少 CPU、内存等资源的占用,达到 "省电"(节省系统资源)的目的,适合在电脑性能不足或者想降低 IDE 资源消耗时使用。
- 代码显示结构

- 导入jar包

- 生成序列化版本号


IDEA快捷键
复制:ctrl+D

IDEA Redo操作

小心与输入法快捷键冲突
代码向上/下移动:Ctrl + Shift + Up / Down
搜索类: Ctrl+N
多行注释:Ctrl + Shift + /(选中)
重命名文件/目录:Shift+F6
for循环:fori
代码块包围:Ctrl+Alt+T

代码自动补全提示:(自己设置为Alt /)

代码层层调用的快捷键:Ctrl Alt 左/右

显示代码结构 : alt + 7
显示导航栏: alt +1
代码模版

Postfix Completion(后缀补全)里的现成快捷方式,比如打 .sout
能快速生成打印代码,这些自带的快捷方式你改不了。
那可以添加新的,就可以用了,比如.sout,添加新的.print也可以用
- soutp:打印方法的形参
- soutm:打印方法的名字
- soutv:打印变量
- soutp(打印方法形参)
java
public void test(int a, String b) {
// 在这里输入 a.soutp 或 b.soutp,按回车
}
System.out.println("a = " + a + ", b = " + b);
- soutm(打印当前方法名)
java
public void login() {
// 输入 soutm 后
System.out.println("login()");
}
- soutv(打印变量值)
java
String name = "张三";
// 输入 name.soutv 后
System.out.println("name = " + name); // 直接带出变量名和值
直接soutv:输出最近的变量
forr:逆向for

iter(增强for)
arduino
// 假设有一个列表
List<String> names = Arrays.asList("张三", "李四", "王五");
// 在这行下面输入 iter 并按回车
iter → 自动生成增强 for 循环:
for (String name : names) {
}
// 同理,数组也可以
int[] numbers = {1, 2, 3, 4};
// 输入 iter 回车
iter → 生成:
for (int number : numbers) {
}
// 假设有一个列表
List<String> names = Arrays.asList("张三", "李四", "王五");
// 在这行下面输入 iter 并按回车
iter → 自动生成增强 for 循环:
for (String name : names) {
}
// 同理,数组也可以
int[] numbers = {1, 2, 3, 4};
// 输入 iter 回车
for (int number : numbers) {
}
Iterator(迭代器)
迭代器(Iterator)的快捷生成方式,在 IntelliJ IDEA 中,输入 itco
可以快速生成带迭代器的循环(包含 hasNext()
和 next()
方法)。
举例:
java
// 假设有一个集合
List<String> books = new ArrayList<>();
books.add("Java编程");
books.add("Python入门");
// 输入 itco 并按回车,会生成:
for (Iterator<String> iterator = books.iterator(); iterator.hasNext(); ) {
String book = iterator.next();
}
List<String> fruits = new ArrayList<>();
fruits.add("苹果");
fruits.add("香蕉");
// 先获取迭代器
Iterator<String> it = fruits.iterator();
// 输入 while 按回车,IDE 会提示补全条件
while (it.hasNext()) { // 自动提示补全 it.hasNext()
String fruit = it.next(); // 手动或通过提示补全 it.next()
// 循环体逻辑
}
这里的 iterator.hasNext()
就是判断是否有下一个元素,iterator.next()
就是获取下一个元素,和你说的 it->next
逻辑一致,是遍历集合的另一种常用方式(迭代器循环),和 iter
生成的增强 for 循环作用类似,但实现方式不同。
判断null
ifn 或者 .null :判断是否为null (if null) inn 或者 .nn :判断不等于null (if not null)
- ifn 或 .null (判断为 null)
比如有变量String name = ...;
输入name.ifn
或name.null
按回车,会生成:
java
if (name == null) {
}
- inn 或 .nn (判断不为 null)
同样对变量name
,输入name.inn
或name.nn
按回车,会生成:
java
if (name != null) {
}
这些快捷方式能快速生成 null 判断的代码块,不用手动敲 == null
或 != null
,尤其在处理可能为 null 的变量时很方便~
属性修饰符:
-
prsf : private static final
-
psf :public static final
-
修改现有模版
创建代码模版


方法注释模板:
ruby
/**
* 功能描述:
* @param: $param$
* @return: $return$
* @auther: $user$
* @date: $date$ $time$
*/

代码调试
Debug的优化设置:更加节省内存空间: 设置Debug连接方式,默认是Socket。 Shared memory是Windows 特有的一个属性,一般在Windows系统下建议使用此设置,内存占用相对较少。

常用断点调试快捷键:

条件判断,查看表达式的值

右键,在i==56的时候停下
查看表达式值


创建Java Web项目

是的,随着技术发展和 IDE 功能迭代,IntelliJ IDEA 后续版本(尤其是较新的版本)对 Java EE 相关的设置界面进行了调整,原本的"Java Enterprise"等直接关联 Java EE 的选项呈现形式发生了变化。
现在若要创建 Java Web 项目(基于 Servlet、JSP 等 Java EE 技术栈),通常可以通过以下方式:
- 使用 Maven/Gradle 管理项目 :创建 Maven 项目后,在
pom.xml
中引入 Java EE(或 Jakarta EE,Java EE 后续演进的规范)相关依赖(如jakarta.servlet-api
等),来搭建 Web 应用所需的环境。 - 借助框架支持:比如结合 Spring Boot 等框架来快速构建 Web 应用,Spring Boot 会自动整合 Servlet 容器等 Web 相关资源,简化了配置流程。
这种调整也是为了适配 Java EE 向 Jakarta EE 的演进,以及更贴合现代 Java Web 开发中依赖管理和框架整合的主流方式。
Jakarta EE
Jakarta EE 是啥
Jakarta EE以前叫Java EE,是一套开发企业级软件(像银行系统、大型电商后台)的标准 ,被Eclipse基金会接手改名后,继续进化。
能做什么
- 网站后台:用它里面的Servlet、JSP等规范,能处理网页请求、展示动态内容,像电商网站处理下单、展示商品信息。
- 数据库操作:借助JPA规范,不用写复杂SQL,直接用Java对象就能管理数据库数据。
- 分布式应用:通过EJB规范,开发部署在不同服务器上、一起协作的组件,满足大型系统复杂业务需求。
优势在哪
- 兼容性好:能兼容以前Java EE积累的代码和经验,开发者上手快。
- 社区活跃:由Eclipse基金会管理,开源社区贡献多,更新快,能跟上云计算、微服务等新技术潮流。
- 简化开发:提供现成规范和工具,处理事务管理、安全认证等复杂底层逻辑,让开发者专注业务开发。
和其他技术关系
- 与Spring Boot:Spring Boot能整合Jakarta EE的部分规范来简化Web开发,Spring Boot是框架,Jakarta EE是规范。
- 与云原生:Jakarta EE朝着云原生方向发展,适配Docker、Kubernetes等,方便应用部署到云端。
Oracle 是将 Java EE 的开发权捐赠给了 Eclipse 基金会。
Oracle将Java EE移交给Eclipse基金会主要有以下原因:
- 商业利益考量:Oracle作为一家上市公司,首要任务是为股东创造利润。维护、推广和推进Java EE平台的成本高昂,而单个供应商从该平台获得的直接经济收益相对有限。Oracle可能认为继续投入Java EE无法获得理想的投资回报率,因此选择将其捐赠给开源组织。
- 开源社区发展需求:Java EE一直是一个多供应商的生态系统,需要更开放、协作的环境来推动技术发展。Eclipse基金会是一个非营利性组织,专注于开源项目的发展,能够更好地促进社区成员的参与和贡献,使Java EE的标准演进更加敏捷、灵活和开放。
- 商标和版权限制:Oracle拥有"Java"商标权,Eclipse基金会接手Java EE后,需要对其进行更名。经过社区投票,最终选择了"Jakarta EE"作为新名称,以满足Oracle的商标使用准则和法律要求。

用 IDEA 里的 Jakarta EE 选项创建的项目,可以是 Java Web 项目,但范围更广。
- 如果你选了 Servlet、JSP 等 Web 相关技术,那就是标准的 Java Web 项目(和以前的 Java EE Web 项目本质一样,只是规范换了个名字叫 Jakarta EE)。
- 它还能创建更复杂的企业级应用(比如包含 EJB、JPA 等组件的大型系统),不局限于 Web 场景。
简单说:Jakarta EE 包含了 Java Web 所需的技术规范,所以用它能创建 Java Web 项目,还能做更多企业级开发。
webapp
webapp就是Web应用程序,它包含网页的静态内容(像HTML、CSS、图片这些直接给用户看的),还有能处理业务逻辑的动态代码(比如登录、查数据的后台程序),以及配置文件、依赖的各种库,部署到服务器上,用户用浏览器就能访问。
日常说的 "web 项目",基本就是在开发 webapp------ 你开发一个 web 项目(比如做个公司内部的请假系统、一个小电商网站),开发完部署到服务器上,用户用浏览器打开就能用,这个能直接用的 "成品",就是 webapp。 简单说:web 项目是开发过程中的叫法,webapp 是开发完能实际用的 "在线软件",本质是一回事的不同阶段 / 说法。
在IDEA中添加Tomcat的镜像



Tomcat项目部署到哪里?

IDEA 里,每个部署到 Tomcat 的项目,会在 ...\.IntelliJIdea2017.2\system\tomcat
下生成配置文件。但项目实际的 Web 内容不在这,配置文件(比如 ROOT.xml
)里写了项目真实文件的路径,Tomcat 启动时就按这路径去找资源运行。
C盘里一个xml,这个xml里有项目真实文件路径,根据此路径去找到资源运行(资源在classes/artifacts里)