IDEA的安装与使用学习笔记(尚硅谷----宋红康老师)

IDEA的基本使用

一、Java开发利器:IDEA的安装与使用(上)

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

前言:

【Why IDEA ?】

在这里插入图片描述

【注】JetBrains官方说明:

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

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


【Why IDEA 2022.x】

在Java 17正式发布之前,Java开发框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3计划
在2022年第四季度实现总体可用性的高端基线:

  • Java 17+(来自 Spring Framework 5.3.x 线中的 Java 8-17)
  • Jakarta EE 9+(来自Spring框架5.3.x 线中的 Java EE 7-8)

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中项目的创建、快捷键与模板的使用、断点调试、常用插件等。

1.认识IntelliJ IDEA

1.1 JetBrains 公司介绍

IDEA,是 JetBrains公司的产品,该公司成立于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、大数据、移动端程序员的喜爱。尤其在智能代码助手、代码自动提示、重构、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.3 IDEA的主要优势:(vs Eclipse)

(1)功能强大

  • 强大的整合能力。比如:Git、Maven、Spring等;
    在这里插入图片描述

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

(2)符合人体工程学

  • 高度智能(快速的智能代码补全、实时代码分析、可靠的重构工具):
    在这里插入图片描述

  • 提示功能的快速、便捷、范围广
    在这里插入图片描述

  • 好用的快捷键和代码模板;

  • 精准搜索;

1.4 IDEA 的下载

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)完成安装

在这里插入图片描述

  • 安装完成以后,单击桌面的IDEA图标即可打开

2.4 注册

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

在这里插入图片描述

  • 是否同意发送用户数据(特性、使用的插件、硬件与软件配置等),建议选择:不发送。
    在这里插入图片描述

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

  • 选择1:适用30天。在IDEA2022.1.2版本中,需要先登录,才能开启适用。
    在这里插入图片描述
  • 选择2:付费购买旗舰版
    在这里插入图片描述
    在这里插入图片描述
  • 选择3:(推荐)

进行注册(对应IDEA相应的版本号)

2.5 闪退问题

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

问题描述2:进入到安装目录…\IntelliJ IDEA 2022.1.2\bin,打开CMD。输入idea,发现报错。

(1)解决办法:

  • 打开C:\Users\songhk\AppData\Roaming\JetBrains\IntelliJIdea2022.1\idea64.exe.vmoptions这个文件。
    在这里插入图片描述
  • 内容如下所示:在这里插入图片描述- 删除红框的数据以后,再登录即可正常进入。
    在这里插入图片描述

原因

  • 之前使用过的比如2021.2.2版本,pojie了。新版IEDA太智能了,把现有的启运参数也都复制过去了。又因为最新的IDEA,不兼容pojie程序-javaagent:D:\develop_tools\IDEA\IntelliJ IDEA
    2021.2.2\bin\jetbrains-agent.jar了,所以报错了,所以JVM结束了,所以没有启动画面,凉凉了。

3. HelloWorld的实现

3.1 新建Project - Class

注意:以下举例dk17来说明,别的版本只需要修改jdk即可;

(1)选择“New Project”:
在这里插入图片描述

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

在这里插入图片描述

(3)接着创建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 last project 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 自动导包配置

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

在这里插入图片描述

(2)自动导包设置

  • 动态导入明确的包: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)方式1:适用于IDEA 2022.1.2版本

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

在这里插入图片描述
(2)方式2:适用于IDEA 2022.1.2之前版本

  • 双击shift 或 ctrl + shift + a,打开如下搜索窗口:
    在这里插入图片描述
  • 选择registry…,找到"ide.suppress.double.click.handler",把复选框打上勾就可以取消双击shift出现搜索框了。
    在这里插入图片描述

5.14 其它设置:

  • 是否在单行显式编辑器选项卡(建议去掉勾选)
    在这里插入图片描述
  • 设置代码样式:比如,设置import显示"*"时的个数
    在这里插入图片描述

