IDEA和数组
文章目录
一、IDEA
1.1、IDEA概述
IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Java,Kotlin等少数语言。
1.2、IDEA中项目结构
- 包的命名规范为:公司域名去掉www的反写,点为包层级的分隔
- 包的本质是文件夹
1.3、IDEA中第一个代码
创建的Java文件中自动包含
- package 包名:显示在文件第一行,不要修改否则报错
- class 类名:创建时起好的类名,我们只需加入main方法开始编码即可
main方法快捷键:psvm + 回车
输出语句快捷键:sout + 回车
1.4、IDEA常用快捷键
设置 File Settings(Ctrl + Alt + S)
- 界面风格:(Appearance & Behavior - Appearance)
->
Theme:自行选择一种风格即可 - 自动导包:(Editor - General - Auto Import)
->
Insert imports on pasre:选择All - Ctrl+鼠标滑轮调整字体大小:(Editor - General - Mouse)
->
勾选 Change font size(Zoom) with Ctrl + Mouse Wheel
快捷键
- 代码格式化
Ctrl + Alt + L
- 代码错误修正提示
Alt + 回车
- 向下复制一行
Ctrl + D
- 剪切当前行
Ctrl + X
- 批量单行注释
Ctrl + / (再按一次批量取消)
- 批量多行注释
Ctrl + Shift +/ (再按一次批量取消)
- 上移当前行
Ctrl + Shift + ↑
- 下移当前行
Ctrl + Shift + ↓
1.5、IDEA打开关闭项目&类名包名修改
类名修改
- 方式1:对要修改的文件 - 右键 -
Refactor - Rename
- 方式2:直接修改类名后 - 光标放在类名报错红线 -
Alt + 回车
- 选择Rename File
包名修改
- 对要修改的包 - 右键 -
Refactor
-Rename
二、数组
2.1、数组概述
数组(array)是一种容器,可用来存储多个相同类型的数据
注意
:数组容器的类型,和存储的数据类型保持一致!
2.2、数组的定义格式
格式一:
数据类型[] 变量名
范例:int[] arr(推荐使用的格式)
格式二:
数据类型 变量名[]
范例:int arr[]
2.3、数组的初始化方式
Java中的数组(变量)必须先初始化,然后才能使用
初始化
:就是在内存中,为数组容器开辟空间,并将数据存入容器的过程
2.3.1、数组的动态初始化
格式:
数据类型[] 变量名 = new 数据类型[长度];
范例:int[] arr = new int[5]; //动态初始化了一个数组,数组名是arr,长度为5,该数组能存储5个int类型数据
public class Demo {
public static void main(String[] args) {
int[] arr = new int[5];
System.out.println(arr);//[I@16b98e56
}
}
打印数组变量名会出现什么 ->
数组的内存地址
[
:表示数组@
:连接符I
:int的意思,表示数组中存储的数据类型- 数字和字母的组合串:该数组16进制的内存地址(十六进制:由0-9、a-f组成,字母大小写都可以)
2.3.2、数组的静态初始化
格式:
数据类型[] 变量名 = new 数据类型[]{元素1, 元素2, ...};
范例:int[] arr = new int[]{1, 2, 3};
简化格式:(简化格式:简化了new int[]
的书写)
int[] arr = {1, 2, 3}; //(推荐使用的格式)
小结:
- 静态初始化:知道数组具体元素(给元素)
- 动态初始化:不知道具体元素,但是知道数组长度时(给长度)
2.4、数组元素访问
索引
是数组容器中空间的编号;可以用来标识数组中元素的位置
索引特点:
- 索引从0开始
- 索引是连续的
- 索引逐个+1
索引的访问格式:
数组名[索引];
范例:arr[0]; //获取该数组第一个元素
public class Demo01 {
public static void main(String[] args) {
// 1.动态初始化一个长度为3的int类型数组
int[] arr = new int[3]; //0 0 0
// 2.验证一下动态初始化,系统有没有给默认的初始化值
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
// 3.将11,22,33存入数组中
arr[0] = 11;
arr[1] = 22;
arr[2] = 33;
// 4.打印三个元素
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
2.5、Java数组的内存图
Java中内存分配:
栈内存
:方法运行时,进入的内存空间;局部变量也存放于栈内存中堆内存
:new出来的内容进入堆内存,并且会产生地址值方法区
:字节码文件(.class)加载时进入的内存空间本地方法栈
:调用操作系统相关资源(不关注)寄存器
:交给CPU使用(不关注)
Java中数据的默认值:
- 整数:
0
- 浮点数:
0.0
- 布尔:
false
- 字符:
空字符
- 引用数据类型:
null
(引用数据类型:引用,记录了地址值的变量,所对应的数据类型就是引用数据类型)
2.5.1、一个数组内存图
2.5.2、两个数组内存图
2.5.3、多个数组指向相同内存图
当多个引用指向相同的内存,如果其中一个引用,改变了内存中的内容,其他引用看到的都是"改变后的内容"
2.6、数组操作的两个常见问题
- 索引越界异常:
ArrayIndexOutOfBoundsException
(操作了不存在的索引) - 空指针异常:
NullPointerException
(访问的引用类型不再指向堆内存)
/*
数组索引越界 ArrayIndexOutOfBoundsException
*/
int[] array = {15,25,30};
System.out.println(array[0]);//15
System.out.println(array[3]);//错误并不存在3号元素,数组索引越界 ArrayIndexOutOfBoundsException
/*
所有的引用类型变量,都可以赋值为一个null值,但是代表其中什么也没有
数组必须进行new初始化才能使用其中元素,如果只是赋值一个null没有进行new创建那么会发生空指针异常NullPointerException
*/
int[] array = null;
System.out.println(array[0]);//错误,NullPointerException
2.7、数组的遍历
数组的遍历:
- 数组长度:通过
数组名.length
获取 - 遍历数组:通过for循环完成,for循环的初始化变量i,在循环体中,代表索引
public class Demo03 {
public static void main(String[] args) {
// 定义数组
int[] arr = {1, 2, 3, 4, 5};
// 动态获取数组长度
System.out.println("数组长度:" + arr.length);
/*
通过for循环完成:
for循环的初始化变量i,在循环体中,代表索引
快捷键:
数组名.fori -> arr.fori
*/
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}