第04章_IDEA的安装与使用(上)

news2025/1/12 4:48:56

第04章_IDEA的安装与使用(上)

讲师:尚硅谷-宋红康(江湖人称:康师傅)

官网:http://www.atguigu.com


本章专题与脉络


【Why IDEA ?】

 

【注】JetBrains官方说明:

尽管我们采取了多种措施确保受访者的代表性,但结果可能会略微偏向 JetBrains 产品的用户,因为这些用户更有可能参加调查。

此外,2022年,某美国软件开发商在对近千名专业的Java开发者调研后,发布了《2022年Java开发者生产力报告》。报告提到:JetBrains 的 IntelliJ IDEA是最受欢迎的 Java IDE,占 48%,其次是 Eclipse,占 24%,Visual Studio Code 占 18%。


本着"工欲善其事必先利其器"的精神,本章从IDEA的介绍、安装、设置入手,讲解IDEA中项目的创建、快捷键与模板的使用、断点调试、常用插件等。

1. 认识IntelliJ IDEA

1.1 JetBrains 公司介绍

IDEA,是 JetBrains (JetBrains: Essential tools for software developers and teams)公司的产品,该公司成立于2000年,总部位于捷克的布拉格,致力于为开发者打造最高效智能的开发工具。

公司旗下还有其它产品,比如:

  • WebStorm:用于开发 JavaScript、HTML5、CSS3 等前端技术

  • PyCharm:用于开发 python

  • PhpStorm:用于开发 PHP

  • RubyMine:用于开发 Ruby/Rails

  • AppCode:用于开发 Objective - C/Swift

  • CLion:用于开发 C/C++

  • DataGrip:用于开发数据库和 SQL

  • Rider:用于开发.NET

  • GoLand:用于开发 Go

用于开发 Android的Android Studio,也是Google 基于 IDEA 社区版进行迭代的。

1.2 IntelliJ IDEA 介绍

IDEA,全称 IntelliJ IDEA,是 Java 语言的集成开发环境,目前已经(基本)代替了Eclipse的使用。IDEA 在业界被公认为是最好的 Java 开发工具(之一),因其功能强悍设置人性化,而深受Java、大数据、移动端程序员的喜爱。

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.3 IDEA的主要优势:(vs Eclipse)

功能强大:

① 强大的整合能力。比如:Git、Maven、Spring等

② 开箱即用的体验(集成版本控制系统、多语言支持的框架随时可用,无需额外安装插件)

符合人体工程学:

① 高度智能(快速的智能代码补全、实时代码分析、可靠的重构工具)

② 提示功能的快速、便捷、范围广

 

③ 好用的快捷键和代码模板

④ 精准搜索

1.4 IDEA 的下载

  • 下载网址: Download IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains

  • IDEA 分为两个版本: 旗舰版(Ultimate)社区版(Community)

  • IDEA的大版本每年迭代一次,大版本下的小版本(如:2022.x)迭代时间不固定,一般每年3个小版本。

两个不同版本的详细对比,可以参照官网: JetBrains Products Comparison

官网提供的详细使用文档: You will be redirected shortly

2. 卸载与安装

2.1 卸载过程

这里以卸载2022.1.2版本为例说明。在【控制面板】找到【卸载程序】

右键点击或左键双击IntelliJ IDEA 2022.1.2进行卸载:

如果需要保留下述数据,就不要打√。如果想彻底删除IDEA所有数据,那就打上√。

  

软件卸载完以后,还需要删除其它几个位置的残留:

2.2 安装前的准备

  • 64 位 Microsoft Windows 11、10、8

  • 最低 2 GB 可用 RAM,推荐 8 GB 系统总 RAM

  • 2.5 GB 硬盘空间,推荐 SSD

  • 最低屏幕分辨率 1024x768

从安装上来看,IntelliJ IDEA 对硬件的要求似乎不是很高。可是在实际开发中并不是这样的,因为 IntelliJ IDEA 执行时会有大量的缓存、索引文件,所以如果你正在使用 Eclipse / MyEclipse,想通过 IntelliJ IDEA 来解决计算机的卡、慢等问题,这基本上是不可能的,本质上你应该对自己的硬件设备进行升级。

2.3 安装过程

1、下载完安装包,双击直接安装

2、欢迎安装

