一、数组
什么是数组?
数组就是用来存储一组相同类型数据的数据结构。
数组是引用类型,数组中的元素可以是基本数据类型也可以是引用数据类型
数组的定义格式
数据类型[ ]数组名
int[]arr;
double[]arr;
char[]arr;
也可以这样写
数据类型 数组名[]
int arr[];
char arr[];
double arr[];
数组的动态初始化
动态初始化就是只给数组的长度,由系统给出默认的初始化值。
数据类型[ ]数组名=new 数据类型[ ];
int [] arr=new int [5]; //[5]代表数组的长度 new:为数组开辟内存空间
数组的元素访问
索引也叫下标
public class**{
public static void main (String[]args){
//定义一个长度为三的数组
int[] arr = new int[3];
//给下标为0,1,2的元素赋值
arr[0]=1;
arr[1]=2;
arr[2]=3;
System.out.println(arr[0]); //输出下标为0的数
System.out.println(arr[1]); //输出下标为1 的
System.out.println(arr[2]);//输出下标为2的
}
}
内存分配
栈内存:方法运行时使用的内存,比如main方法运行,进入方法栈中执行
堆内存:存储对象或者数组,new来创建的,都存储在堆内存。
方法区:存储class文件
**程序执行时,将字节码文件(class文件)加载到方法区,jvm自动调用main方法,此时进入main方法的栈内存,如果在main方法中声明并创建了一个数组对象,则数组声明的对象位于栈内存中,而当前数组实际存放数据位于堆内存中,堆内存会产生一个地址,并且把该地址赋值给数组名,所以数组名实 际上是对堆内存地址的引用
引用类型,对象位于栈内存,对象存储的数据都会位于堆内存
数组的静态初始化
静态初始化化就是 创建数组时直接给定值。
完整格式:
数据类型[]数组名=new 数据类型[]{元素1,元素2 ,...}//元素与元素之间用逗号隔开
int[]arr=new int[]{1,2,3,4,5}
简化格式:
数据类型[]数组名={元素1,元素2 ,...}
int arr[]={1,2,3,4,5}
数组遍历
public class xx {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[3]);
}
}
这样可以输出所有元素。但比较麻烦
public class xx{
public static void main(String[]args){
int []arr={1,2,3,4,5,6,7,8,9}
for(int i=0; i<arr.length;i++){
System.out.in(arr[i]);
}
}
}
数组获取最大值
找出数组中的最大值
public class xx {
public static void main(String[] args) {
int[]arr={1,2,3,4,5,6,78,98}
int max=arr[0];//假设第一个数为最大值
//遍历数组,
for(int i=0;i<arr.length;i++){
//如果数组中的值比max大 ,那么让max就等于这个值;然后继续进行比较
if(arr[i]>max)//i{
max=arr[i]
}
}
System.out.println("最大值:" + max);
}
}
多维数组
二维数组:二维数组就是存储一维数组的数据结构;二维数组中的元素是一维数组
二维数组的动态初始化:
数据类型[][]数据类型=new 数据类型[一维数组的个数][一维数组中的元素个数]
二维数组的静态初始化:
数据类型[][]数组名称={{1,2,3,4},{2,3,4,5,6}{7,8,9}}
二维数组的遍历输出
使用双重for循环
public class Dxx{
public static void main(String[]args){
int[][]arr={{2,3,4,5},{1,2,3},{,6,7,8,9}}
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr1[i][j]);
}
}
}
}