JDK 1.5新特性

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:用于准确覆写父类的方法,否则编译时出错
     */
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return super.toString();
    }

    /**
     * Deprecated:用于声明方法过期
     */
    @Deprecated
    public void sayHello() {
        System.out.println("Hello");
    }

    /**
     * SuppressWarnings:用于压制多个警告
     */
    @SuppressWarnings("unused")
    private String title;
}

注意:

  • Annotation利用注解的形式来实现程序的不同功能;
  • Annotation有三种基本注解:@Override, @Deprecated, @SuppressWarnings

原文地址:https://www.cnblogs.com/pascall/p/9796888.html

时间: 2024-10-17 01:17:04

JDK 1.5新特性的相关文章

JDK各版本新特性总结

JDK各版本新特性总结 JDK 1.7 新特性  1.switch中可以使用string字符串了 2.<>的运用, List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断 3.语法上支持集合,而不一定是数组 final List<Integer> piDigits = [ 1,2,3,4,5,8 ]; 对Java集合(Collections)的增强支持,摒弃了Java集合接口的实现类,如:ArrayLi

JDK 5 ~ 10 新特性倾情整理!

JDK 5 ~ 10 新特性倾情整理! 最近连 JDK11都在准备发布的路上了,大家都整明白了吗?也许现在大部分人还在用6-8,8的新特性都没用熟,9刚出不久,10-11就不用说了. 为了大家对JDK有一个全面的了解,下面我为大家整理了JDK5~10的所有关键新特性! JDK5新特性 自动装箱与拆箱 枚举 静态导入 可变参数(Varargs) 内省(introspector) 泛型(Generic) For-Each循环 JDK6新特性 Desktop类和SystemTray类 使用JAXB2来

JDK 1.5 新特性

前言:为什么会出现新特性呢?   新的技术的出现就是为了解决老的问题,Java语言随着自身的不断发展,对那些不利于提高开发率的技术进行了改进. 1.静态导入 静态导入可以导入静态方法,这样就不必写类名而可以直接省略类名调用静态方法了. 语法:import static 包名.类名.静态方法; 也可以直接导入某个类中的所以静态方法. 语法:import static 包名.类名.*; Java 5.0 代码示例: 1 package com.tolvgx.day01; 2 import stati

JDK各版本新特性!

1.JDK1.5 新特性 1.自动装箱与拆箱:自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中.自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法.自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象.自动拆箱,只需将该对象值赋给一个基本类型即可.java——类的包装器类型包装器有:Double,Float,Long,Integer,Short,Char

JDK 1.8新特性Lambda入门

网上关于java lambda的例子很多,但是这些五花八门的例子很不常见不常用,最后导致初学者望而却步,其实我们抓住lambda的本质之后,会发现lambda还是很好理解的.毕竟,java8设计lambda的初衷是给开发者提供便利,而不是制造障碍. lambda表达式本质是匿名方法,下面是一些lambda表达式: (int x, int y) -> x + y () -> 42 (String s) -> { System.out.println(s); } 第一个lambda表达式接收

JDK 1.8 新特性之Date-Time API

来源:请点击查看 1.8之前的日期类: 线程不安全:java.util.Date 这个类线程不安全,而且所有日期类都是可变的. 时间处理麻烦:默认的开始日期从1900年,不支持国际化,不提供时区支持,所以经常算出来的时间不是中国时间. 设计不好:java初学者接触到导包的时候,总会导错包,比如java.util和java.sql包中都有日期类,类名却是一样的. 日期和时间 Instant 本质上是一个数字时间戳.可以从a中检索当前的Instant Clock.这对于某个时间点的日志记录和持久性非

JDK 1.7 新特性

1.对Java集合(Collections)的增强支持 在JDK1.7之前的版本中,Java集合容器中存取元素的形式如下: 以List.Set.Map集合容器为例: 在JDK1.7中,摒弃了Java集合接口的实现类,如:ArrayList.HashSet和HashMap.而是直接采用[].{}的形式存入对象,采用[]的形式按照索引.键值 来获取集合中的对象,如下: 2.在Switch中可用String 在之前的版本中是不支持在Switch语句块中用String类型的数据的,这个功能在C#语言中早

JDK各个版本的新特性jdk1.5-jdk8

JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.今天先为大家介绍一下JDK1.5版本到JDK1.7版本的特性.希望能给予帮助. JDK1.5新特性: 1.自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue(

JDK各个版本的新特性jdk1.5-jdk8(转)

原文:JDK各个版本的新特性jdk1.5-jdk8 JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.今天先为大家介绍一下JDK1.5版本到JDK1.7版本的特性.希望能给予帮助. JDK1.5新特性: 1.自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱的过程:每当需要一个值时,被装箱对象中的值