3、是否删除电脑上低版本的IDEA(如果有,可以选择忽略)

  • 如果电脑上有低版本的IDEA,可以选择删除或保留。

  • 这里没有卸载旧版本,如果需要卸载,记得勾选下面的保留旧的设置和配置。

4、选择安装目录

选择安装目录,目录中要避免中文和空格。

5、创建桌面快捷图标等

确认是否与.java、.groovy、.kt 格式文件进行关联。这里建议不关联。

6、在【开始】菜单新建一个文件夹(这里需要确认文件夹的名称),来管理IDEA的相关内容。

  

7、完成安装

重启以后,单击登录:

2.4 注册

首先,需要通过用户协议:

是否同意发送用户数据(特性、使用的插件、硬件与软件配置等),建议选择:不发送。

接着,会提示我们进行注册。

  • 选择1:试用30天。在IDEA2022.1.2版本中,需要先登录,才能开启试用。

  • 选择2:付费购买旗舰版

  •  

  • 选择3:(推荐)

    • 大家参照《.\03-资料\01-IDEA 2022.1 注册文档\IntelliJ IDEA2022.1注册文档.docx》操作即可。

    • 由于存在时效性,如果失效,大家可以自行搜索注册方式即可。

2.5 闪退问题

问题描述:2022.1启动不了,双击桌面图标,没有响应。

解决办法:

打开C:\Users\songhk\AppData\Roaming\JetBrains\IntelliJIdea2022.1\idea64.exe.vmoptions 这个文件。

内容如下所示:

删除红框的数据以后,再登录即可正常进入。

原因:之前使用过的比如2021.2.2版本。新版IEDA太智能了,把现有的启运参数也都复制过去了。又因为最新的IDEA,不兼容,所以报错了,所以JVM结束了,所以没有启动画面,凉凉了。

3. HelloWorld的实现

3.1 新建Project - Class

选择"New Project":

指名工程名、使用的JDK版本等信息。如下所示:

接着创建Java类:

3.2 编写代码

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello,World!");
    }
}

3.3 运行

  

4. JDK相关设置

4.1 项目的JDK设置

File-->Project Structure...-->Platform Settings -->SDKs

 

  • 注1:SDKs全称是Software Development Kit ,这里一定是选择JDK的安装根目录,不是JRE的目录。

  • 注2:这里还可以从本地添加多个JDK。使用“+”即可实现。

4.2 out目录和编译版本

File-->Project Structure...-->Project Settings -->Project

5. 详细设置

5.1 如何打开详细配置界面

1、显示工具栏

2、选择详细配置菜单或按钮

5.2 系统设置

1、默认启动项目配置

启动IDEA时,默认自动打开上次开发的项目?还是自己选择?

如果去掉Reopen projects on startup前面的对勾,每次启动IDEA就会出现如下界面:

2、取消自动更新

Settings-->Appearance & Behavior->System Settings -> Updates

默认都打√了,建议检查IDE更新的√去掉,检查插件更新的√选上。

5.3 设置整体主题

1、选择主题

2、设置菜单和窗口字体和大小

3、设置IDEA背景图

选择一张合适的图片作为背景,即可。

5.4 设置编辑器主题样式

1、编辑器主题

2、字体大小

更详细的字体与颜色如下:

温馨提示:如果选择某个font字体,中文乱码,可以在fallback font(备选字体)中选择一个支持中文的字体。

3、注释的字体颜色

  • Block comment:修改多行注释的字体颜色

  • Doc Comment –> Text:修改文档注释的字体颜色

  • Line comment:修改单行注释的字体颜色

5.5 显示行号与方法分隔符

5.6 代码智能提示功能

IntelliJ IDEA 的代码提示和补充功能有一个特性:区分大小写。 如果想不区分大小写的话,就把这个对勾去掉。建议去掉勾选

5.7 自动导包配置

  • 默认需要自己手动导包,Alt+Enter快捷键

  • 自动导包设置

    • 动态导入明确的包:Add unambiguous imports on the fly,该设置具有全局性;

    • 优化动态导入的包:Optimize imports on the fly,该设置只对当前项目有效;

5.8 设置项目文件编码(一定要改)

 

说明: Transparent native-to-ascii conversion主要用于转换ascii,显式原生内容。一般都要勾选。

5.9 设置控制台的字符编码

5.10 修改类头的文档注释信息