总结

  • 以上这些设置看似只是针对当前Project设置的,但是新建的其它Project也是同样适用的。

6. 工程与模块管理

6.1 IDEA项目结构:

层级关系

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

具体的

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

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

6.2 Project和Module的概念

在 IntelliJ IDEA 中,提出了Project和Module这两个概念。
在这里插入图片描述

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

  • 当为单Module项目的时候,这个单独的Module实际上就是一个Project。
  • 当为多Module项目的时候,多个模块处于同一个Project之中,此时彼此之间具有互相依赖的关联关系。
    -当然多个模块没有建立依赖关系的话,也可以作为单独一个“小项目”运行。

6.3 创建Module

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

(1)步骤

  • ①选择创建模块
    在这里插入图片描述
  • ②选择模块类型:这里选择创建Java模块,给模块命名,确定存放位置
    在这里插入图片描述
  • ③ 模块声明在工程下面:
    在这里插入图片描述

6.4 删除模块

(1)移除模块

在这里插入图片描述
在这里插入图片描述
(2)彻底删除模块

在这里插入图片描述

6.5 导入老师的模块

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

在这里插入图片描述

  • 接着打开自己IDEA的项目,会在项目目录下看到拷贝过来的module,只不过不是以模块的方式呈现。
    在这里插入图片描述
    (2)查看Project Structure,选择import module:
    在这里插入图片描述
    在这里插入图片描述
    (3)选择要导入的module
    在这里插入图片描述
    在这里插入图片描述
    (4)接着可以一路Next下去,最后选择Overwrite:
    在这里插入图片描述
    在这里插入图片描述
  • 最后点击OK即可了。

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

(1)两个IDEA项目工程效果

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

在这里插入图片描述
在这里插入图片描述
(2)新建一个IDEA项目

  • 注意:第一次需要新建,之后直接打开项目工程即可
    在这里插入图片描述
    在这里插入图片描述
  • 最后在点击Create
    在这里插入图片描述

(3)打开两个IDEA项目

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

6.7 导入前几章非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;
		}
	}
}

在这里插入图片描述

二、Java开发利器:IDEA的安装与使用(下)

1. 快捷键的使用

1.1 常用快捷键:

(1)第1组:通用型
快捷键说明
ctrl + c复制代码-copy
ctrl + v粘贴-paste
ctrl + x剪切-cut
ctrl + z撤销-undo
ctrl + shift + z反撤销-redo
ctrl + s保存-save all
ctrl + a全选-select all
(2)第2组:提高编写速度(上)
快捷键说明
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
(3)第3组:提高编写速度(下)
快捷键说明
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
(4)第4组:类结构、查找和查看源码
快捷键说明
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
(5)第5组:查找、替换与关闭
快捷键说明
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
(6)第6组:调整格式
快捷键说明
ctrl+alt+l格式化代码-reformat code
ctrl + /使用单行注释-comment with line comment
ctrl + shift + /使用/取消多行注释-comment with block comment
tab选中数行,整体往后移动-tab
shift + tab选中数行,整体往前移动-prev tab
(7) Debug快捷键
快捷键说明
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

8.2 查看快捷键:

(1)已知快捷键操作名,未知快捷键

在这里插入图片描述

(2)已知快捷键,不知道对应的操作名

在这里插入图片描述

1.3 自定义快捷键:

在这里插入图片描述

8.4 使用其它平台快捷键:

注意

  • 苹果电脑或者是用惯Eclipse快捷的,可以选择其他快捷键插件。

在这里插入图片描述

2 . IDEA断点调试(Debug)

2.1 为什么需要Debug:

编好的程序在执行过程中如果出现错误,该如何查找或定位错误呢?简单的代码直接就可以看出来,但
如果代码比较复杂,就需要借助程序调试来查找错误了。

