package jdk.jdk5;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
/**************************************
* 静态导入(static import)
*静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名.
*import static package.className.staticField/staticMethod;
**********************************/
public class JDK5 {
/*************泛型(Generic)******************/
/************
* 增强了 java 的类型安全,可以在编译期间对容器内的对象进行类型检查,在运行期不必进行类型的转换。
* 而在 j2se5 之前必须在运行期动态进行容器内对象的检查及转换
***********/
//1.<ItemType>
@SuppressWarnings("serial")
public class ElementList<Element> extends LinkedList<Element> {
public void swap(int i, int j){
Element temp = this.get(i);
this.set(i, this.get(j));
this.set(j, temp);
}
}
//2.<T, V>
@SuppressWarnings("serial")
public class GenericList<T> extends LinkedList<T> {
public void swap(int i, int j){
T temp = this.get(i);
this.set(i, this.get(j));
this.set(j, temp);
}
}
//3.受限泛型是指类型参数的取值范围是受到限制的 . extends 关键字不仅仅可以用来声明类的继承关系 ,
//也可以用来声明类型参数 (type parameter) 的受限关系
public class LimitedGeneric<T extends Number> {
public double getDoubleValue(T obj){
return obj.doubleValue();
}
}
//4.泛型的通配符 "?"
public static void print(List<?> list){
String str="";
for(Iterator it=list.iterator();it.hasNext();){
str+=it.next();
}
System.out.println(str);
}
/*********************增加循环*****************************/
public static void forCycle(){
LinkedList<String> list = new LinkedList<String>();
list.add("Hi");
list.add("everyone!");
for (String s : list){
System.out.println(s);
}
}
public static void printMap(Map map) {
for (Object key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
//不用for时
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + ":" +value);
}
}
/*********************可变参数 (Variable Arguments) ******/
public static int add(int ... args){
int total = 0;
for (int i = 0; i < args.length; i++){
total += args[i];
}
return total;
}
/********************枚举类(Enumeration Classes)***********/
public enum Colors {Red, Yellow, Blue, Orange, Green, Purple, Brown, Black}
public enum Size{
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private Size(String abbreviation) { this.abbreviation = abbreviation; } //参数为缩写值
public String getAbbreviation() { return abbreviation; }
private String abbreviation;
}
public enum Operation {
PLUS { double eval(double x, double y) { return x + y; } },
MINUS { double eval(double x, double y) { return x - y; } },
TIMES { double eval(double x, double y) { return x * y; } },
DIVIDE { double eval(double x, double y) { return x / y; } };
// Do arithmetic op represented by this constant
abstract double eval(double x, double y);
}
public static void testEnumType(){
System.out.println(Colors.Red);
//在JDK5.0之前我们只能通过JOptionPane.showInputDialog进行输入,
//但在5.0中我们可以通过类Scanner在控制台进行输入操作
Scanner in = new Scanner(System.in);
System.out.print("Enter a size: (SMALL, MEDIUM, LARGE, EXTRA_LARGE) ");
String input = in.next().toUpperCase();
Size size = Enum.valueOf(Size.class, input);
System.out.println("size=" + size);
System.out.println("abbreviation=" + size.getAbbreviation());
if (size == Size.EXTRA_LARGE){
System.out.println("Good job--you paid attention to the _.");
}
System.out.println(Operation.PLUS.eval(5.0, 1.25));
}
/******
* 在JDK5.0中引入了StringBuilder类,该类的方法不是同步(synchronized)的,
* 这使得它比StringBuffer更加轻量级和有效。
*****/
public StringBuilder hql=new StringBuilder();
/*********************格式化I/O(Formatted I/O) ************/
public static void formatIO(){
int a = 150000, b = 10;
float c = 5.0101f, d = 3.14f;
System.out.printf("%4d %4d%n", a, b);
System.out.printf("%x %x%n", a, b); //十六进制
System.out.printf("%3.2f %1.1f%n", c, d);
System.out.printf("%1.3e %1.3e%n", c, d*100);
System.out.println(new Formatter().format("%08d %s \n", 5,"string").toString());
}
/*************java.util.concurrent 线程池*****************/
public class TestScheduledThread{
/**ScheduledExecutorService提供了按时间安排执行任务的功能,它提供的方法主要有:
schedule(task,initDelay):安排所提交的Callable或Runnable任务在initDelay指定的时间后执行。
scheduleAtFixedRate():安排所提交的Runnable任务按指定的间隔重复执行
scheduleWithFixedDelay():安排所提交的Runnable任务在每次执行完后,等待delay所指定的时间后重复执行。
**/
@SuppressWarnings("unchecked")
public void runScheduledThread() throws InterruptedException,ExecutionException{
//初始化一个ScheduledExecutorService对象,这个对象的线程池大小为2。
ScheduledExecutorService service=Executors.newScheduledThreadPool(2);
Runnable task1=new Runnable(){
int count=0;
public void run(){
System.out.println(new Date()+" beep"+(++count));
}
};
//直接执行,以后间隔1秒执行一次
final ScheduledFuture future1=service.scheduleAtFixedRate(task1,0,1,TimeUnit.SECONDS);
final ScheduledFuture future2=service.scheduleAtFixedRate(new Runnable(){
public void run(){
System.out.println("future2 runing!");
}
},1,2,TimeUnit.SECONDS);
ScheduledFuture future3=service.schedule(new Callable(){
public String call(){
future1.cancel(true);//取消任务
future2.cancel(true);
return "taskcancelled!";
}
},10,TimeUnit.SECONDS);
System.out.println(future3.get());
service.shutdown();//关闭服务
}
}
public static void main(String[] args){
JDK5 jdk5 = new JDK5();
/* JDK5.GenericList<String> list= jdk5.new GenericList<String>();
list.add("hello!");
list.add("world!");
print(list);
list.swap(0, 1);
print(list);
JDK5.LimitedGeneric<Integer> number = jdk5.new LimitedGeneric<Integer>();
System.out.println(number.getDoubleValue(2));
forCycle();
System.out.println(add(1,2,3,4,5));
formatIO();
testEnumType();
*/
JDK5.TestScheduledThread test = jdk5.new TestScheduledThread();
try {
test.runScheduledThread();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
下面我们将详细探讨JDK 5.0的主要特性: 1. **类型安全的枚举(Enums)**:JDK 5.0引入了枚举类型,使得枚举成为一种独立的、类型安全的类。枚举可以包含方法和常量,增加了代码的可读性和安全性,避免了传统常量类...
JDK5.0是Oracle公司于2004年发布的一个重要版本,引入了许多新特性,对Java编程语言做了重大改进,提升了开发效率。要下载JDK5.0,首先访问Oracle的官方网站历史版本页面,或者通过互联网上的存档链接找到该版本的...
### JDK 5.0新特性详解 #### 一、自动装箱与自动拆箱 在JDK 5.0中,引入了一个非常实用的功能——自动装箱和自动拆箱,这极大地方便了开发者在处理基本数据类型和它们对应的封装类之间的转换。以前,我们可能需要...
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
《良葛格JDK5.0学习笔记》是一份详细记录了Java开发工具包(JDK)5.0版本核心特性和技术要点的学习资料。这份笔记涵盖了Java编程语言的重要更新和改进,对于深入理解JDK5.0及其对Java开发的影响至关重要。 1. **...
在Java开发领域,JDK 5.0是一个重要的里程碑,引入了多项显著的新特性,极大地提升了编程效率和代码质量。本文将深入探讨其中的四个关键特性:常量、枚举、for each循环(也称为增强型for循环)以及反射。 首先,让...
在JDK 5.0中,Java引入了一系列重要的新特性,极大地提升了开发效率和代码的可读性。这些新特性包括自动包装和解包、增强的for循环、可变参数方法、printf风格的格式化输出、枚举类型以及静态导入等。 首先,自动...
Java JDK 5.0是Java开发的一个里程碑版本,它引入了许多重要的新特性和改进,极大地提升了开发效率和代码质量。良葛格的Java JDK 5.0学习笔记是一份宝贵的资源,适合初学者和有经验的开发者回顾这个版本的关键概念。...
JDK 5.0是这个平台的一个重要版本,它引入了许多创新特性,极大地提升了开发效率和代码质量。 一、泛型(Generics) JDK 5.0的最大亮点之一就是泛型的引入。泛型允许在定义类、接口和方法时指定类型参数,从而提高...
在Java编程语言中,JDK 5.0的发布带来了一系列重要的新特性,极大地提升了开发效率和代码质量。其中,枚举(Enum)是引入的一个关键特性,它为表示固定集合中的常量提供了强大而安全的支持。这篇博客将深入探讨JDK ...
Java JDK 5.0是Java发展历程中的一个重要里程碑,它引入了许多新特性,极大地提升了开发效率和代码质量。这里,我们将详细探讨这个版本的关键知识点,帮助初学者更好地理解和掌握Java编程。 1. **自动类型推断(var...
JDK 5.0是一个重要的版本,它在2004年发布,引入了许多创新特性,对Java编程语言进行了重大改进,提升了开发效率。 1. **泛型(Generics)**:JDK 5.0引入了泛型,允许开发者在类、接口和方法中定义类型参数,增强...
JDK5.0是Java开发的一个重要里程碑,它引入了11个主要的新特性,极大地提升了编程效率和代码安全性。以下是对这些特性的详细说明: 1. 泛型(Generic) 泛型的引入是为了解决类型安全问题,避免在运行时进行不必要...
JDK 5.0是一个重要的里程碑,它引入了许多创新特性,极大地提升了Java的效率和可维护性。这篇文档将详细解析JDK 5.0中文版API,帮助初学者和有经验的开发者更好地理解和利用这一强大的资源。 ### 类库概述 JDK 5.0...
在深入探讨JAVA(JDK5.0)中数组的特性和应用之前,我们首先需要认识到数组在Java中的地位和作用远超于传统编程语言中纯粹的数据集合概念。数组在Java中被视为对象,这一特性不仅简化了代码的编写,还提供了更多的功能...
Java JDK 5.0,又称为JDK 1.5,是Java开发工具包的一个重要升级,它引入了大量的新特性和改进,极大地提升了Java编程的...而"jdk5.0新特征.txt"则可能包含了对所有新特性的详细描述和使用示例,是深入学习的好资源。
在`JDK5.0新特性 (2)——反射.doc`中,你可能会学习到如何使用`java.lang.Class`对象来获取类信息,以及如何使用`java.lang.reflect`包中的`Constructor`、`Method`和`Field`类来操作类的构造器、方法和字段。...
Java JDK 5.0是Java发展历程中的一个重要里程碑,它引入了许多新特性,极大地提升了开发效率和代码质量。在这个"良葛格Java JDK 5.0学习笔记ch05"中,我们将深入探讨其中的关键知识点。 一、泛型 Java 5.0引入了...
JDK5.0是Oracle公司发布的一个重要版本,它在Java语言的发展史上占有重要的地位,引入了许多创新特性,极大地提升了开发效率和代码的可读性。 一、JDK5.0的关键特性 1. 泛型(Generics):这是JDK5.0最显著的改进...
**JDK 5.0是Java开发工具集(Java Development Kit)的一个重要版本,它引入了许多创新特性,显著提升了Java编程的效率和灵活性。以下是这个版本的一些核心新特性:** ### 1. **泛型(Generics)** 泛型允许在类、...