数组
数组的定义:数组是一个存储固定长度元素数据的容器,要保证多个数据的类型一致
数组格式:
①数组存储的数据类型[ ] 数组名字 = new 数组存储的数据类型[长度]
例如 int[ ] arr = new int[3];
②数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3}
例如 int [] arr = new int[]{1,2,3,4}
③数据类型[] 数组名称 = {元素1,元素2,元素3}
例如 int [] arr = {1,2,3}
数组有固定长度,长度确定后不能更改
数组的访问:数组的访问是依靠索引来访问的
索引(index):每一个存储进数组内部的元素都有自己的编号,从第一个数据开始,索引为0,往后有多少数据,就自动增长
数组的长度为:数组名称.length,执行的结果为数组的长度,数组的最大索引值为 数组名.length-1
访问数组内的元素
数组名[索引] = 数值,这个是为数组赋值
数据类型 变量 = 数组名[索引],获取数组中的元素
public static void main(String[] args) {
//定义存储int类型数组,赋值元素1,2,3,4,5
int[] arr = {1,2,3,4,5};
//为0索引元素赋值为6
arr[0] = 6;
//获取数组0索引上的元素
int i = arr[0];
System.out.println(i);
//直接输出数组0索引元素 System.out.println(arr[0]); }
数组原理内存
java虚拟机内存划分:
JVM内存划分
寄存器:给cpu使用,和开发无关
本地方法栈:操作系统功能时使用,开发无关
方法区:存储时可以运行的class文件
堆内存:存储对象或者数组,new来创建的,都存储在堆内存里面
方法栈:方法运行时使用的内存,比如main方法运行时,进入方法栈运行
数组越界异常:ArrayIndexOutOfBoundsException
访问了不存在的索引,就会抛出这个异常
空指针异常:
NullPointerException
保存了数值为NULL的数据,会导致空指针异常
数组遍历
遍历:就是把数组中的每个元素都或取出
例如public static void main(String[] args) {
int [] arr = {1,2,3,4,5}
for(int i = 0; i < arr.length; i++){
System out println(arr[i])
}
}
数组中获取最大值元素
public class demo1 {
public static void main(String[] args) {
//定义数组
int[] arr = {1,2,3,4};
//定义变量保存数组中的索引为0的元素
int max = arr[0];
//遍历数组,分别取出每个元素
for (int i = 0; i <arr.length ; i++) {
//遍历到的元素和索引0的比较,如果数组元素大于max,max记录最大值
if (arr[i]>max){
max = arr[i];
}
}
System.out.println(max);
}
}
数组反转
数组反转:数组中的元素颠倒顺序,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
/*循环中定义变量min=0最小索引 max=arr.length‐1最大索引 min++,max‐‐ */
for (int min = 0, max = arr.length ‐ 1; min <= max; min++, max‐‐) { //利用第三方变量完成数组中的元素交换
int temp = arr[min];
arr[min] = arr[max];
arr[max] = temp; }
// 反转后,遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
} }
数组作为方法的参数和返回值:
数组作为方法参数:
例如public static void main(String[] args) {
int[] arr = { 1, 3, 5, 7, 9 };
//调用方法,传递数组
printArray(arr);
}
/* 创建方法,方法接收数组类型的参数 进行数组的遍历 */
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
} }
数组作为方法的返回值:数组作为方法的返回值,返回的是数组的内存地址
public static void main(String[] args) {
//调用方法,接收数组的返回值
//接收到的是数组的内存地址
int[] arr = getArray();
for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]);
} }
/*创建方法,返回值是数组类型 return返回数组的地址 */
public static int[] getArray() {
int[] arr = { 1, 3, 5, 7, 9 };
//返回数组的地址,返回到调用者
return arr;
}
方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值.