Java数组之查缺补漏

一、String[ ] args

对于一个初学者来说,在我们刚开始写Java源程序的时候,都会写main函数,因为main函数是Java源程序运行的入口,而且大家刚开始都是记住主函数的格式:

public static void main(String[ ] args){ }

大家都知道改写这行代码,不但写而且还是必须得写,但是我相信对于一个初学者的他,只知道写,并不知道其中的含义,接下来我就带大家具体分析一下:

import java.util.*;
class Test01{
    public static void main(String[] args){
        /*
        大家有没有发现String[] args这一种的格式是不是很像创建数组的格式;
        没错,而这句代码的意思就是创建了一个名为args的字符串数组,往往这个时候就有人问,既然是数组
        那为什么在写其它语句的时候并不影响,而对于String[] args传参的具体是怎样的如下:
                1、首先是先编译
                PS F:\JavaSE\Leetcode> javac Test01.java
                2、编译通过之后,在运行的语句后面开始给传参,运行结果虽然是数字,但是实际就是字符串
                PS F:\JavaSE\Leetcode> java Test01 1 2 3
                3、运行结果:[1, 2, 3]
        */
        System.out.println(Arrays.toString(args));
    }
}

 二、可变长参数

当我们在给一个函数传参的时候,如果我们不确定具体传参数的个数的话,可以使用可变长参数(这些参数必须是相同的类型),本质上就是一个数组。注:1、如果一个函数的参数有多个,那么可变长的参数只能放在最后;2、在满足第一个条件下,可变长参数只能出现一次。代码实现如下:

import java.util.*;
class Test01{
    public static void main(String[] args){
        num(1,3,3,5,4);
    }
    public static void num(int ... nums){
        System.out.println(nums.length);
        for(int i=0;i<nums.length;i++){
            System.out.print(nums[i]+" ");
        }
        System.out.println();
    }
}
/*
运行结果:
        5
        1 3 3 5 4
*/

三、foreach循环

foreach格式如下: 

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

说白了就是一个简化之后的for循环。代码实现:


class Test03{
    public static void main(String[] args){
        multiArguments(1);
        multiArguments(1,2,3);
        multiArguments(1,2,3,4,5,6);
    }
    //传入的是不确定个数的int型参数
    public static void multiArguments(int ... nums){
        /*
        for(循环数据类型 循环变量名 : 可迭代对象 ){
            循环体;
        }
	*/
	for(int num:nums){
		System.out.print(num);
	}
	System.out.println();
    }
    /*
        这里的num其实表示的是nums[i]  i∈[0~nums.length)
        只不过在foreach中屏蔽掉了i的具体行为。        
        此外,数组是可迭代对象当中的一种,并且数组可以通过角标访问
        所以目前我们可以认为num等效于nums[i]。
        但是并不代表所有的可迭代对象都有角标支持,
        有些可迭代对象的元素访问顺序是比较复杂的,
        所以为了避免这些复杂就有了foreach循环。        
        foreach有什么样的一个缺点呢?
        它仅仅只能访问元素,不能对元素进行修改。
        num仅仅是nums[i]的一个备份,改num不代表改nums[i]。
        所以说我们如果仅仅访问元素的话,用foreach循环会更简单。
    */
}

四、Arrays工具类

工具类的优点就是减少代码量;假设给你一组打乱的数据,让你排序,在不使用工具类的情况下,代码量能增加许多,如果实用工具类如下: 

import java.util.*;
class Test01{
    public static void main(String[] args){
        int[] num=new int[]{1,3,2,5,4};
        Arrays.sort(num);
        System.out.println(Arrays.toString(num));
    }
}

五、多返回值语句

多返回值处理办法:Java的函数需要一次性返回多个值时,将每一个要返回的值封装在一个数组当中,后期学到集合/映射时也可以解决。 


import java.util.*;
class Test{
    public static void main(String[] args){
        //传入一个坐标点,将坐标点进行移动
        int x = 0;
        int y = 0;
        int[] res = move(x,y,10,10);//x=10,y=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};
    }
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值