java数组

数组的概念

1、什么是数组

​ 数组是相同数据类型元素的集合。创建数组的时候,Java就会再内存中分配一段连续的空间来存放数组的内容。每一个数组内容都有自己的编号,这个编号从0开始的,也就是数组的下标从0开始。通过数组的下标来访问数组的内容。另外数组也是一种数据类型,是引用数据类型。

2、数组的声明

数据类型[] 数组名; //推荐使用第一种方式
数据类型 数组名[];

声明的时候,jvm没有为该数组分配存储空间,

声明一个数组的时候,该数组没有被创建

3、数组的初始化

1、静态初始化
int[] arr ={1,2,3,4}
int[] arr =new int[]{1,2,3,4}
2、动态初始化
int[] arr=new int[10]
3、扩展方法

Arrays.fill快速初始化,填充一个数组

​ java中的数组初始值都为零,若快速填充一个其他值的数组,即将数组批量填充相同的值,可以用 Arrays.fill 方法,但只能填充一个一维数组,多维数组还得用循环。

代码示例:

import java.util.Arrays;

public class HelloWorld {
    public static void main(String[] args) {
        int[] arr = new int[5];
        Arrays.fill(arr, 1);
        System.out.println(Arrays.toString(arr));  // [1, 1, 1, 1, 1]
    }
}

默认的初始化

数组类型默认初始化的值
整型(byte short int long)0
浮点型(float double )0.0
字符型(char)/u0000
布尔类型(boolean)false
引用数据类型null

4、数组的特点

1.长度是确定。数组一旦创建,它的大小不可以改变的
2. 元素必须是相同的数据类型,不允许出现混合类型
3. 数组数据类型可以是任何数据类型.包括基本数据类型和引用数据类型

5、数组的访问

  • 数组名[索引] = 数值,为数组中的元素赋值

  • 变量 = 数组名[索引],获取出数组中的元素

    public static void main(String[] args) {
     //定义存储int类型数组,赋值元素1,2,3,4,5 
     int[] arr = {1,2,3,4,5};
      //为0索引元素赋值为6 
      arr[0] = 6; 
      //获取数组0索引上的元素 
      int i = arr[0]; 
      System.out.println(i); 
      //直接输出数组0索引元素 
      System.out.println(arr[0]); 
    }
    

6、数组的遍历

​ 就是将数组中的每个元素分别获取出来,就是遍历。

public static void main(String[] args) {
	 int[] arr = { 1, 2, 3, 4, 5 }; 
	 System.out.println(arr[0]); 
	 System.out.println(arr[1]); 
	 System.out.println(arr[2]); 
	 System.out.println(arr[3]); 
	 System.out.println(arr[4]);
 } 

for循环遍历

public static void main(String[] args) { 
 int[] arr = { 1, 2, 3, 4, 5 }; 
 for (int i = 0; i < arr.length; i++) { 
 System.out.println(arr[i]); 
	}
}

foreach 遍历

public static void main(String[] args) { 
 int[] arr = { 1, 2, 3, 4, 5 }; 
 for (int i : arr) { 
 System.out.println(i); 
	}
}

数组的内存

内存的概述

​ 内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。 Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

java虚拟机中内存的划分
区域名称作用
寄存器给CPU使用,和我们开发无关。
本地方法栈JVM在使用操作系统功能的时候使用,和我们开发无关。
方法区存储可以运行的class文件。
堆内存存储对象或者数组,new来创建的,都存储在堆内存。
方法栈方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
数组在内存的存储
public static void main(String[] args) { 
		int[] arr = new int[3]; 
		System.out.println(arr);     // [I@5f150435 
}

​ 以上方法执行,输出的结果是[I@5f150435,这个就是数组在内存中的地址。new出来的内容,都是在堆 内存中存储的,而方法中的变量arr保存的是数组的地址。
在这里插入图片描述

程序执行流程:![在这里插入图片描述](https://img-blog.csdnimg.cn/97a0571be8f84e69909c046f3f706430.png#pic_center)



1、main方法进入方法栈执行
2、创建数组,JVM会在堆内存中开辟空间,存储数组
3、数组在内存中会有自己的内存地址,以十六进制数表示
4、数组中有3个元素,默认值为0
5、JVM将数组的内存地址赋值给引用类型变量array
6、变量array保存的是数组内存中的地址,而不是一个具体数值,因此称为引用数据类型。
数组的异常
越界异常
public static void main(String[] args) {
 int[] arr = {1,2,3}; 
 System.out.println(arr[3])
 } 

​ 创建数组,赋值3个元素,数组的索引就是0,1,2,没有3索引,因此我们不能访问数组中不存在的索引,程序运行后,将会抛出 ArrayIndexOutOfBoundsException 数组越界异常。

空指针异常
public static void main(String[] args) { 
	int[] arr = {1,2,3};
	arr = null;
 	System.out.println(arr[0]);

​ arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候 会抛出 NullPointerException 空指针异常。
在这里插入图片描述

数组常用的API
1、输出数组(Arrays.toString())
 int[] array = { 1, 2, 3 };
 System.out.println(Arrays.toString(array));
2、数组转List或set(Arrays.asList())
	//数组转List
	String[] array2 = {"a", "b", "c", "d"};
	System.out.println(array2);  // [Ljava.lang.String;@13b6d03
	List list = new ArrayList(Arrays.asList(array2));
	System.out.println(list);   // [a, b, c, d]
	list.add("GG");
	System.out.println(list);  // [a, b, c, d, GG]
	//数组转set

	String[] array = { "a", "b", "c", "d", "e" };
	Set set = new HashSet(Arrays.asList(array));
	System.out.println(set)

3、 List转数组 (toArray())
	List list = new ArrayList();
	list.add("a");
	list.add("b");
	list.add("c");
	String[] array = new String[list.size()];
	list.toArray(array);
	for (String s : array)
	System.out.println(s);
4、数组中是否包含某个值
String[] array = { "a", "b", "c", "d", "e" };
boolean isEle = Arrays.asList(array).contains("a");
System.out.println(isEle);
使用数组的注意事项
1、数组是多个相同类型数据的组合,实现对这些数据的统一管理
2、数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
3、数组创建后,如果没有赋值,有默认值
	int 0short 0, byte 0, long 0, float 0.0,double 0.0char \u0000,boolean falseString null
4、使用数组的步骤 1. 声明数组并开辟空间 2 给数组各个元素赋值 3 使用数组
5、数组的下标是从 0 开始的。
6、数组下标必须在指定范围内使用,否则报:下标越界异常
7、数组属引用类型,数组型数据是对象(object)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值