javase的一些新特性

  • 静态导入
  • 可变长参数
  • 格式化输入输出
  • 枚举
  • 注解
静态导入

通过静态导入使用一个类型静态成员的时候,可以直接使用静态成员。不需要类名。 但降低了程序的可读性

import static java.lang.Math.*
 system.out.println(PI);
可变长参数
  • 一个方法中最多有一个可变长参数
  • 可变长参数必须作为方法的最后一个参数
  • 可变长参数其本质实际上就是数组,但比定义数组更加灵活

     public void show(String.....s){
        system.out.println("方法1");
        }
    
    
    public  void show(String s,String....s){
        system.out.println("方法2");
         }
    
格式化输入输出

String.format方法才是非常实用的,尤其在拼装字符串时

  String name="张三";
  int    age=20;
  system.out.println("有个学生叫%S,名字叫%d",name,age);
   String ms=String.format("有个学生叫%s,名字叫%d","王五",20);
   system.out.println(ms);
  • 有个学生名字为张三,年龄为20岁

  • 有个学生名字为王五,年龄为20岁。

枚举
  • 枚举 父类 Enum ,不允许实例化,不能被继承
  • 定义 public enum myenum{ }
  • Enum.valueOf 用来获取摸个枚举里面是否存在某个枚举值,如果没有,抛出异常
package com.oracle.NewTeacher2016_4_17;

public enum Myenum implements MyInl {
   a {
    @Override
    public void k() {
         System.out.println("A的枚举抽象方饭");        
    }

    @Override
    public void MyInls() {
        // TODO Auto-generated method stub

    }
},b(45) {
    @Override
    public void k() {
        System.out.println("B的枚举抽象方饭");        

    }

    @Override
    public void MyInls() {
        // TODO Auto-generated method stub

    }
},c {
    @Override
    public void k() {
        System.out.println("c的枚举抽象方饭");        

    }

    @Override
    public void MyInls() {
        // TODO Auto-generated method stub

    }
};//类似类的静态变量/类似类的构造方法
    //构造方法
Myenum() {
        System.out.println("枚举无参构造方法");
    }
Myenum(int id){
    System.out.println("枚举有参构造方法");

}
    //枚举的属性
    int id;
    String name;
    //枚举的方法
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }


    //输出id的show方法
    public void show() {
        System.out.println(this.id+this.name());
    }

     //抽象方法
    public abstract void k();

}
  • 构造方法有多少个变量,定义的a,b,c就得有多少个变量
  • 枚举使用抽象方法/接口时,定义的a,b,c就得实现该方法/接口
  • 枚举类型默认是final修饰符修饰,也是不能被别的类继承
public class Test {

    //main函数测试枚举
public static void main(String... args) {
      Myenum m=Myenum.b;
      m.setId(100);
      m.setName("hello");
      m.show();

}
}
注解
  • 注解 给程序识别的
  • @Override标识该方法是重写父类的某个方法
  • @Deprecated标记某个过时的类或方法
  • @SupperessWarnings 阻止编译器发出某些警告信息
  • 注解的定义 @interface 注解的名字
  • 注解的父类、自定义注解

  • 元注解(只能用在注解前面的注解)

  • @Target(ElementType.METHOD)--控制当前注解的使用范围
  • @Retention(RetentionPolicy.SOURCE)--表示注解运行时候的状态
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

public class Test3 {
public static void main(String[] args) {
    int id ;

}
@MyAnl
public void a (){

}
}
//注解
@Target(value={ElementType.TYPE,ElementType.METHOD})
@Retention(value=RetentionPolicy.RUNTIME)
@interface MyAnl{

}

kxind

性别:男. 敢于尝试 爱折腾的死宅程序猿. https://github.com/kxinds