运行编写好的程序时,可能出现的几种情况:
> 情况1:没有任何bug,程序执行正确!
====================如果出现如下的三种情况,都又必要使用debug=============================
> 情况2:运行以后,出现了错误或异常信息。但是通过日志文件或控制台,显示了异常信息的位置。
> 情况3:运行以后,得到了结果,但是结果不是我们想要的。
> 情况4:运行以后,得到了结果,结果大概率是我们想要的。但是多次运行的话,可能会出现不是我们想要的情况。
比如:多线程情况下,处理线程安全问题。

2.2 Debug的步骤:

Debug(调试)程序步骤如下

  • 添加断点
  • 启动调试
  • 单步执行
  • 观察变量和执行流程,找到并解决问题
(1)添加断点

在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点。
在这里插入图片描述

(2)启动调试

IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫” 等等

在这里插入图片描述

(3)单步调试工具介绍:

在这里插入图片描述

在这里插入图片描述

  • ①Step Over(F8):进入下一步,如果当前行断点是调用一个方法,则不进入当前方法体内
  • ②Step Into(F7):进入下一步,如果当前行断点是调用一个自定义方法,则进入该方法体内
  • ③Force Step Into(Alt +Shift + F7):进入下一步,如果当前行断点是调用一个核心类库方法,则进入该方法体内
  • ④Step Out(Shift + F8):跳出当前方法体
  • ⑤Run to Cursor(Alt + F9):直接跳到光标处继续调试
  • ⑥Resume Program(F9):恢复程序运行,但如果该断点下面代码还有断点则停在下一个断点上
  • ⑦Stop(Ctrl + F2):结束调试
  • ⑧View Breakpoints(Ctrl + Shift + F8):查看所有断点
  • ⑨Mute Breakpoints:使得当前代码后面所有的断点失效, 一下执行到底

说明:在Debug过程中,可以动态的下断点。

2.3 多种Debug情况介绍:

(1) 行断点:
  • 断点打在代码所在的行上。执行到此行时,会停下来。
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;
	}
}
(2)方法断点:
  • 断点设置在方法的签名上,默认当进入时,断点可以被唤醒。
  • 也可以设置在方法退出时,断点也被唤醒
    在这里插入图片描述
  • 在多态的场景下,在父类或接口的方法上打断点,会自动调入到子类或实现类的方法
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);
	}
}
(3)字段断点:
  • 在类的属性声明上打断点,默认对属性的修改操作进行监控
    在这里插入图片描述
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 +'}';
  }
}
(4) 条件断点:
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);
		}
	}
}
  • 针对上述代码,在满足arr[i] % 3 == 0的条件下,执行断点。
    在这里插入图片描述
(5)异常断点:
  • 对异常进行跟踪。如果程序出现指定异常,程序就会执行断点,自动停住。
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());
	}
}
  • 通过下图的方式,对指定的异常进行监控:
    在这里插入图片描述
(6)线程调试:
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表达式
    }
}

在这里插入图片描述

(7)强制结束:
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("断开连接");
	}
}

在这里插入图片描述

2.4 自定义调试数据视图:

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);
	}
}
  • 设置如下:
    在这里插入图片描述
    在这里插入图片描述

2.5 常见问题:

(1)问题:使用Step Into时,会出现无法进入源码的情况。如何解决?

  • 方案1:使用 force step into 即可
  • 方案2:点击Setting ->Build,Execution,Deployment -> Debugger -> Stepping 把Do not step into the classess中的 java.* 、 javax.* 取消勾选即可。
    在这里插入图片描述
    (2)小结

经验

  • 初学者对于在哪里加断点,缺乏经验,这也是调试程序最麻烦的地方,需要一定的经验。简单来说,在可能发生错误的代码的前面加断点。如果不会判断,就在程序执行的起点处加断点。

3.创建不同类型的工程

3.1 创建Java工程:

(1)在工程上,右键- New - Module,如下:

在这里插入图片描述
(2)指明Java工程的名称及使用的JDK版本:

在这里插入图片描述

(3)创建包:

在这里插入图片描述

(4)提供包名:

在这里插入图片描述

(5)在包下创建类,即可:

在这里插入图片描述

(6)提供类名:

在这里插入图片描述

