一、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};
}
}