数组(查漏补缺)

String[] args

主要用在当我们执行Java程序(java 字节码文件)的时候,可以指定一些参数的。输入的值会传到args中,只不过输入的数是以字符串的形式出现的。

args其实并不是确定的,它是可变的。

可变长参数

  • 当我们在给一个函数传参的时候,如果我们不确定具体传参数的个数的话,可以使用可变长参数(这些参数必须是相同的类型)
  • 可变长参数本质上就是一个数组

注意

  • 如果可变长参数和固定参数同时存在的,那么可变长参数必须在参数列表的最后面
  • 一个参数列表当中最多只能出现一个可变长参数,如有多个可变长参数编译报错

for-each循环

本质:其实是一个简化过后的for循环

格式:

for(循环数据类型 循环变量名 : 可迭代对象 ){

       循环体;

}

使用for-each循环只是对复制过来的对象进行操作,被复制对象本身并不发生什么变化。

源代码 

class Test01{
    public static void main(String[] a){
        System.out.println(a.length);
        for(int i=0;i<a.length;i++){
            System.out.println(a[i]);
        }
        // multiArguments(1);
        // multiArguments(1,2,3);
        multiArguments(1,2,3,4,5,6,7);
    }
    //传入的是不确定个数的int型参数
    public static void multiArguments(int ... nums){
        System.out.println(nums.length);
        /*
        for(循环数据类型 循环变量名 : 可迭代对象 ){
            循环体;
        }
        num其实表示的是nums[i]  i∈[0~nums.length)
        只不过在foreach中 屏蔽掉了i的具体行为
        
        数组是可迭代对象当中的一种 并且数组可以通过角标访问
        所以目前你可以认为num等效于nums[i]

        但是并不代表所有的可迭代对象都有角标支持!
        有些可迭代对象的元素访问顺序是比较复杂的,所以foreach就是为了避免这些复杂才出现的
        
        foreach有什么样的一个缺点呢
        它仅仅只能访问元素 不能对元素进行修改
        num仅仅是nums[i]的一个备份 改num不代表改nums[i]
        如果仅仅访问元素的话 foreach更简单
        */
        for(int num : nums){
            num=1;
        }
        for(int num : nums){
            System.out.println(num);
        }
        System.out.println();
    }
    public static void multiArguments(double ... nums){
        // System.out.println("a="+a);
        // System.out.println("b="+b);
        System.out.println(nums.length);
        for(int i=0;i<nums.length;i++){
            System.out.print(nums[i]+" ");
        }
        System.out.println();
    }
}

 多返回值处理

Java的函数仅仅只能返回单一的值,如果需要一次性返回多个值,将个值封装在一个数组当中即可

import java.util.Arrays;
class Test02{
    public static void main(String[] args){
        int[] arr={1,3,5,7,9,2,4,6,8};
        Arrays.sort(arr);
        System.out.println(Arrays.binarySearch(arr,8));
        arr=Arrays.copyOf(arr,arr.length+1);
        System.out.println(Arrays.toString(arr));
        //MyArrays.sort(arr);

        //传入一个坐标点,将坐标点进行移动
        int x=0;
        int y=0;
        int[] res=move(x,y,10,10);
        x=res[0];
        y=res[1];
        System.out.println("x="+x);
        System.out.println("y="+y);
    }
    //如果是C/C++语言的话 只需要传x 和 y的指针即可
    //void move(int *x,int *y){ *x+=deltx; *y+=delty;}
    public static int[] move(int x,int y,int deltx,int delty){
        x+=deltx;
        y+=delty;
        return new int[]{x,y};
    }
}

Arrays类

是关于数组的工具类,Math、Scanner、String(不是工具类)

 函数:

  • static int binarySearch(int[] a, int key)

  • static void sort(int[] a) 
public class Sort{
    static void sort(byte[] a){
        for(int i=a.length-1;i>0; --i){
            for(intj=0;ja[j+1]) {
                int k=a[j+1];
                a[j+1]=a[j];
                a[j]=k;
            }// end if
        } // end for
    }//end for
    public static void main(String[] args){

    }
}
  • static int[] copyOf(int[] original, int newLength)  
  • static String toString(int[] a)  
  • static boolean equals(int[] a, int[] a2) 

发布了65 篇原创文章 · 获赞 3 · 访问量 1761

猜你喜欢

转载自blog.csdn.net/weixin_44077638/article/details/104458523