(7)测试代码:

在这里插入图片描述

(8)点击运行即可:

在这里插入图片描述

3.2 创建Java Web工程:

3.2.1 IDEA中配置Tomcat:

注意

  • 在IDEA中配置Tomcat之前,需要保证已经安装并配置了Tomcat的环境变量。
  • 配置完成以后,在命令行输入:catalina run 。能够启动tomcat,则证明安装配置成功。

(1)下面看如何在IDEA中配置:

在这里插入图片描述

(2)配置Tomcat Server的位置:

在这里插入图片描述

  • 这里配置Tomcat的名称以及配置应用服务器的位置。根据自己Tomcat的安装位置决定。
    在这里插入图片描述
  • 配置好后,如下图所示:
    在这里插入图片描述
3.2.2 创建Web工程:

在这里插入图片描述

(1)选择New Module,指明当前工程的名称:

在这里插入图片描述

(2)选中当前创建的工程,添加框架支持:

在这里插入图片描述

(3)选择:Web Application,选择Create web.xml,如下

在这里插入图片描述

3.2.3 配置web工程并运行:

在这里插入图片描述
在这里插入图片描述

(1)部署当前的web项目:

在这里插入图片描述

  • 选择第2项:
    在这里插入图片描述
  • 可以修改Application context,如下:
    在这里插入图片描述

(2)配置当前web工程的详细信息,如下:

在这里插入图片描述

(3)配置好后,可以直接运行:

在这里插入图片描述

3.2.4 乱码的解决:

(1)如果Tomcat日志出现乱码,需要配置:

在这里插入图片描述
(2)解决方案:

  • 1) 点击Help => Edit custom VM Options,在最后面添加
-Dfile.encoding=UTF-8
  • 2) 在当前Tomcat实例中配置 VM option,添加
-Dfile.encoding=UTF-8

注意

  • 在第二步的Startup/Connection页签的Run和Debug添加一个key为 JAVA_TOOL_OPTIONS , value为“ -Dfile.encoding=UTF-8 ”的环境变量**
  • 3) 保存后重启IDEA,可以发现控制台中文乱码显示正常了。

3.3 创建Maven Java工程:

3.3.1 Maven的介绍:

在这里插入图片描述
(1)Maven是一款自动化构建工具,专注服务于Java平台的 项目构建 和 依赖管理 。在JavaEE开发的历史上构建工具的发展也经历了一系列的演化和变迁:

Make→Ant→Maven→Gradle→其他……

(2)构建环节:
在这里插入图片描述

①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。
③测试:运行单元测试用例程序,确保项目在迭代开发过程中关键点的正确性。
④报告:测试程序的结果。
⑤打包:将java项目打成jar包;将Web项目打成war包。
⑥安装:将jar包或war包安装到本地仓库中。
⑦部署:将jar或war从Maven仓库中部署到Web服务器上运行。

3.3.2 Maven的配置:

下面直接整合Maven。选择自己Maven的目录,和settings文件,然后配置自己的仓库reposiroty。

在这里插入图片描述

3.3.3 Maven Java工程的创建:

在这里插入图片描述
(1)指明当前maven工程的名称、模板等信息。这里要求一个项目组的jdk版本必须一致。

  • 通过坐标,就可以定位仓库中具体的jar包。如下:
    在这里插入图片描述

(2)新创建的maven 的java工程缺少相应的resources文件目录,需要创建如下:

在这里插入图片描述在这里插入图片描述

(3)指明main下resources的文件目录类型:

在这里插入图片描述
(4)类似的操作test目录下,提供resources即可。

  • 这里说明Maven的java工程的目录结构:
工程名
		src
			----main
			--------java
			--------resources
			----test
			--------java
			--------resources
		pom.xml
  • main目录用于存放主程序。
  • test目录用于存放测试程序。
  • java目录用于存放源代码文件。
  • resources目录用于存放配置文件和资源文件。
3.3.4 编写代码及测试:

