目录
需求引出
首先我们需要了解数组是说明,数组是可以存放多个同一类型的数据,数组 也是一种数据类型,是引用类型,在Java的数据类型那一篇文章也讲过,除了基本数据类型还有引用类型。
那么我们为什么需要数组,数组让我们方便了数据的存储,从名字上来看,数组就是存放数据的地方
一维数组的使用方式
1.动态初始化(第一种方式)
数组的定义
数据类型 数组名[ ]=new 数据类型[ ]
int a[]=new int[5]; //创建了一个数组名字是a存放5个int
2.动态初始化(第二种方式)
先声明数组
语法:数据类型 数组名];也可以 数据类型[]数组名;
int a[];或者 int[] a;
创建数组
语法:数组名=new 数据类型[大小];
a=new int[10];
3.静态初始化
初始化数组
语法:数据类型 数组名]=(元素值,元素值...)
int a[]=(2,5,6,7,8,89,90,34,56),
通过了解上面的三种初始化的方式,我们大致可以知道,初始化数组的方式有三种,接下来通过代码更将清楚的了解。
注意数组的下标是从0开始的,int[] arr = new int[5] 这句话的意识是,表示创建了一个能存放五个int的数组,但是并没有下标为5的这个位置,因为下标从0开始,因此最大也就是4
代码演示:
package com.array;
/**
* 演示一维数组的使用
*/
public class array01 {
public static void main(String[] args) {
/**
* 注意数组的下标是从0开始的,int[] arr = new int[5] 这句话的意识是,表示创建了一个能存放五个int的数组,但是并没有下标为5的这个位置,因为下标从0开始,因此最大也就是4
*/
//讲解数组初始化的三种方式
//1.动态初始化(第一种方式)
//数组的定义 :数据类型 数组名[ ]=new 数据类型[ ]
//int[] arr = new int[5]; //表示创建了一个数组名字是arr能够存放5个int的数组
//1.动态初始化(第二种方式)
//先声明数组
//语法:数据类型 数组名]也可以 数据类型[]数组名;
int a[];//这里也就是相当于声明了一个数组,但是并没有在堆中,开辟空间
// 创建数组
// 语法:数组名=new 数据类型[大小];
a = new int[10];//一直到这一步,才真正的在内存中为数组分配了对应的空间
//第三种方式(静态初始化)
// 语法:数据类型 数组名]=(元素值,元素值...)
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
}
}
数组的注意事项和使用细节
1.数组是多个相同类型数据的组合,实现对这些数据的统一管理
2.数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
3.数组创建后n 如果没有赋值,有默认值int 0,short 0, byte 0, long 0,float 0.0,double 0.0,char \u0000boolean false,String null
4.使用数组的步骤1.声明数组并开辟空间2给数组各个元素赋值3使用数组
5.数组的下标是从0开始的。
6.数组下标必须在指定范围内使用,否则报:下标越界异常,比如int [] arr=new int[5];则有效下标为0-4
7.数组属引用类型,数组型数据是对象(object)
代码演示:
注意
1.数组的下标是从0开始的,如果越界会报数组下标越界异常
2.数组要先声明在使用
3.如果没有给数组赋值,那么会有默认值
//如果是int 类型数组没有给他赋值,那么数组中存放的就是0 //如果是short 类型数组没有给他赋值,那么数组中存放的就是0 //如果是byte 类型数组没有给他赋值,那么数组中存放的就是0 //如果是long 类型数组没有给他赋值,那么数组中存放的就是0 //如果是float 类型数组没有给他赋值,那么数组中存放的就是0.0 //如果是double 类型数组没有给他赋值,那么数组中存放的就是0.0 //如果是char 类型数组没有给他赋值,那么数组中存放的就是\u0000 //如果是boolean 类型数组没有给他赋值,那么数组中存放的就是false //如果是String 类型数组没有给他赋值,那么数组中存放的就是null
package com.array;
/**
* 演示数组的细节
*/
public class arrayDetail {
public static void main(String[] args) {
int[] arr = new int[4];//创建了一个int类型的数组
// 1.数组是多个相同类型数据的组合,实现对这些数据的统一管理
//arr是一个int类型的数组,如果也就只能存放int类型数据,如果存放其他类型的数据会报错,但是比如是一个char可以和int互相转换的就可以也就不会报错
// char c = 'a';
// double d = 1.1;
// //arr[1]=d;//这就会报错。是错误的
// arr[0] = c;//正确,因为char的本质还是一个数字 char->int
// 2.数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
String[] arr1 = {"jack", "tom"};
// 3.数组创建后n 如果没有赋值,有默认值int 0,short 0, byte 0, long 0,float 0.0,double 0.0,char \u0000 boolean false,String null
//如果是int 类型数组没有给他赋值,那么数组中存放的就是0
//如果是short 类型数组没有给他赋值,那么数组中存放的就是0
//如果是byte 类型数组没有给他赋值,那么数组中存放的就是0
//如果是long 类型数组没有给他赋值,那么数组中存放的就是0
//如果是float 类型数组没有给他赋值,那么数组中存放的就是0.0
//如果是double 类型数组没有给他赋值,那么数组中存放的就是0.0
//如果是char 类型数组没有给他赋值,那么数组中存放的就是\u0000
//如果是boolean 类型数组没有给他赋值,那么数组中存放的就是false
//如果是String 类型数组没有给他赋值,那么数组中存放的就是null
//举例
//我们创建了一个int类型的数组,我们并没有给他赋值,那么遍历完数组的结果就是都是0
System.out.println("输出int类型的arr数组");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println("输出String类型的数据");
//因为我们给arr1这个数组赋值了,所有并没有输出null
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
// 4.使用数组的步骤1.声明数组并开辟空间2给数组各个元素赋值3使用数组
//第一步
int[] arr2;//声明的一个数组
//第二步
arr2 = new int[3];//给数组开辟空间
//第三步
for (int i = 0; i < arr2.length; i++) {//遍历数组
System.out.print(arr2 + " ");
}
// 5.数组的下标是从0开始的。
//在运行的时候会报错,因为数组的下标从0开始,因此对于arr数组来说,最大的下标就是3,因此在运行下面这段代码的时候会报数组下标越界异常ArrayIndexOutOfBoundsException
// for (int i = 0; i < 10; i++) {
// System.out.println(arr[i]);
// }
// 6.数组下标必须在指定范围内使用,否则报:下标越界异常,比如int [] arr=new int[5];则有效下标为0-4
// 7.数组属引用类型,数组型数据是对象(object)
}
}
数组的赋值机制
数组默认情况下是引用传递,赋的是地址