前面我们讲了那么多的内容,难免有遗漏之处,这节我们就遗漏之处做一个补充,一起来看看吧!
-
String[ ] args
它主要用在当我们执行Java程序(Java 字节码文件)的时候,可以指定一些参数。
class Test01{
public static void main(String[] args){
System.out.println(args.length);
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
上面的代码,在主函数中我们直接输出了args的长度,然后对args进行了遍历,输出它当中每一个元素。正如上面所说,String[ ] args它主要用在当我们执行Java程序(java 字节码文件)的时候,可以指定一些参数。所以我们在终端里面首先编译,然后在运行的时候传入数字1 2 3,最后发现打印出了传入参数的长度、内容。这就是它的用法。
另外说一下,这里面args的名称是可以改变的,因为它只是一个参数名。
-
可变长参数
当我们在给一个函数传参的时候,如果我们不确定具体要传参数的个数的话,这个时候就可以使用可变长参数(这些参数必须是相同的类型)。其实它本质上就是一个数组。
class Test02{
public static void main(String[] a){
multiArguments(1);
multiArguments(1,2,3);
multiArguments(1,2,3,4,5,6);
}
//传入的是不确定个数的int型参数
public static void multiArguments(int ... nums){
//System.out.println(nums.length);
for(int i = 0;i < nums.length;i++){
System.out.print(nums[i] + " ");
}
System.out.println();
}
}
在主函数当中调用了三次multiArgiments方法,第一次传入了一个参数1,第二次传入了三个参数1、2、3,第三次传入了六个参数1、2、3、4、5、6,所以最后打印出来的分别是1/123/123456。这就是可变长参数的用法,
PS:1.一个参数列表当中只能有一个可变长参数,如果出现多个的话,首先编译就会出错;
2.如果可变长参数和固定参数同时存在的话,那么可变长参数必须在参数列表的最后面。
-
foreach循环
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循环会更简单。
*/
}
如上图运行结果所示,我们使用foreach循环还是可以打印出来结果,它其实是一个简化过后的for循环。
-
Arrays类
Arrays类是关于数组的工具类,而我们之前学过的Math、Scanner、String,这些都不是工具类。来看一些实例。
import java.util.Arrays;
class Test04{
public static void main(String[] args){
int[] arr = {1,3,5,7,9,2,4,6,8};
//1.static void sort(int[] a)这个方法是对指定的数组按数字升序进行排序。
Arrays.sort(arr);
/*2.static int binarySearch(int[] a, int key)
这个方法是使用二分搜索法来搜索指定的int型数组,以获得指定的值。
*/
System.out.println(Arrays.binarySearch(arr,8));//7
/*3.static int[] copyOf(int[] original, int newLength)
这个方法是复制指定的数组,截取或用0填充(如有必要),以使副本具有指定的长度。
*/
arr = Arrays.copyOf(arr,arr.length+1);
//4.static String toString(int[] a)这个方法是返回指定数组内容的字符串表示形式。
System.out.println(Arrays.toString(arr));//[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
}
}
上面我们介绍了4种方法,具体功能都已写在代码中。
-
多返回值处理
Java的函数仅仅只能返回单一的值,如果需要一次性返回多个值,我们就需要将多个值封装在一个数组当中即可,后面也会学到集合/映射。
import java.util.Arrays;
class Test05{
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);//x=10
System.out.println("y=" + y);//y=10
}
//如果是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};
}
}
好了,这次的额外补充知识我们就说到这里,拜拜啦!