(1)第1步:创建Maven的核心配置文件pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
	<groupId>com.atguigu.maven</groupId>
	<artifactId>maven-01</artifactId>
	<version>1.0-SNAPSHOT</version>
	
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.18</version>
		</dependency>
	</dependencies>
</project>

(2)第2步:编写主程序代码

  • 在src/main/java/com/atguigu/java目录下新建文件HelloMaven.java
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步:编写测试代码

  • 在/src/test/java/com/atguigu/java目录下新建测试文件HelloMavenTest.java
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"));
	}
}

(4)第4步:运行几个基本的Maven命令
在这里插入图片描述

  • 目录下也会有对应的生命周期。其中常用的是:clean、compile、package、install。
  • 比如这里install,如果其他项目需要将这里的模块作为依赖使用,那就可以install。安装到本地仓库的位
    置。
    在这里插入图片描述

3.4 创建Maven Web工程:

3.4.1 创建Maven的Web工程步骤:

在这里插入图片描述

(1)指明Maven的web工程的名称和模板。如下:

在这里插入图片描述

(2)在Tomcat上进行部署:

在这里插入图片描述

(3)配置部署的详细信息:

在这里插入图片描述

3.4.2 开发jsp依赖jar包:

(1)找不到HttpServlet错误

  • 如果看到JSP报错: The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 可以加入如下依赖解决。
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>
	<version>2.5</version>
	<scope>provided</scope>
</dependency>

(2)EL表达式没有提示问题

  • ${pageContext}这个EL表达式中通过pageContext对象访问reuqest属性时本身是应该有提示的,但如果没
    有的话加入下面依赖即可。
<dependency>
	<groupId>javax.servlet.jsp</groupId>
	<artifactId>jsp-api</artifactId>
	<version>2.1.3-b06</version>
	<scope>provided</scope>
</dependency>
  • 同时,针对index.jsp文件,修改一下文件头信息为:
<%@page language="java" pageEncoding="utf-8" contentType="text/html;UTF-8" %>

4.关联数据库

4.1 关联方式:

(1)找到数据库选项:

在这里插入图片描述
(2)添加指定数据库:

在这里插入图片描述

