后端开发 \ Java \ 可变参数、for--each、静态导入

可变参数、for--each、静态导入

总点击124
简介:可变参数 在JDK1.5引入可变参数,可变参数就是参数个数任意。 如果要计算任意个整数相加的和,我们的思路是将这些数放在数组里,但是有了可变参数后,不用new数组,直接传入要相加的数值。

可变参数


在JDK1.5引入可变参数,可变参数就是参数个数任意。


如果要计算任意个整数相加的和,我们的思路是将这些数放在数组里,但是有了可变参数后,不用new数组,直接传入要相加的数值。


可变参数定义格式:

public [static] [final] 返回值 方法名称([参数类型 参数名称][参数类型 ... 参数名称]){}

但是 ... 实际上是数组

对于上面任意整型相加分别用数组和可变参数代码如下:

//可变参数

public class ChangeEle

{

public static void main(String[] args)

{

System.out.println(add(new int[]{1,2,3})); //6

System.out.println(add(new int[]{1,2,3,4,5})); //15

//用可变参数

System.out.println(add1(1,2,3,4)); //10 可以传随意个数的整型

System.out.println(add1(1,2,3,4,5,6));//21

System.out.println(add1(new int[]{2,4,6})); //12 可以传数组

}

//形参是整数数组

public static int add(int a[])

{

int result=0;

for(int i=0;i<a.length;i++)

{

result+=a[i];

}

return result;

}

//形参是可变参数

public static int add1(int ... a) //可变参数,本质上是整型数组

{

int result=0;

for(int i=0;i<a.length;i++)

{

result+=a[i];

}

return result;

}

}

注意:

一个方法有且只能有一个可变参数,并且放在方法的最后一个参数

可变参数的本质是数组(如果是字符串 ,则是字符串数组;如果 是整型,则是整型数组)

//传入多类参数,将可变参数放在最后

public static void func(int data,String...str) //字符串数组

for–each


for–each是用于数组与类集的简单输出(如果需要修改,需要用for循环)


可以很好的避免数组越界。


for–each用法:

for(数据类型 临时变量 : 数组(集合)) {

// 循环次数为数组长度,而每一次循环都会顺序取出数组中的一个元素赋值给临时变量

}

如将一个整型数组进行输出:

int[] a=new int[]{1,2,3};

for(int val : a) //只要在数组长度里,将数组a里元素赋给val

{

System.out.println(val); //简单输出

}

静态导入:

假如定义了一个类Im,这个类里定义的都是静态方法,静态属性

package CODE.泛型;

public class Im

{

public static int add(int a,int b)

{

return a+b;

}

public static int sub(int a,int b)

{

return a-b;

}

}

在另一个包内需要调用package CODE.泛型包里的静态方法:首先需要导入Im类,然后用类名调用静态方法,代码如下:

package CODE.高级开发之泛型;

import CODE.泛型.Im;

public class ChangeEle

{

public static void main(String[] args)

{

System.out.println(Im.add(3,4)); // 通过导入Im类,用Im类名调用导入的静态方法

System.out.println(Im.sub(5,1));

}

}

但是在JDK1.5后,如果一个类里都是静态方法,通过静态导入后,可以直接调用该类的静态方法,这样就好比像在主类中定义的方法那样,可以被主方法直接调用。代码如下:

package CODE.高级开发之泛型;

import static CODE.泛型.Im.*; //导入Im类里的所有静态方法和属性

public class ChangeEle

{

public static void main(String[] args)

{

System.out.println(add(3,4)); // 静态导入后,直接调用静态方法

System.out.println(sub(5,1));

}

}

但是静态导入在实际开发中不建议使用。

意见反馈 常见问题 官方微信 返回顶部