1.可变参数
public void add(int... nums){int sum = 0;for(int i=0; i<nums.length; i++){sum += nums[i];}System.out.println(sum); }
注意:当有多种参数时,可变参数放在最后
2.foreach
public void add(int[] nums){int sum = 0;for(int num : nums){sum += num;}System.out.println(sum); }
注意:foreach最早在C#中使用;用于替换for循环
3.静态导入
package xyz.pascall.study; import static java.util.Calendar.*;public class StaticImport {public static void main(String[] args) {System.out.println(DAY_OF_MONTH);} }
注意:在导入包下方法的时候,一定要添加static关键词;使用时直接指定方法名即可
4.泛型
package xyz.pascall.study;import java.util.List; import java.util.Map;public class StaticImport {public static void main(String[] args) {String name = new GenericityDemoOne<String>("小明").getT();System.out.println(name);} }/*** 简单泛型使用* @author zhang** @param <T>*/ class GenericityDemoOne<T>{private T t;public GenericityDemoOne(T t) {this.t = t;}public T getT() {return t;} }/*** 泛型在方法上使用* @author zhang**/ abstract class GenericityDemoTwo{/*** 泛型在方法上声明* @param t*/public static <T extends Object> void show(T t) {System.out.println(t);}/*** 通配符使用,泛型在方法参数上声明* @param list*/public static void show(List<? extends Object> list) {System.out.println(list);}/*** 泛型在抽象方法上使用* @param map*/public abstract <S, I> void show(Map<S, I> map); }
注意:
- 类在定义的时候使用一个标记,该标记为数据类型;
- 泛型解决向下类型转化出错问题;
- 泛型不能为基本数据类型,是能使引用数据类型;
- 通配符“?”,可以配置不同类型的泛型;
- ? extends 类:设置泛型上限(可在 声明和方法参数 上使用)
- ? super 类:设置泛型下限(可在 方法参数 上使用)
- 泛型可以定义类和接口,使用泛型时,注意声明泛型(通配符除外)
- JDK 1.7及以后,在实例化泛型类型时,可以不用在右边声明数据类型(List<String> list = new ArrayList<>();)
5.枚举
package xyz.pascall.study;public class Enumeration {public static void main(String[] args) {Color red = Color.RED;System.out.println(red.getName());} }/*** 枚举* @author zhang**/ enum Color{/*** 定义实例化Color类*/RED("红色"), GREEN("绿色");// 定义枚举属性private String name;private Color(String name) {this.name = name;}public String getName() {return name;} }
注意:
- 枚举类中定义的实例化必须放在类中最上面;
- enum和Enum关系:enum是关键词,Enum是类;用enum定义的枚举=一个类继承了Enum抽象类;
- Enum类的构造方法使用protected关键词修饰,属于构造方法私有化;
- 枚举支持switch,枚举属于高级的多例模式
6.Annotation(JDK 1.5最大特色)
package xyz.pascall.study;/** Annotation中三种基本注解使用*/ public class AnnotationDemo{/*** Override:用于准确覆写父类的方法,否则编译时出错*/@Overridepublic String toString() {// TODO Auto-generated method stubreturn super.toString();}/*** Deprecated:用于声明方法过期*/@Deprecatedpublic void sayHello() {System.out.println("Hello");}/*** SuppressWarnings:用于压制多个警告*/@SuppressWarnings("unused")private String title; }
注意:
- Annotation利用注解的形式来实现程序的不同功能;
- Annotation有三种基本注解:@Override, @Deprecated, @SuppressWarnings