9 IDEA下载、安装与概述、使用
IDEA全称InteliJ IDEA,是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具
集成环境:把代码编写、编译、执行、调试等多种功能综合到一起的开发工具
9.1 IDEA的下载
官网链接:https://www.jetbrains.com/idea/
9.2 安装
请查看其他CSDN,这里就不做教程了,或者观看安装教学视频,教学视频链接
9.3 IDEA的基本使用
由于本人是先看了很多视频,再回来补的博客,所以这里的项目->模块->包->类的创建流程这里就不做详细的教程啦
IDEA的基本使用可以查看黑马的第54个视频,视频链接
这张图中,idea_test是模块,在src下,com.itheima为包,ArrayDemo为类
IDEA项目结构如下:
9.4 IDEA字体修改
File->Settings->Editor->Font
9.5 IDEA中内容辅助键和快捷键
快速生成语句
- 快速生成main()方法:
psvm + 回车
- 快速生成输出语句:
sout + 回车
内容辅助键
Ctrl+Alt+space:内容提示,代码补全等
快捷键
单行注释:选中代码,Ctrl+/,再来一次就是取消注释
多行注释:选中代码,Ctrl+Shift+/,再来一次就是取消注释
格式化代码
Ctrl+Alt+L
9.6 IDEA中模块操作
新建模块:
File->Project Structure->Modules->±>New Module
删除模块:
右键模块->remove module
上面只是在工作区间上移除了,而硬盘上还是存在的,还需到对应的文件夹中去删除对应模块文件
快速定位到模块所在目录
右键模块名->open in ->explorer
9.7 导入模块
File->Project Structure->Modules-> + ->import Module ->找到需要导入的模块名称
10 数组
10.1 数组定义格式
数组的定义格式有两种:
格式一:数据类型[] 变量名
范例:int[] arr
定义了一个int类型的数组,数组名是arr
格式二:数据类型 变量名[]
范例:int arr[]
定义了一个int类型的变量,变量是arr数组
推荐使用格式一
例:注意,定义数组会默认给数组赋初始值,值为0
package com.itheima; public class ArrayTest4 { public static void main(String[] args) { int[] arr = new int[3]; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); } }
10.2 数组动态初始化
Java中的数组必须先初始化,然后才能使用
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
数组初始化有两种方法:动态初始化、静态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[] 变量名 = new 数据类型[数组长度];
范例:int[] arr = new int[3];
10.3 数组元素访问
数组变量访问方式
格式:数组名
数组内部保存的数据的访问方式
格式:数组名[索引]
索引是数组中数据的编号方式
作用:索引用于访问数组中的数据使用,**数组名[索引]**等同于变量名,是一种特殊的变量名
特征1:索引是从0开始的
特征2:索引是连续的
特征3:索引是逐一增加的,每次加1
package com.itheima; /* 数组:是一种用于存储多个相同类型数据的存储模型 定义格式:(推荐方式) 数据类型[] 数组名; 举例: int[] arr; 数组初始化: 动态初始化 int[] arr = new int[3]; 静态初始化 */ public class ArrayDemo { public static void main(String[] args) { //int[] int类型数组 //arr 数组名称 //new 为数组申请内存空间 //int[3] 数组,元素类型为整型,3个元素 int[] arr = new int[3]; //赋值 arr[0] = 100; arr[2] = 200; //输出数组名 System.out.println(arr); //[I@58ceff1 //输出数组中的元素 System.out.println(arr[0]); //0是由系统分配的 System.out.println(arr[1]); System.out.println(arr[2]); } }
10.4 内存分配
Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
单个数组内存图如下
代码实现如下
package com.itheima; public class ArrayTest1 { public static void main(String[] args) { //定义一个数组 int[] arr = new int[3]; //输出数组名及元素 System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println("赋值后----------"); //给数组中元素赋值 arr[0] = 100; arr[1] = 200; //再次输出 System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); } }
多个数组的内存图如下
代码实现如下
package com.itheima; public class ArrayTest2 { public static void main(String[] args) { //定义一个数组 int[] arr = new int[3]; int[] arr2 = new int[3]; //输出数组名及元素 System.out.println("arr----"); System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println("arr2-------"); System.out.println(arr2); System.out.println(arr2[0]); System.out.println(arr2[1]); System.out.println(arr2[2]); System.out.println("赋值后----------"); //给数组中元素赋值 arr[0] = 100; arr2[0] = 200; arr2[2] = 300; //再次输出 System.out.println("arr----"); System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println("arr2-------"); System.out.println(arr2); System.out.println(arr2[0]); System.out.println(arr2[1]); System.out.println(arr2[2]); } }
多个数组指向相同时
代码实现如下
package com.itheima; public class ArrayTest3 { //多个数组指向相同时 public static void main(String[] args) { //定义一个数组 int[] arr = new int[3]; arr[0] = 100; arr[1] = 200; arr[2] = 300; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); //定义第二个数组,并指向第一个数组 int[] arr2 = arr; arr2[0] = 111; arr2[1] = 222; arr2[2] = 333; System.out.println("arr---------"); System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println("arr2---------"); System.out.println(arr2); System.out.println(arr2[0]); System.out.println(arr2[1]); System.out.println(arr2[2]); } }
10.5 数组静态初始化
静态初始化:初始化时指定每个数组元素的初始值,由系统确定数组长度
格式:数组类型[] 变量名 = new 数据类型[] {数据1,数据2,数据3,...};
范例:int[] arr = new int[] {1,2,3};
简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,...}
范例:int[] arr = {1,2,3};
推荐简化格式
package com.itheima; /* 静态初始化 */ public class ArrayDemo02 { public static void main(String[] args) { //定义数组 int[] arr1 = new int[] {1,2,3}; //一样可以 int[] arr = {1,2,3}; //输出数组名 System.out.println(arr); //输出数组中的元素 System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); } }
10.6 数组操作常见问题
1.索引越界:访问了数组中不存在的索引对应的元素
代码演示如下
package com.itheima; /* 索引越界:访问的元素超出索引 */ public class ArrayDemo04 { public static void main(String[] args) { int[] arr = new int[3]; System.out.println(arr[3]); } }
2.空指针异常:访问的数组已经不再指向堆内存的数据
null是空值,引用数据类型的默认值,表示不指向任何有效对象
代码演示如下
package com.itheima; /* 空指针异常 null:空值 */ public class ArrayDemo04 { public static void main(String[] args) { int[] arr = new int[3]; //空指针异常 //null赋值给数组 arr = null; System.out.println(arr[0]); } }
10.7 数组常见操作
1.遍历
package com.itheima; /* 遍历:获取数组中的每一个元素,并输出 获取数组长度:arr.length */ public class ArrayTest01 { public static void main(String[] args) { //定义数组 int[] arr = {11,22,33,44,55}; //遍历 for(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } } }
2.获取最值
package com.itheima; /* 获取最值 */ public class ArrayTest02 { public static void main(String[] args) { int[] arr = {12,45,98,73,60}; int max = arr[0]; int min = arr[0]; for (int i=1; i<arr.length; i++){ if (max < arr[i]){ max = arr[i]; } if(min > arr[i]){ min = arr[i]; } } System.out.println("最大值:" + max); System.out.println("最小值:" + min); } }