一、应用场景
开发中为什么要使用数组呢?
如果开发中出现了大量的 、同一类型的数据 ,按照现在所学的知识点,如果声明一个变量存一个数据的话 ,那么就会需要声明很多个变量,这是相当麻烦的 。
如果是数组的话 ,只需要声明一个数组 ,就可以存很多数据 。
数组就像是一个容器 。
二、数组的定义
这里数组的定义可以和变量的定义比较着看。
变量的定义:
数据类型 变量名字 = 值;
数组的定义:
数据类型[] 数组名字 = 数组的值;
下面将进行详细声明 :
第一种
语法格式:
数据类型[] 数组的名字 = {值1, 值2, 值3,...};
或
数据类型 数组的名字[] = {值1, 值2, 值3,...};
第二种
语法格式:
数据类型[] 数组的名字 = new 数据类型[容量];
或者
数据类型 数组的名字[] = new 数据类型[容量];
第三种
语法格式:
数据类型[] 数组的名字 = new 数据类型[]{值1, 值2, 值3,...};
第一种和第二种区别:
第一种既声明了数组 ,又对数组进行了赋值 ;
第二种只是声明了空的数组而已,暂时还没有赋值。
第三种其实就是第一种的完全写法 ,仅作了解 ,见到了知道是在声明变量就可以。
具体应用
1.第一种
import java.util.Arrays;//导包,之后用到 Arrays.toString()需要
public static void main(String[] args) {
//数组第一种声明方式: 数据类型[] 数组的名字 = {值1, 值2, 值3,...};
int[] arr = {23, 34, 12, 15};
System.out.println(arr);//[I@15db9742 是内存地址 但是数据看不到 那咋办?
System.out.println(Arrays.toString(arr));//将一个内存地址形式的数据变成 人类可以看懂的
//[23, 34, 12, 15]
String[] strs = {"张三", "李四", "王五"};
System.out.println(strs);//@6d06d69c
System.out.println(Arrays.toString(strs));//[张三, 李四, 王五]
boolean[] bools = {true, true, false, true};
System.out.println(bools);//[Z@7852e922
System.out.println(Arrays.toString(bools));//[true, true, false, true]
float[] f2 = {12.3f, 45.6F};
//声明一个char类型的数组
char[] chs = {'a', '中', '9'};
System.out.println(chs);//a中9 这个比较特殊 打印不是地址 是数组中值组成的
}
2.第二种
import java.util.Arrays;
public class Demo5 {
public static void main(String[] args) {
//第二种声明方式: 数据类型[] 数组的名字 = new 数据类型[容量];
int[] arr = new int[3];//在声明一个数组,且容量为3 只能存放3个数据 空的数组
//arr = {0,0,0};//这里没有赋值,默认为0
System.out.println(arr);//内存地址
System.out.println(Arrays.toString(arr));//[0, 0, 0]
//此时是空的数组
String[] strs = new String[4];
System.out.println(Arrays.toString(strs));//[null, null, null, null]
//这种方式的声明 是好比弄好了桌子 空桌子
}
}
三、对于第二种声明数组的赋值
通过数组的下标对数组赋值, 其中数组的下标都是从 0 开始数。
import java.util.Arrays;
public class Demo7 {
public static void main(String[] args) {
//第二种数组的声明方式 数据类型[] 数组的名字 = new 数据类型[容量];
int[] arr = new int[3];//arr = {0,0,0};
//对这个空的数组进行的的赋值
arr[0] = 23;//将23 赋值给 arr这个数组下标为0 的位置
System.out.println(Arrays.toString(arr));//arr = [23, 0, 0];
arr[1] = 45;
System.out.println(Arrays.toString(arr));//arr = [23, 45, 0];
arr[2] = 678;
System.out.println(Arrays.toString(arr));//arr = [23, 45, 678];
//arr[3] = 250; 这个下标越界
}
}
四、对数组进行取值
通过数组的下标对数组进行取值。
public class Demo8 {
public static void main(String[] args) {
int[] arr = {32, 45, 89, 12, 999, 5667};
//获取数组中的值
System.out.println(arr[0]);//32
System.out.println(arr[1]);//45
System.out.println(arr[2]);//89
System.out.println(arr[3]);//12
for (int i = 0; i < 4; i++) {
//i的循环的值 刚好作为数组的下标
System.out.println(arr[i]);
}
//数组.length 数组的长度
String[] strs = {"张三", "狗蛋", "麻子", "李四"};
for (int i = 0; i < strs.length; i++) {
System.out.println(strs[i]);
}
}
}
五、数组与方法的联系
1.数组可以作为方法的参数
2.数组可以作为方法的返回值
方法的参数和返回值可以是八大基本数据类型和String ,也可以是数组 。 示例:
public class Demo16 {
public static void main(String[] args) {
int[] arr = {1,23,3,1};//声明一个数组
int a = getMaxIndexInArray(arr);//变量a 接收方法返回值
System.out.println(a);
}
//定义一个方法,找出来一个int数组中最大的那个值的下标 有参 有返回值
public static int getMaxIndexInArray (int[] arr) {
int maxIndex = 0;//接最大值的下标
for (int i = 1; i < arr.length; i++) {
if (arr[maxIndex] < arr[i]) {
maxIndex = i;
}
}
return maxIndex;
}
}
六、二维数组(扩充)
一维数组 [1,2,3,4] ,排成一条线
二维数组语法格式:
数据类型[][] 数组名字 = new 数据类型[容量][容量];
示例:声明一个二维数组 ,并对其进行赋值和取值。
import java.util.Arrays;
public class Demo18 {
public static void main(String[] args) {
int[][] arr = new int[2][3];
arr[0][0] = 78;
arr[0][1] = 89;
arr[0][2] = 100;
arr[1][0] = 250;
arr[1][1] = 101;
arr[1][2] = 99;
//第一个[] 是行 第二个[] s是列
//取数据 使用循环来取
for (int i = 0; i < 2; i++) {//控制行
for (int j = 0; j < 3; j++) {//控制列
System.out.println(arr[i][j]);
}
}
}
}
完结,撒花~