Java课程笔记(十一)数组

1. 数组的定义

相同类型的数据的有序集合

int[ ] nums;

int nuts[ ];

两种都可以,但是首选第一种

int[ ] nums; // 声明一个数组

nums =new int[10]; // 分配一个10个 int 类型数字的空间,创建一个数组

也可以将声明和创建数组简化为一行:

int[ ] nums =new int[15];

给数组元素赋值:

nums [?]=?;

2. 计算数组元素和

int sum =0;

for (int i =0; i < nums.length; i++) {   // nums.length 获取数组长度

sum = sum + nums[i];

}

System.out.println("总和为:"+ sum);

3. 内存分析

内存分析:

在声明时,在栈中压入数组名(仅有数组名字,内部为空)

在创建数组时,在堆中开辟了一个内存,空间分成(数组大小)的份

在赋值时,在堆中给每一份空间赋值

4. 三种初始化

静态初始化

// 静态初始化,除了用 new 定义,也可以直接定义,可以理解为结合了 创建 + 赋值 两个步骤

int[ ] a = {0,1,2,3,6,9};// 放多少,空间就是多大,一旦定义,空间大小不可改变

动态初始化

// 动态初始化

int[] b =new int[10]; // 创建之后里面的默认值为0

数组的默认初始化

数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化

5. 数组的四个基本特点

1. 长度确定,一旦被创建,就不可以改变

2. 元素必须是相同类型,不能混合类型

3. 元素可以是任何数据类型,包括基本类型和引用类型

4. 数组变量属于引用类型,数组也可以看做是对象,数组中的每个元素相当于钙对象的成员变量。数组本身就是对象,Java 中对象是堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身都是在堆中的。

6. 数组边界

下标的合法区间:【0,length-1】越界会报错:ArrayIndexOutofBounds

7. 数组的使用

基本用法:

public static void main(String[ ] args) {

int[ ] array = {2,3,4,5,8};

// 打印全部的数组元素

    for (int i =0; i < array.length; i++) {

    System.out.println(array[i]);

    }

    System.out.println("===================================");

// 计算所有元素的和

    int sum =0;

    for (int i =0; i < array.length; i++) {

    sum += array[i];

    }

    System.out.println("sum="+sum);

    System.out.println("===================================");

// 查找最大元素

    int max = array[0];

    for (int i =1; i < array.length; i++) {

    if(array[i]>max){

    max = array[i];

        }

}

    System.out.println("max"+max);

}

高级用法:

// for each 循环

int[ ] array = {2,4,7,4,7};

for (int i : array) { // 输入     数组名 . for    然后点回车

System.out.println(i);// i 表示数组里面每一个值

}

特点:没有输出,比较适合打印输出,但是要是操作里面的元素,这种方式可能没那么适合

// 数组做方法入参

例如:打印数组元素的方法

public static void printArray(int[ ] arrays){

for (int array : arrays) {

System.out.print(array+" ");

    }

}

// 数组作返回值

例如:反转数组

public static int[ ]  reverse(int[] array){

int result[ ] =new int[array.length];

    for (int i =0, j = array.length-1; i < array.length; i++,j--) {

    result[j] = array[i];

    }

return result;

}

注意:返回的是数组,在 main 里用的时候要对其定义。

int[ ] reArray =reverse(array);

8. 多维数组

定义

int[ ][ ]array = {{1,2},{2,2},{5,6}};

1,2 array[0]

2,2 array[1]

5,6 array[2]

// 打印多维数组

for (int i =0; i < array.length; i++) {

for (int j =0; j< array[i].length; j++) {

System.out.println(array[i][j]);

    }

}

你可能感兴趣的:(Java课程笔记(十一)数组)