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)