Java高级语法

lambda表达式

  1. lambda表达式是接口或者说是接口函数的简写
  2. lambda表达式的基本写法是:【参数 -> 结果】。其中参数可以使()或一个参数或多个参数,结果是指表达式或语句或{语句}
    1. 如 (String s)  ->s.length()
    2. 如 x->x*x
    3. () -> {System.out.println("aaa");}

在java中它实际上是“匿名类的一个实例”,大体上相当于其他语言的“匿名函数”或“函数指针”

Runnable doIt = new Runnable(){
    public void run(){
        System.out.println("aaa");
    }
}
new Thread(doIt).start();

上面是线程执行匿名类的写法,可以简写成下面的方式

Runnable doIt = () -> System.out.println("aaa");
new Thread(doIt).start();
new Thread( () -> System.out.println("aaa");).start();

由于Lambda只能表示一个函数,所以能写成Lambda的接口要求包含且最多只能有一个抽象函数,这样的接口可以(但不强求)用注记【@FunctionalInterface】来表示,称为函数式接口

 

基本类型的包装类

  1. 它将基本类型包装成Object引用类型
  2. 如将int基本类型包装成Interger
  3. 共8类:Boolean,Byte,Short,Character,Interger,Long,Float,Double
Interger i = new Interger(10);

装箱:包装类使用的便捷方式

Interger I = 10;    // 实际译为:Interger I = Interger.valueOf(10);

拆箱:将包装类的值还原到基本类型

int i = I;    // 实际译为:int i = I.intValue();

主要方便用于集合,如

Object [] ary = {1, "aaa"};

枚举

  1. 枚举是一种特殊的class类型,在简单的情况下,用法与其他语言的enum相似
    1. enum Light {Red, Yellow, Green};
    2. Light light = Light.Red;
  2. 实际上它生成了 class Light extends java.lang.Enum

注解

  1. 又称注记、标记、标注、注释(不同于comments),是在各种语法要素上加上附加信息,以供编译器或其他程序使用
  2. 所有的注解都是java.lang.annotation.Annotation的子类
  3. 常见的注解,如:
    1. @Override    表示覆盖父类的方法
    2. @Deprecated    表示过时的方法
    3. @SuppressWarnings    表示让编译器不产生警告  

字符串内部化

String对象判断相等时,一定不要用==,要用equals来判断对象里值是否相等。但是对于字符串常量Java会对其作内部化,相同的字符串常量是==的

String hello = "hello", lo = "lo";
System.out.println(hello == ("hel" + "lo"));    // true
System.out.println(hello == ("hel" + lo));    // false
System.out.println(hello == ("hel" + lo).intern());    // true

 

 

 

你可能感兴趣的:(Java)