比如:

/**
* 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.
​

5.11 设置自动编译

Settings-->Build,Execution,Deployment-->Compiler

5.12 设置为省电模式 (可忽略)

IntelliJ IDEA 有一种叫做省电模式的状态,开启这种模式之后 IntelliJ IDEA 会关掉代码检查代码提示等功能。所以一般也可认为这是一种阅读模式,如果你在开发过程中遇到突然代码文件不能进行检查和提示,可以来看看这里是否有开启该功能。

5.13 取消双击shift搜索

因为我们按shift切换中英文输入方式,经常被按到,总是弹出搜索框,太麻烦了。可以取消它。

  • 方式1:适用于IDEA 2022.1.2版本

在2022.1版本中,采用如下方式消双击shift出现搜索框:搜索double即可,勾选Disable double modifier key shortcuts,禁用这个选项。

  • 方式2:适用于IDEA 2022.1.2之前版本

双击shift 或 ctrl + shift + a,打开如下搜索窗口:

选择registry...,找到"ide.suppress.double.click.handler",把复选框打上勾就可以取消双击shift出现搜索框了。

6. 工程与模块管理

6.1 IDEA项目结构

层级关系:

project(工程) - module(模块) - package(包) - class(类)

具体的:

一个project中可以创建多个module
​
一个module中可以创建多个package
​
一个package中可以创建多个class

这些结构的划分,是为了方便管理功能代码。

6.2 Project和Module的概念

在 IntelliJ IDEA 中,提出了Project和Module这两个概念。

在 IntelliJ IDEA 中Project是最顶级的结构单元,然后就是Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分的,比如:user-core-module、user-facade-module和user-hessian-module等等,模块之间彼此可以相互依赖,有着不可分割的业务关系。因此,对于一个Project来说:

  • 当为单Module项目的时候,这个单独的Module实际上就是一个Project。

  • 当为多Module项目的时候,多个模块处于同一个Project之中,此时彼此之间具有互相依赖的关联关系。

  • 当然多个模块没有建立依赖关系的话,也可以作为单独一个“小项目”运行。

6.3 Module和Package

在一个module下,可以声明多个包(package),一般命名规范如下:

1.不要有中文
2.不要以数字开头
3.给包取名时一般都是公司域名倒着写,而且都是小写
  比如:尚硅谷网址是www.atguigu.com
  那么我们的package包名应该写成:com.atguigu.子名字。

6.4 创建Module

建议创建“Empty空工程”,然后创建多模块,每一个模块可以独立运行,相当于一个小项目。JavaSE阶段不涉及到模块之间的依赖。后期再学习模块之间的依赖。

步骤:

(1)选择创建模块

(2)选择模块类型:这里选择创建Java模块,给模块命名,确定存放位置

(4)模块声明在工程下面

6.5 删除模块

(1)移除模块

 

(2)彻底删除模块

6.6 导入老师的模块

(1)将老师的模块teacher_chapter04整个的复制到自己IDEA项目的路径下

接着打开自己IDEA的项目,会在项目目录下看到拷贝过来的module,只不过不是以模块的方式呈现。

(2)查看Project Structure,选择import module

(3)选择要导入的module:

(4)接着可以一路Next下去,最后选择Overwrite

最后点击OK即可了。

6.7 同时打开两个IDEA项目工程

1、两个IDEA项目工程效果

有些同学想要把上课练习代码和作业代码分开两个IDEA项目工程。

 

2、新建一个IDEA项目

注意:第一次需要新建,之后直接打开项目工程即可

 

 

3、打开两个IDEA项目

 

6.8 导入前几章非IDEA工程代码

1、创建chapter01、chapter02、chapter03等章节的module

将相应章节的源文件粘贴到module的src下。

 

打开其中各个源文件,会发现有乱码。比如:

2、设置编码

当前项目是UTF-8。如果原来的.java文件都是GBK的(如果原来.java文件有的是GBK,有的是UTF-8就比较麻烦了)。

可以单独把这两个模块设置为GBK编码的。

改为GBK,确认即可。如图:

7. 代码模板的使用

7.1 查看Postfix Completion模板(后缀补全)

7.2 查看Live Templates模板(实时模板)

7.3 常用代码模板

1、非空判断

  • 变量.null:if(变量 == null)

  • 变量.nn:if(变量 != null)

  • 变量.notnull:if(变量 != null)

  • ifn:if(xx == null)

  • inn:if(xx != null)

2、遍历数组和集合

  • 数组或集合变量.fori:for循环

  • 数组或集合变量.for:增强for循环

  • 数组或集合变量.forr:反向for循环

  • 数组或集合变量.iter:增强for循环遍历数组或集合

3、输出语句

  • sout:相当于System.out.println

  • soutm:打印当前方法的名称

  • soutp:打印当前方法的形参及形参对应的实参值

  • soutv:打印方法中声明的最近的变量的值

  • 变量.sout:打印当前变量值

  • 变量.soutv:打印当前变量名及变量值

4、对象操作

  • 创建对象

    • Xxx.new .var :创建Xxx类的对象,并赋给相应的变量

    • Xxx.new .field:会将方法内刚创建的Xxx对象抽取为一个属性

  • 强转

    • 对象.cast:将对象进行强转

    • 对象.castvar:将对象强转后,并赋给一个变量

5、静态常量声明

  • psf:public static final

  • psfi:public static final int

  • psfs:public static final String

  • prsf:private static final

7.4 自定义代码模板

7.4.1 自定义后缀补全模板

 

7.4.2 自定义Live Templates

例如:定义sop代表System.out.print();语句

①在Live Templates中增加模板

②先定义一个模板的组,这样方便管理所有自定义的代码模板

③在模板组里新建模板

④定义模板(以输出语句为例)

  • Abbreviation:模板的缩略名称

  • Description:模板的描述

  • Template text:模板的代码片段

  • 模板应用范围。比如点击Define。选择如下:应用在java代码中。

其它模板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;
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从二叉树角度看归并排序

归并排序本质上可以看作二叉树的后序遍历 里面用到的核心思想 > 分治 分&#xff1a;二叉树算法思想中的分解问题思想 治&#xff1a;链表中双指针技巧&#xff08;将两条链表合并成一条有序链表&#xff09; sort首先将数组分成左半边和右半边 > 然后分别对左右两…

Log库和配置系统结构

Log库&#xff1a; 类关系 首先有3个大类&#xff1a;LogEvent、LogAppender、Logger、LogFormat&#xff1b; 关系如下&#xff1a; Logger&#xff1a;具体log的实现 LogAppender&#xff1a;将Log信息传输到不同的目的地&#xff0c;根据不同的需求派生出不同的类 LogF…

Java 系列 Nacos

Java 系列文章 文章目录Java 系列文章前言一、Nacas 介绍及安装1. 什么是Nacos2. 为什么使用Nacos3. Nacos 下载和安装二、Nacos服务提供者注册1. Nacos代替Eureka2. Nacos服务注册中心3. Nacos Discovery引入1. 创建新项目2. POM3. YML文件4. 启动类5. 业务类6. 测试&#xff…

Git如何推送当前代码到远程仓库

第一种方法 &#xff08;建立在已经配置好用户变量和ssh基础上&#xff09; 在本地创建git仓库 git init 绑定远程仓库&#xff0c;origin是给远程仓库起的别名&#xff0c;也可以起其他名字&#xff0c;但是如果用origin&#xff0c;git push时可以不指出名字&#xff0c;如果…

【2023 · CANN训练营第一季】昇腾AI入门课(Pytorch)——第一章学习笔记

第一章 昇腾AI基础知识介绍 第2节 昇腾AI全栈架构 昇腾 AI 全栈可以分成四个大部分&#xff1a; 1&#xff0e;应用使能层面&#xff0c;此层面通常包含用于部署模型的软硬件&#xff0c;例如 API 、 SDK 、部署平台&#xff0c;模型库等等。 2. AI 框架层面&#xff0c;此层…

【C语言】 程序员的自我修养之(程序编译过程)

在ANSI C(标准C)的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境&#xff0c;它用于实际执行代码。 今天我们就讲解他们在这环境过程都做了什么。 文章目录详解编译链接翻译环境编…

【数据库原理 • 七】数据库并发控制

前言 数据库技术是计算机科学技术中发展最快&#xff0c;应用最广的技术之一&#xff0c;它是专门研究如何科学的组织和存储数据&#xff0c;如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进&#xff0c;最常用的技术。 当前…

【19】核心易中期刊推荐——人工智能 | 遥感信息处理

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

redis——优化

键值设计bigKey例子批处理单机 pipeline集群服务器持久化慢查询安全内存集群问题集群完整性集群带宽数据倾斜客户端性能命令的集群兼容性lua和事务&#xff1a;集群下不支持键值设计 长度 < 44 节省内存。string的底层数据结构中&#xff0c;编码格式embstr&#xff08;连续…

LeetCode:455. 分发饼干——贪心算法

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340;算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 贪心算法是在每个阶段选取局部最优解&#xff0c;最终得到全局最优解的一种思想。贪心算法…

操作系统论文导读(四):Minimizing Memory Utilization of Real-Time Task Sets in Single and…

目录 一、论文核心思想&#xff1a; 二、降低RAM的思想 三、基本的相关定义 四、单处理器方面 五、优化单处理器中的堆栈使用 六、多处理器方面 七、基本的相关调度 八、协议特点 Minimizing Memory Utilization of Real-Time Task Sets in Single and Multi-Processor…

算法记录 | Day29 回溯算法

491.递增子序列 思路&#xff1a; 1.确定回溯函数参数&#xff1a;定义全局遍历存放res集合和单个path&#xff0c;还需要 nums数组startindex&#xff08;int&#xff09;为下一层for循环搜索的起始位置。 2.终止条件&#xff1a;当startindex >len(nums)&#xff0c;r…

C++初阶—vector深度剖析及模拟实现

目录 ➡️0. 前言 &#x1f60a;1.简易框架实现 &#x1f414;1. 无参构造 &#x1f414;2. 容量capacity — 长度size() &#x1f414;3. 动态增长 — push_back—pop_back — reserve &#x1f414;4. 迭代器的实现 &#x1f414;4.front和back的实现 &#x1f60a;2…

你知道C语言的typedef关键字吗?

本篇博客主要讲解C语言中的typedef关键字。typedef的作用是类型重定义&#xff0c;可以理解为给类型起一个别名。我主要从3个方面来讲解&#xff1a; typedef内置类型。typedef自定义类型。typedef和#define的区别。 1.typedef内置类型 typedef可以给一个类型起“别名”。比如…

服务器部署前后端分离项目

服务器部署前后端分离项目 目录服务器部署前后端分离项目一、安装环境安装jdk1、在/usr/local目录下创建jdk文件夹&#xff0c;并将jdk安装包放到/usr/local/jdk包下并解压1.1通过文件传输工具将jdk包上传到服务器上1.2输入解压命令1.3解压完成&#xff0c;生成下面的文件2、配…

学习周报4/9

文章目录前言文献阅读摘要简介方法结论时间序列预测总结前言 本周阅读文献《Improving LSTM hydrological modeling with spatiotemporal deep learning and multi-task learning: A case study of three mountainous areas on the Tibetan Plateau》&#xff0c;文章主要基于…

多种方法解决SLF4J: Defaulting to no-operation (NOP) logger implementation的错误

文章目录1. 复现错误2. 分析错误3. 解决错误4. 解决该错误的其他方法1. 复现错误 今天在编写使用Quartz执行定时任务的方法&#xff0c;如下代码所示&#xff1a; public class QuartzTest {public static void main(String[] args) throws SchedulerException {// 1、创建Sch…

大数据系列——Hive理论

概述 Hive是一个数据仓库管理工具&#xff0c;将结构化的数据文件映射为一张数据库表&#xff0c;并提供类SQL&#xff08;HQL&#xff09;查询功能。由Facebook实现并开源,最后捐赠给Apache发展为顶级项目。 以RDBMS数据库为元数据存储服务&#xff0c; 以Hadoop HDFS来存储…

44.节流与防抖

目录 1 防抖 1.1 概念 1.2 应用场景 1.3 lodash防抖 1.4 手写防抖 2 节流 2.1 概念 2.2 应用场景 2.3 lodash节流 2.4 手写节流 2.5 记录视频上一次的播放位置 1 防抖 1.1 概念 防抖就是让事件触发后延迟n秒后再执行回调函数&#xff0c;在这n秒内如…

014:Mapbox GL添加draw组件,绘制点、线、多边形、删除

第014个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中添加draw组件,绘制点、线、多边形,删除所选元素。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共78行)相关API参考:专栏目标示例效果 配置方…