一、最值问题
int arr[]={2,23,1,89,45,35};
int num=getMax(arr);
System.out.println("数组最大的的数为:"+num);
}
public static int getMax(int arr[]){//括号里为形参
int maxNum=arr[0];
for(int i=0;i<arr.length;i++){
if(arr[i]>maxNum){
maxNum=arr[i];
return max;
内存图:
注意:方法中的实参传递给形参时一切都是值传递
基本数据类型:传递的是字面值
引用数据类型:传递的是地址值
二、查询问题
1.查询指定位置的元素
//查询指定位置的元素
int arr[]={12,45,34,45,56};
//查询下标为2的数组元素;
System.out.println(arr[2]);
2.查询制定元素的位置
int i=getIndex(arr,56);
if(i!=-1){
System.out.println(i);
}
else{
System.out.println("查无此数");
}
}
public static int getIndex(int arr[],int n){
int index=-1;
for(int i=0;i<5;i++){
if(arr[i]==n){
index=i;
break;//只要找到第一个元素就停止
}
}
return index;
内存图
三、添加问题
import java.util.Scanner;
public class TestArray05{
public static void main(String[] args) {
//给定一个数组在位置2后添加元素
int arr[]={23,34,45,56,67};
//将插入前的数组打印出来
for(int i=0;i<arr.length;i++){
if(i!=arr.length-1){
System.out.print(arr[i]+",");
}
else{
System.out.print(arr[i]+"\n");//最后一个不用逗号;
}
}
//从键盘接受数据
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要插入数据的下标位置");
int index=sc.nextInt();
System.out.println("请输入你要插入的元素");
int ele=sc.nextInt();
insertEle(arr,index,ele);
}
public static void insertEle(int arr[],int index,int ele){
//添加元素
for(int i=arr.length-1;i>index;i--){
arr[i]=arr[i-1];
}
arr[index]=ele;
//将插入后的数组打印出啦
for(int i=0;i<arr.length;i++){
if(i!=arr.length-1){
System.out.print(arr[i]+",");
}
else{
System.out.print(arr[i]);
}
}
}
}
四、删除问题
import java.util.Scanner;
import java.util.Arrays;
public class TestArray06{
public static void main(String[] args) {
//给定数组
int arr[]={12,34,45,7,56,45};
System.out.println("删除数组前的元素:"+Arrays.toString(arr));
Scanner sc=new Scanner(System.in);
int index=sc.nextInt();
//删除
for(int i=index;i<arr.length-1;i++){
arr[i]=arr[i+1];
}
arr[arr.length-1]=0;
//输出
System.out.println("删除数组后的元素:"+Arrays.toString(arr));
}
}
五、main 方法
(1)main方法:程序入口,在同一个类中,如果有多种方法,虚拟机会识别main方法,从这个作为程序的入口
格式:public static void main(String[] args)
public static—>修饰符
void ------->代表方法没有返回值,对应类型void
main---->名字
String[] args------>参数是String [],实参是 new String[0];
(2)可以定义多个main方法,构成方法的重载(方法名相同,形参列表不同)
public class TestMain{
public static void main(String[] args) {
}
public static void main(String str) {
}//方法名相同,形参列表不同
(3)形参为String[]类型的方法,实参是多少
默认情况下,虚拟机在掉用Main方法是传入了一个长度为0 的数组
int[] arr1;//如果堆数组只声明,没有后续,相当于没有治像
int[] arr2=null;
System.out.println(arr2.length);//Exception in thread "main" java.lang.NullPointerException
int[] arr3=new int[0];//
System.out.println(arr3.length);//输出0
System.out.println(args.length);
for(String str:args)
System.out.println(str);
六、可变参数
(1)作用:提供了一个方法,参数的个数是可以变得,解决了部分方法的重载问题
(2)格式:in…num
double…num
boolean…num
注意:可变参数和其他数据作为形参时,可变参数一定要放在最后
method01(10);
method01();
method01(20,30);
method01(new int[]{11,22,33});
}
public static void method01(int...num){
System.out.println("--------1");
for(int i:num){
System.out.println(i+"\t");
}
七、Arrays工具类
1.toString :对数组进行遍历查看
int[] arr={11,22,33,44,55};
System.out.println(Arrays.toString(arr));
2.binarySearch:二分查找,找出指定元素对应的索引(查看的是有序数组)
int[] arr={11,22,33,44,55};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.binarySearch(arr,11));
3.sort:升序
int[] arr={11,22,33,44,55};
Arrays.sort(arr);
4.copyOf:完成数组的复制
int[] Arr2={11,22,33,44,55};
int[] newArr=Arrays.copyOf(Arr2,4);
System.out.println(Arrays.toString(newArr));
5.copyRange:区间复制(范围左包含右不包含)
int[] Arr2={11,22,33,44,55};
int[] newArr3=Arrays.copyRange(Arr2,1,4);
6.equals;比较俩个数组的值是否一致
int[] arr3={2,3,4,5,6,7};
int[] arr4={2,3,4,5,6,7};
System.out.println(Arrays.equals(arr3,arr4));//ture
System.out.println(arr3==arr4);//false,比较的时地址
7,fill:进行数组的填充
int[] arr5={2,3,4,5,6,7};
Arrays.fill(arr5,10);
8.System中的arrayscopy
int[] accarr={11,22,33,44,55,66,77};
//目标数组
int[] newarr=new int[10];
//
System.arraycopy(accarr,1,newarr,1,4);
System.out.println(Arrays.toString(newarr));