jdk新特性——1.5-1.8(主要)新特性

jdk1.5新特性:---->里程碑式的版本

	静态导入:
			可以导入静态方法,可以直接使用,静态导入的信息会优先加载

	可变参数:
			参数类型...
			可以接收任意多个参数
			底层是由数组来实现的,参数值都是存放在对应的数组元素中
			可变参数只能出现在参数列表的最右边,最多只能出现一次
public class StaticImport {

    //JDk1.5新特性
    //支持静态导入的方式---->静态导入的是导入的是静态的类资源,非静态的不能进行导入操作,JDK1.5进行导入的操作。
    public static void main(String[]args){

        System.out.println(Math.random());
        System.out.println(Math.abs(-9));
        System.out.println(Math.floor(2.3));
        Scanner sc=new Scanner(System.in);


        //静态导入的时候必须要将包的导入到类的外面进行导入,所以进行静态导入的时候,需要带上关键字static
        //静态资源将会优先加载到内存中,便于更好的初始化操作
        System.out.println(ceil(3.4));
        System.out.println(cbrt(5.3));
    }
}

	枚举:
			将值一一列举
			列举式枚举常常
			构造方法一定要私有化
			定义属性和方法
			定义抽象方法
			switch表达式类型支持枚举类型
public class EnumDemo1 {
    //测试枚举的结果
    public static void main(String[]args){
        //测试使用枚举的效果
        Season s=Season.spring;
        //利用switch进行测试
        switch(s){
            case spring:System.out.println("春游");
            break;
            case summer:System.out.println("游泳");
            break;
            case autumn:System.out.println("爬山");
            break;
            case winter:System.out.println("休眠");
            break;
            default:System.out.print("睡着了");
        }
    }

}

//枚举类的操作
enum Season{
    //用来列举值的方式  枚举的值的不能进行改变,等效于  public final static Season spring=new Season()
    spring{
        @Override
        public void n() {

        }
    },summer {
        @Override
        public void n() {

        }
    },autumn {
        @Override
        public void n() {

        }
    },winter {
        @Override
        public void n() {

        }
    };

    //声明的变量定义操作--->相当于相等
    Season season;

    //枚举的列举值必须要在首行进行设置,不是首行不行
    //1.可以定义变量
    int num=0;
    //2.可以定义方法
    public void m(){}
    //3.可以定义构造方法---底层通过默认private修饰符进行修饰
    private Season(){
    }

    //4.可以定义抽象方法---->但是类的本身不是抽象类,定义抽象方法的时候必须使用的是内部类的展示
    //4.1定义抽象方法的时候,抽象方法必须要进行实现的操作,所以由枚举的值进行操作
    public abstract void n();


}

//定义类----代表枚举的类,类产生的对象就是具体的季节
//只有四个季节,类只能产生四个季节,所以类只能产生四个对象
/*
class Season{

    //当类在外不不想被访问的时候,将构造方法进行私有化的操作
    private Season(){
        //private保证对象在外不不能进行初始化了
    }

    //创建类的四个对象   --->关键字是被默认进行修饰的化呈现颜色是黄色
    public final static Season spring=new Season();
    public final static Season summer=new Season();
    public final static Season autnmn=new Season();
    public final static Season winter=new Season();

    //1.保证类的对象不能被改变,只有四种方式  final--->最终的声明
    //2.保证类能够被外界进行访问,由于已经构造方法的私有化,所以只能提供静态资源进行操作  static--->s静态属性
    //3.保证外界能够获取当前的对象----public
}

class test{
    //能够进行类的属性的调用操作,静态资源能够被类或者对象进行调用,可以进行获取私有化信息的属性操作
    Season s=Season.spring;
}
*/

方向:数据结构、java编程思想、JVM(深入了解JVM)、线程(内存,通信、锁)、设计模式

jdk1.8新特性:

	-  接口能够定义实体方法---default默认表达式进行修饰符的修饰
	- 接口能够定义静态的实体方法---static关键字进行修饰
	- 出现了Lambda表达式--->针对函数式接口编程思想
 
    - Stream:流式结构
public class StreamDemo1 {

    public static void main(String[]args){

        //创建结合对象
        List<String> list=new ArrayList<String>();

        //添加元素
        list.add("C");
        list.add("Python");
        list.add("PHP");
        list.add("C++");
        list.add("C#");
        list.add("GO");

        //筛选出以C开头的元素
        for(String s:list){
            if (s.startsWith("C")){
                System.out.println(s);
            }
        }

        //使用流结构的返回流是结构
        Stream<String> s = list.stream();
        //开始进行过滤
        s.filter(new Predicate<String>() {
            @Override
            public boolean test(String s) {

                return s.startsWith("C");
            }
        }).forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });

        //使用Lambda表达式
        //str1 表示第一个接口的对象  Predicate对象
        //Str2 表示第二个接口的对象  Consumer对象
       // s.filter(str1->{str1.startsWith("C");})->str2.forEach(str2-> System.out.println(str2)));
    }
}

    - time包---时间和日期可以分开操作
package cn.tedu.jdk;
//jdk1.8新特性的写法

public class LambdaDemo1 {

    public static void main(String[]args){
        //匿名内部类----接口的实现类
        Calc c=new Calc() {
            @Override
            public int max(int x, int y) {
                return x>y?x:y;
            }
        };

        //调用匿名内部类(接口的是是实现类)的重写方法--c代表的是匿名内部类的对象
        c.max(5,6);


        //Lambda表达式--->简便的书写--->(针对函数式接口编程)
        //左边是接口的声明
        //右边是接口方法的声明->{抽象方法的重写的方法体}
        //->是固定的写法--->表示对象执行方法体的执行

        //由前面的抽象方法参数类型可以推导出此时的参数类型,不用写参数类型
        //当方法体中只有一条语句的时候,花括号可以不写,进行各种的书写操作
 /*       Calc c1=(int x,int y)->{return x>y?x:y;};
        c1.max(6,3);*/

        Calc c1=(x,y)->x>y?x:y;
        c1.max(1,2);


    }
}


//接口---计算器
//接口中只有抽象方法的时候---函数式接口(专门的注解---函数式编程(不属于面向对象过程))
@FunctionalInterface
interface Calc{

    //求最大值
    int max(int x,int y);


    //实体方法---默认方法---必须加入default关键字
    public default int m(int i,int j){
        return i+j;
    }



    //实体方法---静态方法
    public static int n(int x,int y){
        return x+y;
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值