(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 对象等。

4.2 常用操作:

在这里插入图片描述

图标1:同步当前的数据库连接。这个是最重要的操作。配置好连接以后或通过其他工具操作数据库以后,需要及时同步
图标2:配置当前的连接
图标3:断开当前的连接
图标4:显示相应数据库对象的数据
图标5:编辑修改当前数据库对象

(1)展示ER图:
在这里插入图片描述

(2)可以导出文件:

在这里插入图片描述

5. IDEA常用插件

推荐1:Alibaba Java Coding Guidelines

在这里插入图片描述

  • 阿里巴巴Java编码规范检查插件,检测代码是否存在问题,以及是否符合规范。
  • 使用:在类中,右键,选择编码规约扫描,在下方显示扫描规约和提示。根据提示规范代码,提高代码
    质量。

推荐2:jclasslib bytecode viewer

在这里插入图片描述

可视化的字节码查看器
使用

  1. 在 IDEA 打开想研究的类。
  2. 编译该类或者直接编译整个项目( 如果想研究的类在 jar 包中,此步可略过)。
  3. 打开“view” 菜单,选择“Show Bytecode With jclasslib” 选项。
  4. 选择上述菜单项后 IDEA 中会弹出 jclasslib 工具窗口。

在这里插入图片描述
英文设置:

  • 在 Help -> Edit Custom VM Options …,加上
-Duser.language=en

推荐3:Translation

在这里插入图片描述

  • 注册翻译服务(有道智云、百度翻译开放平台、阿里云机器翻译)帐号,开通翻译服务并获取其应用ID
    和密钥 绑定应用ID和密钥:偏好设置(设置) > 工具 > 翻译 > 常规 > 翻译引擎 > 配置…
  • 使用:鼠标选中文本,点击右键即可自动翻译成多国语言。
  • 注:请注意保管好你的应用密钥,防止其泄露。

推荐4:GenerateAllSetter

在这里插入图片描述

实际开发中还有一个非常常见的场景: 我们创建一个对象后,想依次调用 Setter 函数对属性赋值,如果
属性较多很容易遗漏或者重复。

在这里插入图片描述

可以使用这 GenerateAllSetter 提供的功能,快速生成对象的所有 Setter 函数(可填充默认值),然后自
己再跟进实际需求设置属性值。

插件5:Rainbow Brackets

在这里插入图片描述

给括号添加彩虹色,使开发者通过颜色区分括号嵌套层级,便于阅读

在这里插入图片描述

推荐6:CodeGlance Pro

在这里插入图片描述

在编辑器右侧生成代码小地图,可以拖拽小地图光标快速定位代码,阅读行数很多的代码文件时非常实
用。
在这里插入图片描述

推荐7:Statistic

在这里插入图片描述
代码统计工具。
在这里插入图片描述
在这里插入图片描述

推荐8:Presentation Assistant

在这里插入图片描述

推荐9:Key Promoter X

在这里插入图片描述

快捷键提示插件。当你执行鼠标操作时,如果该操作可被快捷键代替,会给出提示,帮助你自然形成使
用快捷键的习惯,告别死记硬背。

推荐10:JavaDoc

在这里插入图片描述

  • alt+insert ,执行操作:
    在这里插入图片描述

推荐11: LeetCode Editor

在这里插入图片描述
在这里插入图片描述
在 IDEA 里刷力扣算法题

推荐12:GsonFormatPlus

在这里插入图片描述

  • 根据 json 生成对象。
  • 使用:使用alt + s 或 alt + insert调取。
    在这里插入图片描述
  • 举例:
{
	"name": "tom",
	"age": "18",
	"gender": "man",
	"hometown": {
		"province": "河北省",
		"city": "石家庄市",
		"county": "正定县"
	}
}

插件13:Material Theme UI

在这里插入图片描述

对于很多人而言,写代码时略显枯燥的,如果能够安装自己喜欢的主题将为开发工作带来些许乐趣。
IDEA 支持各种主题插件,其中最出名的当属 Material Theme UI。
在这里插入图片描述

  • 安装后,可以从该插件内置的各种风格个选择自己最喜欢的一种。
尚硅谷_宋红康_intellij idea安装、配置与使用.docx》是一份介绍IntelliJ IDEA安装、配置和使用方法的文档。IntelliJ IDEA是一款强大的Java集成开发环境,它提供了丰富的功能和工具,帮助开发者提高编码效率。 首先,在安装IntelliJ IDEA之前,我们需要先下载安装包。可通过官方网站或者其他可信的软件下载网站获取。 安装完毕后,接下来就是配置IntelliJ IDEA。打开软件后,我们可以看到一个欢迎界面。首次使用时,可以选择“Configure”按钮来进行一些基本设置,如选择语言、设置界面主题等。 在开始使用IntelliJ IDEA之前,我们还需要配置JDK。在“Configure”中选择“Project Defaults” -> “Project Structure”,在弹出窗口中设置JDK的路径,以保证项目编译和运行的环境。 使用IntelliJ IDEA进行开发时,我们可以创建新项目或者导入已有项目。选择“Create New Project”或“Open”,然后按照向导提示选择项目类型、项目名称和存储路径等信息。 创建或导入项目后,我们可以在IntelliJ IDEA的界面中进行代码编写、调试和运行等操作。IDEA提供了许多快捷键和工具,可以帮助我们提高开发效率。例如,可以使用快捷键Ctrl + N快速定位到类,Ctrl + Shift + F10快速运行程序等。 另外,IntelliJ IDEA还支持插件安装。可以通过“Plugins”选项来搜索和安装一些常用的插件,如git、JUnit等,以满足开发需求。 总而言之,《尚硅谷_宋红康_intellij idea安装、配置与使用.docx》提供了IntelliJ IDEA安装、配置和使用方法的详细说明,可以帮助开发者快速上手这款强大的开发工具。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值