IDEA
IDEA概述与安装
概述
IDEA全称IntelliJ IDEA,是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具。集成环境:把代码编写,编译,执行,调试等多种功能综合到一起的开发工具。
下载和安装
下载:https://www.jetbrains.com/idea/
安装:傻瓜式安装,建议修改安装路径。
IDEA中HelloWorld步骤
1.创建一个空项目(JavaSE_Code)
2.创建一个新模块(idea_test)
模块下来的两个内容:
src:将来Java程序的代码就存储在这个目录
idea_test.iml
iml文件:是idea自动创建的模块文件,存储着当前模块的一些配置信息
3.在idea_test模块下的src下创建一个包(com.itheima)
4.在com.itheima包下新建一个类(HelloWorld)
5.在HelloWorld类中编写代码
6.在idea中执行程序
IDEA中项目结构
idea项目由三部分组成:项目(project),模块(module),包(package)
一个项目由多个模块组成(各个模块都代表项目的一个子功能),一个模块又包含多个包(各个包负责模块一部分内容实现)。
IDEA中内容辅助键和快捷键
内容辅助键
快速生成语句
快速生成main()方法:psvm,回车
快速生成输出语句:sout,回车内容辅助键
Ctrl+Alt+space(内容提示,代码补全等)
快捷键
注释
单行:选中代码,Ctrl+/,再来一次,就是取消
多行:选中代码,Ctrl+Shift+/,再来一次,就是取消
格式化Ctrl+Alt+L
IDEA 中模块操作
新建模块
删除模块
选中idea_test右键,选择移除指定模块,但没有文件被删除,就是说,模块移除了,磁盘上的文件还在
选中idea_test右键,然后选择Show in Explorer,这样可以快速打开模块所在位置。要想删除,可以在这里手动删除即可
导入模块
数组
数组定义格式
概述
一次性声明大量的用于存储数据的变量
要存储的数据通常都是同类型数据,例如:考试成绩
什么是数组
数组(array)是一种用于存储多个相同类型数据的存储模型
定义格式
格式一:数据类型 [ ] 变量名
范例: int[ ] arr
定义了一个int类型的数组,数组名是arr
格式二:数据类型 变量名[ ]
范例: int arr[ ]
定义了一个int类型的变量,变量名是arr数组
数组初始化
数组初始化概述
Java中的数组必须先初始化,然后才能使用
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
数组初始化方式
动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型 [ ] 变量名 = new 数据类型[数组长度];
范例: int [ ] arr = new int[3];
- 等号左边:
- int:数组的数据类型
- []:代表这是一个数组
- arr:代表数组的名称
- 等号右边:
- new:为数组开辟内存空间
- int:数组的数据类型
- []:代表这是一个数组
- 3:代表数组的长度
静态初始化
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:数据类型 [ ] 变量名 = new 数据类型[ ] { 数据1 , 数据2 , 数据3 , ……} ;
范例: int [ ] arr = new int[ ] { 1 , 2 , 3 } ;
简化格式:数据类型 [ ] 变量名 = { 数据1 , 数据2 , 数据3 , ……} ;
范例: int [ ] arr = { 1 , 2 , 3 } ;
数组元素访问
数组变量访问方式
格式:数组名
数组内部保存的数据的访问方式
格式:数组名[索引]
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。
这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。
特征①:索引从开始
特征②:索引是连续的
特征③:索引逐一增加,每次加1
内存分配
Java 程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
寄存器
给CPU使用,和开发无关。
本地方法栈
JVM在使用操作系统功能的时候使用,和开发无关。
方法区
存储可以运行的class文件。
方法栈
方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
栈内存
存储局部变量
定义在方法中的变量,例如:arr
使用完毕,立即消失
堆内存
存储new出来的内容(实体,对象)
数组在初始化时,会为存储空间添加默认值
整数:0
浮点数:0.0
布尔:false
字符:空字符
引用数据类型:null
每一个new出来的东西都有一个地址值
使用完毕,会在垃圾回收器空闲时被回收
数组内存图
单个数组
多个数组
多个数组指向相同
数组操作的两个常见小问题
索引越界
访问了数组中不存在的索引对应的元素,造成索引越界问题
eg:int[] arr = new int[3];//输出元素System.out.println(arr[3]);
数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。
程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。
解决方案
将错误的索引修改为正确的索引范围即可!
空指针异常
访问的数组已经不再指向堆内存的数据,造成空指针异常
eg: int[] arr = new int[3]; System.out.println(arr[2]);//把 null赋值给数组 null:空值,引用数据类型的默认值,表示不指向任何有效对象
arr = null;//输出元素 System.out.println(arr[0]);
arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。
解决方案
给数组一个真正的堆内存空间引用即可!
数组常见操作
遍历
通用格式:int[] arr = {……};
for(int x=0; x<arr.length; x++) { arr[x] //对arr[x]进行操作}
获取数组元素数量
格式:数组名.length
范例:arr.length
获取最值
1:定义一个变量,用于保存最大值(或最小值)
int max;
2:取数组中第一个数据作为变量的初始值
int max = arr[0];
3:与数组中剩余的数据逐个比对,每次比对将最大值保存到变量中
for(int x=1; x<arr.length; x++) { if(arr[x] > max) { max = arr[x]; }}
4:循环结束后打印变量的值
System.out.println("max:"+max);