数组
数组概述
- 组就是指多个的意思 , 在之前我们的代码中使用的数据类型都是单个的 , 为了将多个相同类型的数据存储在一起, 这时候就引出了组的概念
- 数组是存储同一种数据类型多个元素的集合, 也可以看成是一个容器
- 数组可以存储基本数据类型,也可以存储引用数据类型
- 数组是java中的唯一底层容器,集合的底层也使用的是数组
数组的初始化
- 就是为数组开辟连续的内存空间, 并为每个数组元素赋值
数组分为静态初始化跟动态初始化
- 1、静态初始化
指定内容,数组的长度由jvm自动判断
数据类型[] 数组名 = new 数据类型[ ]{元素,元素,元素,元素,元素}
数据类型[] 数组名 = {元素,元素,元素,元素,元素}
2、动态初始化
指定数组的长度, 数组中的元素由jvm给出默认值
数组类型[] 数组名 = new 数据类型[数组长度]
基本数据类型在数组中的默认值,跟数据类型有巨大的关系
基本数据类型
- 默认值
byte =0
short=0
int=0
long=0
float=0.0
doublie=0.0
char=“ ”
引用数据类型
- 所有引用数据类型在数组的默认值都null;比如引用了一个对象,如果这个对象没有具体的值的话,默认值就是null;
数组中元素赋值
通过下标给数组赋值或者取出其中元素 赋值 :Arr[xxx]=i; 取值 i=Arr[xxx];
public static void main(String[] args) {
int nums[] = new int[20];
System.out.println(nums[0]);
Random r = new Random();
System.out.println(r.nextInt(1000));
nums[0] = 100;
System.out.println(nums[0]);
// 给数组中所有的元素赋值
for (int i = 0; i < 20; i++) {
int num = r.nextInt(100);
nums[i] = num;
}
// 遍历数组,获取数组中每个元素的值
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + ",");
}
}
案例:获取数组中的最大值
public static void main(String[] args) {
int nums[] = new int[100];
Random r = new Random();
for (int i = 0; i < nums.length; i++) {
nums[i] = r.nextInt(1000);
}
// 假定最大值是max
int max = 0;
int index = 0;
for (int i = 0; i < nums.length; i++) {
// 把预设的最大值和每一个元素比较,如果发现更大的,就重新给max赋值
if (nums[i] > max) {
max = nums[i];
index = i;
}
System.out.print(nums[i] + ",");
}
System.out.println();
System.out.println("这个数组中的最大值是:" + max + ",下标是:" + index);
}
数组的静态初始化
int [] xxx={xxx,xxx,xxx,xxx,xx}
int [] xxx= new int []{xxx,xxx,xxx,xxx,xxx}
数据的工具类Arrays----------具体详情查看Java类解析目中中的Arrays介绍
二维数组的赋值和使用(案例)
package com.qf.day07;
public class Demo17 {
public static void main(String[] args) {
// 创建二维数组
int arr[][] = new int[3][];
System.out.println(arr.length);
System.out.println(arr[0]);
// 创建三个一维数组
int[] arr0 = {1,3,5};
int[] arr1 = {2,3,5,7};
int[] arr2 = {1,3,5,7,9};
// 给二维数组中的一维数组赋值---》注意要保证数据类型一致
arr[0] = arr0;
arr[1] = arr1;
arr[2] = arr2;
System.out.println(arr[0].length);
System.out.println(arr[1].length);
System.out.println(arr[2].length);
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + ",");
}
System.out.println();
}
}
}
不定参数处理(案例) int…arr
package com.qf.day07;
public class Demo19 {
public static void main(String[] args) {
// 我想一次传入一个方法中多个参数,但是重载太麻烦,能不能变得结合数组更简单一些
int a = 10;
int b = 11;
int c = 12;
int d = 13;
int e = 14;
int f = 15;
int g = 16;
int h = 17;
// 调用getSum方法,得到这些参数的和
int sum = getSum(a,b,c,d,e,f,g,h);
System.out.println("这些参数累加的和是:" + sum);
}
/**
* 使用数组接受所有的参数,并计算他们累加的和
* @param arr
* @return
*/
private static int getSum(int...arr) {
System.out.println(arr.length);
int sum = 0;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ",");
sum += arr[i];
}
return sum;
}
}