JavaSE——JDK1.5新特性

1.可变参数

要求:要设计一个方法用于计算任意参数的整数的相加结果,早期实现(数组):

public class Test{
    public static void main(String[] args) {
        System.out.println(add(new int[]{1}));
        System.out.println(add(new int[]{1,2,3}));
        System.out.println(add(new int[]{1,4,6}));
        System.out.println(add(new int[]{1,1,3,4,4}));
    }

    public static int add(int[] data){
        int result = 0;
        for (int i = 0; i < data.length; i++) {
            result += data[i];
        }
        return result;
    }
}

JDK1.5之后追加了可变参数概念,定义格式如下:

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

方法的可变参实现上面的要求:

public class Test{
    public static void main(String[] args) {
        System.out.println(add(1,3,4));//随意传递的内容,随意个数
        System.out.println(add(new int[]{1,2,3}));//可变参数可以接收数组
        System.out.println(add(new int[]{1,4,6}));
        System.out.println(add(new int[]{1,1,3,4,4}));
    }

    public static int add(int...data){
        int result = 0;
        for (int i = 0; i < data.length; i++) {
            result += data[i];
        }
        return result;
    }
}

可变参的本质上是数组,一个方法中只允许一个可变参,并且可变参一定是方法最后一个参数,传递多类参数示例:

public class Test{
    public static void main(String[] args) {
        System.out.println(add("Hello"));
        System.out.println(add("Hello",1,4,5,6));
        System.out.println(add("Hello",new int[]{1,2,3}));
    }
    public static int add(String msg,int ... data) {
        int result = 0 ;
        for (int i = 0; i < data.length; i++) {
            result += data[i] ;
        }
        return result ;
    }
}

2.foreach(增强型for循环)

原始数组的输出使用for循环完成,示例如下:

public class Test{
    public static void main(String[] args) {
        int[] data = new int[] { 1, 2, 3, 4, 5 }; // 原始数组
        for (int i = 0; i < data.length; i++) {
            System.out.println(data[i]); // 通过循环控制索引下标
        }
    }
}

foreach语法:

for(数据类型 临时变量 : 数组(集合)){
	//循环次数为数组长度,而每一次循环都会顺序取出数组中的一个元素赋值给临时变量
}

示例如下:

public class Test {
    public static void main(String[] args) {
        int[] data = new int[] { 1, 2, 3, 4, 5 }; // 原始数组
        for (int i : data) { // 将数组中每个元素赋值给i
            System.out.println(i); // 这种循环避免了角标的问题
        }
    }
}

3.静态导入

MyMath类:

package www.xpu.java.util;
public class MyMath {
    public static int add(int x, int y) {
        return x + y;
    }
    public static int sub(int x, int y) {
        return x - y;
    }
}

首先导入MyMath类,然后通过MyMath类调用所有静态
方法:

package www.xpu.java.test;
import www.xpu.java.util.MyMath;

public class TestDemo {
    public static void main(String[] args) {
        System.out.println(MyMath.add(10, 20));
        System.out.println(MyMath.sub(30, 10));
    }
}

从JDK1.5开始,将一个类的所有静态域(包括静态属性方法) ,全部导入到使用类中,此时的调用属性和方法不再需要类名,可以被主方法直接调用:

package www.xpu.java.test;
import static www.xpu.java.util.MyMath.*; // 静态导入
public class TestDemo {
    public static void main(String[] args) {
        System.out.println(add(10, 20));
        System.out.println(sub(30, 10));
    }
}

实际上这种方法效率不高,开发中不建议使用

猜你喜欢

转载自blog.csdn.net/LiLiLiLaLa/article/details/91348122