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

可变参数
在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));
    }
}

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

猜你喜欢

转载自blog.csdn.net/sophia__yu/article/details/83745120
今日推荐