目录
1 数组的基本用法
1.1数组是什么
数组是用一段连续的空间来储存一些相同类型的数据。
数组中的每一个数据都有自己的唯一下标,这个下标也是访问这个元素的标识。下标是从0开始的
例如数组中有5个数,它里面的数据于数据所对应分下标如图
例如:
1,2,3,4,5,6,7就可以用一个数组来存储
1.2创建数组
基本语法:
数据的类型[]数组名称={初始化数据};
数据的类型[]数组名称=new 数据类型[要存放的数据的个数]{初始化数据};
示例代码:
int[]array1={1,2,3,4,5};
int[]array2=new int[5]={1,2,3,4,5};
1.3数组的使用
数组的基本的使用有两个,1是或去数组的长度,2是访问数组的每一个元素
示例代码:
public static void main(String[] args) {
int[]array={1,2,3,4,5};
//获取数组的长度
int len=array.length;
System.out.println(len);
//通过数组的下标访问数组
System.out.println(array[0]);
}
注意事项
public static void main(String[] args) {
int[]array={1,2,3,4,5};
//for循环遍历
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
System.out.println();
//foreach遍历数组,
for (int x:
array) {
System.out.print(x);
}
System.out.println();
}
2 数组作为方法的参数
2.1基本用法
示例代码:数组的遍历
public static void playArray(int[]array){
for (int i = 0; i <array.length ; i++) {
System.out.print(array[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
playArray(arr);
}
在这个代码中arr是实参,array是形参,array.legth也可以获取数组的长度
2.2引用的理解
首先我们来看下面的代码:
public static void change(int num){
num=20;
System.out.println("num="+num);
}
public static void main(String[] args) {
int a=10;
change(a);
System.out.println("a="+a);
}
很明显我们想要通过方法去改变a是做不到的,因为num是a的拷贝而已,它们只是值相同而已
那么我们如果就要对某个空间上数据通过方法进行修改要怎么做呢?
这里就引入了引用的概念
引用:引用也是一种变量,不过它储存的是一个对象的地址(对象的概念在以后讨论)。
下面我们来看一段代码
public static void change(int[]array){
for(int i=0;i<array.length;i++){
array[i]*=2;
}
}
public static void main(String[] args) {
int arr[]={1,2,3,4,5};
change(arr);
playArray(arr);
}
我们可以看到数组中的数据被改变了,这到底是为什么呢,下面我们来讨论这个问题。
首先,我要告诉大家数组是一个引用类型,数组名就是这个引用类型的变量名,这个变量里面存放这数组中元素的地址。那么array对arr的一份拷贝,也就是说array中也存放这相同的地址,所有通过地址就可以改变地址所对应空间的值。
如图:
2.3认识null
2.4认识JVM内存区域划分
JVM的内寸被划分为了几个不同的区域
3数组作为方法的返回值
示例代码:将一个数组中的每一个元素扩大2倍并返回
public static int[]toDouble(int[]array){
int[]returnArray=new int[array.length];
for (int i = 0; i <array.length ; i++) {
returnArray[i]=array[i];
}
return returnArray;
}
public static void main(String[] args) {
int arr[]={1,2,3,4,5};
playArray(toDouble(arr));
}
4 数组练习
4.1数组转字符串
代码:
/**
* 数组转字符串
* @param array 要转换的数组
* @return 转换好的字符串
*/
public static String toString(int[]array){
String str="[";
for(int i=0;i<array.length;i++){
str+=array[i];
if(i<array.length-1){
str+=",";
}
}
str+="]";
return str;
}
public static void main(String[] args) {
int arr[]={1,2,3,4,5};
System.out.println(toString(arr));
}
4.2查找数组中的指定元素(二分查找)
/**
* 二分查找
* @param array 待查找的数组
* @param key 要查找的数
* @return 如果找的返回要查找的数的下标,如果找不到返回错误信息
*/
public static int binarySearch(int[]array,int key){
int left=0;
int right=array.length-1;
while(left<=right){
int mid=(left+right)/2;
if(array[mid]>key){
right=mid-1;
}else if(array[mid]<key){
left=mid+1;
}else{
return mid;
}
}
return -1;
}
public static void main(String[] args) {
int arr[]={1,2,3,4,5};
System.out.println(binarySearch(arr,2));
}