首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一、数组【黑马JavaSE笔记】

一、数组【黑马JavaSE笔记】

作者头像
啵啵鱼
发布2022-11-23 17:22:40
发布2022-11-23 17:22:40
4500
举报

文章目录

数组

(一)数组定义的格式(推荐使用 格式一)

格式一:数据类型[ ] 变量名

范例:

代码语言:javascript
复制
         int[] arr

定义了一个 int类型的数组,数组名为arr

格式二:数据类型 变量名 [ ]

范例:

代码语言:javascript
复制
     	int  arr[]

定义了一个int类型的变量,变量名是arr数组



(二)数组的初始化

1.数组初始化概述

java中的数组必须先初始化,然后才能使用

所谓初始化:就是为数组元素分配内存空间,并为每个数组元素赋值。


2.数组初始化方式
1)动态初始化

【初始化时只指定数组长度,由系统为数组分配初始值】

格式:数组类型[ ] 变量名 = new 数据类型[数组长度];

new:为数组申请内存空间

范例:

代码语言:javascript
复制
		int[] arr = new int[3]
2) 静态初始化

【初始化时指定每个数组元素的初始值,由系统决定数组长度】

格式:数据类型[ ] 变量名 = new 数据类型[ ] {数据1, 数据2 , 数据3, …};

范例:

代码语言:javascript
复制
int[] arr = new int[]{1,2,3};

简化格式:数据类型[ ] 变量名 = {数据1,数据2,数据3,…};

范例:

代码语言:javascript
复制
int[] arr = {1,2,3};

程序举例:

代码语言:javascript
复制
public static void main(String[] args) {
    int[] arr = {1,2,3};
    System.out.println(arr); // [I@119d7047
    System.out.println(arr[0]); // 1
    System.out.println(arr[1]); // 2
    System.out.println(arr[2]); // 3
}


(三)数组元素访问

1.数组变量访问方式

格式:数组名


2.数组内部保存的数据的访问方式

格式:数组名[索引]

【索引是数组中数据的编号方式】

作用:索引是用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名

特征①:索引从0开始

特征②:索引是连续的

特征③:索引逐一增加,每次加1

程序举例:

代码语言:javascript
复制
public static void main(String[] args){
        int[] arr = new int[3];
        //输出数组名
        System.out.println(arr);// [I@119d7047     这是数组申请的内存空间的地址值
        //输出数组中的元素
        System.out.println(arr[0]);// 0
        System.out.println(arr[1]);// 0 
        System.out.println(arr[2]);// 0
    }


(四)Java 中的内存分配

0.数据类型的默认值

数组在初始化时,会为存储空间添加默认值

  • 整数:默认值0
  • 浮点数:默认值0.0
  • 布尔值:默认值false
  • 字符:默认值是空字符
  • 引用数据类型:默认值是null 【null:空值,引用数据类型的默认值,表示不指向任何有效对象】

1.栈内存

【存储局部变量】

使用完毕,立即消失


2.堆内存

【存储new出来的内容(实体,对象)】

每一个new出来的东西都有一个地址值

使用完毕,会在垃圾回收器空闲时被回收。


3.多个数组指向相同的内存图

程序举例:

代码语言:javascript
复制
public static void main(String[] args){
    int[] arr1 = new int[3];
    arr1[1] = 200;
    arr1[2] = 300;
    System.out.println(arr1); // [I@119d7047
    System.out.println(arr1[1]);// 200
    System.out.println(arr1[2]);// 300

    int[] arr2 = arr1;  // 当多个数组指向同一个内存图时,其中一个数组的值改变时,另一个数组的值也会随着它的改变而改变
    arr2[1] = 220;
    arr2[2] = 330;
    System.out.println(arr1); // [I@119d7047
    System.out.println(arr2); // [I@119d7047
    System.out.println(arr1[1]);// 220
    System.out.println(arr1[2]);// 330
    System.out.println(arr2[1]);// 220
    System.out.println(arr2[2]);// 330
}


(五)数组操作的两个常见小问题

1.索引越界

【访问了数组中不存在的索引对应的元素,造成索引越界问题】

代码语言:javascript
复制
int[] arr = new int[3];
//输出数组中不存在的元素
System.out.println(arr[3]); // ArrayIndexOutOfBoundsException(索引越界)

2.空指针异常

【访问的数组已经不再指向堆内存的数据,造成空指针异常】

代码语言:javascript
复制
int[] arr = new int[3];
System.out.println(arr[2]);
//把null赋值给数组
arr = null;
//输出元素
System.out.println(arr[2]); // NullPointerException(空指针异常)


(六)数组常见操作

1.遍历

通用格式:

代码语言:javascript
复制
int[] arr = {1, 2, 3, 4};
// arr.length 用于获取数组的长度
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

2.获取数组中的最大值

通用格式:

代码语言:javascript
复制
int[] arr = {100, 99, 55, 66, 88, 11};
// 定义一个变量用于保存最大值,并把数组的第一个元素保存在这个变量中
int max = arr[0];
// 将这个最大值与数组的其他每个元素进行比较大小,每次对比将较大的值重新赋值给这个变量
for (int i = 1; i < arr.length; i++) {
    if (arr[i] > max) {
        max = arr[i];
    }
}
// 输出最大值
System.out.println("max:" + max);


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 数组
    • (一)数组定义的格式(推荐使用 格式一)
    • (二)数组的初始化
      • 1.数组初始化概述
      • 2.数组初始化方式
    • (三)数组元素访问
      • 1.数组变量访问方式
      • 2.数组内部保存的数据的访问方式
    • (四)Java 中的内存分配
      • 0.数据类型的默认值
      • 1.栈内存
      • 2.堆内存
      • 3.多个数组指向相同的内存图
    • (五)数组操作的两个常见小问题
      • 1.索引越界
      • 2.空指针异常
    • (六)数组常见操作
      • 1.遍历
      • 2.获取数组中的最大值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档