day04_IDEA和数组

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]);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掉发阿龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值