数组用是来存储数据的集合
数组在内存中是如干个大小一致,类型一样,地址连续的存储空间
如何访问数组中的元素?
直接使用角标、数组、下标访问元素
java中内存的分布情况
寄存器
本地方法区:存储操作系统的部分代码
方法区:存储应用程序的代码
栈内存:运行函数代码
堆内存:存储对象的
格式
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
例如:new sanner中的new是创建对象
数据类型[] 数组名=new 数据类型[lenght]
创建一个指定长度的数组,里面没有数据,是默认值(但凡在堆内存中的数据都有默认初始化数值)
eg:int[] arr=new int[5];
//创建一个整形数组(int)且长度为5 然后将这个对象的地址给变量arr arr的
//[]指的一维数组
//arr中存放的第一数字的地址(拿到第一个的地址就可以找到后续的)
当创建数组后,它的元素被赋予默认值。
数值型的基本数据类型为0
char默认值是‘\u0000’
boolean默认值为false
数组元素可以通过下标访问。数组下标是基于 0的,也就是说,其范围从 0 开始到 数组的长度-1结束。
基本格式:
数组引用交量[下标];
创建数组后,下标变量与正常变童的使用方法相同。
Java 有一个简捷的标记,称作数组初始化语法,它使用下面的语法将声明数组、创建数 组和初始化数组结合到一条语句中:
元索类型[] 数进引用变量={值 0,值1, …,值 k}
数组初始化语法中不使用操作符 new。使用数组初始化语法时,必须将声明、创建和 初始化数组都放在一条语句中。将它们分开会产生语法错误。
public static void bianli(){
System.out.println("数组的遍历");
int arr[]={1,2,3,4,5,6};
for(int i=0;i=0;i--){ //逆向的遍历
System.out.print(arr[i]+" ");
}
System.out.println();
public static void find(){
System.out.println("数组的查找");
int arr[]={6,4,8,2,3,1,9,7,5};
int key=3;
int index=-1;
for(int i=0;i
arr=new int[]{1,2,3,4,5,6,7,8,9};//二分查找
key=8;
int minIndex=0;
int maxIndex=arr.length-1;
int midIndex=(minIndex+maxIndex)/2;
index=-1;
while(true){
if(arr[midIndex]>key){
maxIndex=midIndex-1;
}else if(arr[midIndex]maxIndex){ //当最小的大于最大的时退出(没有相应的数字)
break;
}
}
System.out.print(index);
}
public static void resize(){
System.out.println("数组的扩容");
int[] arr=new int[]{1,2,3,4,5};
int deitSize=-2;//-缩 +扩
int[] newArr=new int[arr.lenght+deitSize];
//将原先的数据放入到新数组中
for(int i=0;i
public static void selectedSort(){
int[] arr={5,1,3,2,7,4,9,8,6};
for(int i=0;iarr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
for(int i=0;i
public static void bubbleSort(){
int[] arr={5,1,3,2,7,4,9,8,6};
//i仅仅表示轮数
for(int i=0;iarr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i
public static void insertSort(){
int[] arr={5,1,3,2,7,4,9,8,6};
for(int i=1;i=0&&arr[j]>e){
arr[j+1]=arr[j];
j--;
}
arr[j+1]=e;
}
for(int i=0;i