数组
一、数组概述
数组的基本特点
1.其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。2.其元素必须是相同类型,不允许出现混合类型。
3.数组中的元素可以是任何数据类型,包括基本类型和引用类型
4.数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
概述
数组是一种数据结构,用来存储同一类型值的有序集合
每一个数据称作一个数据元素,每个数组元素可以通过一个下标来访问它
二、数组的声明与创建
1.首先必须声明数组变量,才能在程序中使用数组。
声明数组:new int [10] 声明了一个长度为10的数组
2.使用new操作符来创建数组
变量类型 变量名 = 变量值
// 动态初始化
int[] a = new int[10]; // 声明一个长度为10的 a 数组
// 静态初始化
int [] b = {1,2,3,4,5,6}; // 数组的一种简写方式
3.数组长度 :数组名.length
4.数组中的元素通过索引访问,数组索引自0开始
如:赋值
a[0]=1; a[1]=2;
三、内存分析
截自 遇见狂神说
四、数组使用
数组边界
下标的合法区间为:【0,length-1】,如果越界就会报错
ArrayIndexOutOfBoundsException
:数组下标越界异常
普通for循环
public static void main(String[] args) {
int[] num = {1,2,3,4,5,6};
//遍历for
for (int i = 0; i <num.length ; i++) {
System.out.println(num[i]);
}
//计算总和
int sum = 0;
for (int i = 0; i < num.length ; i++) {
sum+=num[i];
}
System.out.println("总和为"+sum);
//找出最大值
int max=0;
for (int i = 0; i < num.length; i++) {
if (num[i]>max){
max=num[i];
}
}
System.out.println("最大值为"+max);
}
For-Each 循环
快捷键:iter 或 数组名.for
int[] num = {1,2,3,4,5,6};
for (int i : num) {
System.out.println(i);
}
数组作为方法入参
打印数组元素
public class Demo01 {
public static void main(String[] args) {
int[] num = {1, 2, 3, 4, 5, 6};
Demo01.printArray(num);
}
public static void printArray(int[] num){
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+" ");
}
}
}
数组作为返回值
反转数组
public class Demo01 {
public static void main(String[] args) {
int[] num = {1, 2, 3, 4, 5, 6};
int[] reverse = Demo01.reverse(num);
Demo01.printArray(reverse);
}
// 输出数组
public static void printArray(int[] num){
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+" ");
}
}
//反转数组
public static int[] reverse( int[] num){
int[] rssults = new int[num.length];
for (int i = 0 ,j=num.length-1; i <num.length ; i++ ,j--) {
rssults[j]=num[i];
}
return rssults;
}
}
五、多维数组
二维数组
声明:int[][] ints = new int[3][2];
遍历二维数组
public class Demo02 {
public static void main(String[] args) {
int[][] a ={{1,2},{2,3},{3,4},{4,5}};
for (int i = 0; i <a.length ; i++) {
System.out.println();
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j]);
}
}
}
}