JDK1.5.0 新特性

合集下载

8-jav_1.5新特新

8-jav_1.5新特新
1、jdk1.5出现的新特性---->增强for循环
增强for循环的作用: 简化迭代器的书写格式。(注意:增强for循环的底层还是使用了迭代器遍历。)
增强for循环的适用范围: 如果是实现了Iterable接口的对象或者是数组对象都可以使用增强for循环。
增强for循环的格式:
for(数据类型 变量名 :遍历的目标){
//集合: 集合是可以存储任意对象类型数据的容器。
ArrayList list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
//自动装箱: 自动把java的基本数据类型数据转换成对象类型数据。
3. 普通for循环与增强for循环的区别:普通for循环可以没有变量的目标,而增强for循环一定要有变量的目标。
//注意: Map集合没有实现Iterable接口,所以map集合不能直接使用增强for循环,如果需要使用增强for循环需要借助于Collection的集合。
2、dk1.5新特性之------->可变参数
int temp = 10; //基本数据类型
Integer b =temp; //a存储的值赋予给b变量。 //自动拆箱: 把引用类型的数据转换成基本类型的数据
4、jdk1.5新特性之-----枚举
问题:某些方法所接收的数据必须是在固定范围之内的,
解决方案: 这时候我们的解决方案就是自定义一个类,然后是私有化构造函数,在自定义类中创建本类的对象对外使用。
System.out.println("把整数转换成对应 的字符串:"+Integer.toString(i));

Java枚举(enum)详解

Java枚举(enum)详解

Java枚举(enum)详解Java 枚举知识点概念enum的全称为 enumeration,是 JDK 1.5 中引⼊的新特性。

在Java中,被enum关键字修饰的类型就是枚举类型。

形式如下:enum Color { RED, GREEN, BLUE }如果枚举不添加任何⽅法,枚举值默认为从0开始的有序数值。

以 Color 枚举类型举例,它的枚举常量依次为RED:0,GREEN:1,BLUE:2。

枚举的好处:可以将常量组织起来,统⼀进⾏管理。

枚举的典型应⽤场景:错误码、状态机等。

枚举类型的本质尽管enum看起来像是⼀种新的数据类型,事实上,enum是⼀种受限制的类,并且具有⾃⼰的⽅法。

创建enum时,编译器会为你⽣成⼀个相关的类,这个类继承⾃ng.Enum。

ng.Enum类声明public abstract class Enum<E extends Enum<E>>implements Comparable<E>, Serializable { ... }枚举的⽅法在enum中,提供了⼀些基本⽅法:values():返回 enum 实例的数组,⽽且该数组中的元素严格保持在 enum 中声明时的顺序。

name():返回实例名。

ordinal():返回实例声明时的次序,从0开始。

getDeclaringClass():返回实例所属的 enum 类型。

equals():判断是否为同⼀个对象。

可以使⽤==来⽐较enum实例。

此外,ng.Enum实现了Comparable和Serializable接⼝,所以也提供compareTo()⽅法。

例:展⽰enum的基本⽅法public class EnumMethodDemo {enum Color {RED, GREEN, BLUE;}enum Size {BIG, MIDDLE, SMALL;}public static void main(String args[]) {System.out.println("=========== Print all Color ===========");for (Color c : Color.values()) {System.out.println(c + " ordinal: " + c.ordinal());}System.out.println("=========== Print all Size ===========");for (Size s : Size.values()) {System.out.println(s + " ordinal: " + s.ordinal());}Color green = Color.GREEN;System.out.println(<span class="hljs-string">"green name(): "</span> + ());System.out.println(<span class="hljs-string">"green getDeclaringClass(): "</span> + green.getDeclaringClass());System.out.println(<span class="hljs-string">"green hashCode(): "</span> + green.hashCode());System.out.println(<span class="hljs-string">"green compareTo Color.GREEN: "</span> + pareTo(Color.GREEN));System.out.println(<span class="hljs-string">"green equals Color.GREEN: "</span> + green.equals(Color.GREEN));System.out.println(<span class="hljs-string">"green equals Size.MIDDLE: "</span> + green.equals(Size.MIDDLE));System.out.println(<span class="hljs-string">"green equals 1: "</span> + green.equals(<span class="hljs-number">1</span>));System.out.format(<span class="hljs-string">"green == Color.BLUE: %b\n"</span>, green == Color.BLUE);}输出=========== Print all Color ===========RED ordinal: 0GREEN ordinal: 1BLUE ordinal: 2=========== Print all Size ===========BIG ordinal: 0MIDDLE ordinal: 1SMALL ordinal: 2green name(): GREENgreen getDeclaringClass(): class org.zp.javase.enumeration.EnumDemo$Colorgreen hashCode(): 460141958green compareTo Color.GREEN: 0green equals Color.GREEN: truegreen equals Size.MIDDLE: falsegreen equals 1: falsegreen == Color.BLUE: false枚举的特性枚举的特性,归结起来就是⼀句话:除了不能继承,基本上可以将enum看做⼀个常规的类。

JPS论文资料之系统详细配置方法

JPS论文资料之系统详细配置方法

系统详细配置方法1、安装jdk1.5.02、如果是B/S结构程序,请复制jakarta-tomcat-5.0.28这个文件夹下的所有文件到你的E盘根目录下(不是固定的)3、配置环境变量:(1)我的电脑—右键—属性—高级—环境变量—系统变量—新建,变量名:JAVA_HOME ,注意为大写,变量值:你所安装JDK的根目录,如:C:\ProgramFiles\Java\jdk1.5.0;(2)我的电脑—右键—属性—高级—环境变量—系统变量—新建,变量名:CLASSPATH ,注意为大写,变量值:你所安装JDK的根目录下的lib文件夹,如:C:\ProgramFiles\Java\jdk1.5.0\lib\tools.jar;.注意后面以分号和一个点结尾;(3)修改path变量:我的电脑—右键—属性—高级—环境变量—系统变量—选择path,点编辑,在变量值最后增加一个分号,增加你安装的JDK的根目录下的bin文件夹:C:\Program Files\Java\jdk1.5.0\bin;(4)如果是B/S结构程序,我的电脑—右键—属性—高级—环境变量—系统变量—新建,变量名:TOMCAT_HOME ,注意为大写,变量值:你所安装jakarta-tomcat-5.0.28的根目录,如:E:\jakarta-tomcat-5.0.28;4、复制sqlserver-driver文件夹下的所有文件到C:\ProgramFiles\Java\jdk1.5.0\jre\lib\ext\目录下,否则重装;5、在命令行分别输入java 、javac,如无错误提示,安装完成;6、如果是B/S结构程序,双击E:\jakarta-tomcat-5.0.28\bin\startup.bat,如果出现黑色TOMCAT界面,安装成功,否则重装;7、安装SQLServer2000数据库,一路默认,注意不要选择域用户,设置sa用户的密码为123;8、安装SQLServer2000数据库SP3补丁,当提示已成功传递文件之后,找到安装的目录,双击setup.bat,看提示安装,基本默认;9、附加数据库:打开开始—程序—Microsoft SQLServer—服务管理器,启动数据库,开始—程序—Microsoft SQLServer—企业管理器,在左侧树状菜单,选择数据库-右键-所有任务-附加数据库,点击浏览,选择你的文件夹下的.MDF文件,确定;10、如果是C/S结构程序,安装你的程序,OK;11、如果是B/S结构程序,复制你的网站文件到E:\jakarta-tomcat-5.0.28\webapps下,启动E:\jakarta-tomcat-5.0.28\bin\startup.bat,在IE中输入http://localhost:8080/你的网站名,OK;12、如果需要配置数据源,开始-控制面板-管理工具-数据源ODBC-添加-SQLServer-完成,名称填写readme.txt文件里的数据源名,描述为空,服务器填写“.”就可以,下一步-下一步-更改默认的数据库为你的附加数据库-下一步-完成-测试数据源,如提示“测试成功”,一路确定,否则重装;如果以上都不行,那也有办法,把显示器从8楼扔下去,把主机用锤子砸碎。

JAVA帮助文档全系列 JDK1.5 、JDK1.6、 JDK1.7 官方中英完整版下载

JAVA帮助文档全系列 JDK1.5 、JDK1.6、 JDK1.7 官方中英完整版下载

JDK API 帮助文档 :
JDK 5 :
Java SE 5 API 中文版 CHM 下载:/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/JDK_API_1_5_zh_CN.CHM
English Version : /dist/j2se6.zip
JDK 7 :
English Verson: /jdk7/docs/api/
/download/jdk7/archive/b138/jdk-7-ea-bin-b138-apidocs-14_apr_2011.zip
有关JDK 的具体详细版本信息和JDK 全部版本的下载地址请参考以下网址:/products/archive/
/javadoc/index.php
JAVASE5 EN Downloads: /dist/jdk150.zip
JDK 6 :
JDK6 API 中文版下载: https:///
JDK6 API 中文版 HTML 格式在线文档:/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/latest/html/zh_CN/api/
JDK中还包括各种例子程序,用以展示Java API中的各部分。
JDK 官方下载
JDK1.5 :
/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-1_5_0_07-windows-i586-p.exe?BundledLineItemUUID=1Y5IBe.moNgAAAEhQaQH6rQU&OrderID=BjFIBe.miUsAAAEhJaQH6rQU&ProductID=83HACUFBFwsAAAEYQNw5AXuM&FileName=/jdk-1_5_0_07-windows-i586-p.exe

JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的

JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的

JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet 和应用程序的程序开发环境。

它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。

JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。

自从Java 推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。

JDK包含的基本组件包括:·javac –编译器,将源程序转成字节码·jar –打包工具,将相关的类文件打包成一个文件·javadoc –文档生成器,从源码注释中提取文档·jdb – debugger,查错工具JDK中还包括完整的JRE(Java Runtime Environment,Java运行环境),也被称为private runtime。

包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。

JDK中还包括各种例子程序,用以展示Java API中的各部分。

从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。

JDK的另一个显著特点是随着Java (J2EE、J2SE 以及J2ME)版本的升级而升级。

但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。

JDK一般有三种版本:SE(J2SE),standard edition,标准版,是我们通常用的一个版本EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序,ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序Java开发工具(JDK)是许多Java专家最初使用的开发环境。

Java的发展历史

Java的发展历史

Java的发展历史从JDK诞生到现在已经有11年的时间了。

沧海桑田一瞬间。

转眼11年过去了,JDK已经发布了6个版本。

在这11年里诞生了无数和Java相关的技术和标准。

现在让我们进入时间隧道,重新回到1995年,再来回顾一下Java的发展轨迹和历史变迁。

一、JDK前传在这个世界上,熟悉Java历史的人非常多,如果要问一个人Java是从哪年诞生的,也许大多数人都会回答是1995年(这个非常好记,因为微软的Windows95也是在这一年发布的)。

但事实上Java早在上个世纪90年代初就开始酝酿了。

1991年4月,Sun公司的James Gosling博士领导的绿色计划(Green Project)开始着力发展一种分布式系统结构,使其能够在各种消费性电子产品上运行。

而Green项目组的成员一开始使用C++语言来完成这个项目,由于Green项目组的成员都具有C++背景,所以他们首先把目光锁定了C++编译器,Gosling首先改写了C++编译器,但很快他就感到C++的很多不足,需要研发一种新的语言Oak来替代它。

在17 个月后,整个系统完成了,这个系统是更注重机顶盒式的操作系统,不过在当时市场不成熟的情况下,他们的项目没有获得成功。

Java的取名也有一个趣闻。

Java的名称是来源于太平洋一个名为Java(中译爪哇)的小岛,该岛出产一种味道非常美妙的咖啡。

有一天,几位项目成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java(爪哇)咖啡,有一个人灵机一动说就叫Java怎样,得到了其他人的赞赏。

他们认为该计算机语言是非常好的东西,所以把他们认为最好的名字给了她。

于是,Java这个名字就这样传开了,一杯飘香的咖啡成为了它的标志。

直至1994年下半年,由于Internet的迅猛发展和环球信息网WWW的快速增长,第一个全球信息网络浏览器Mosaic诞生了。

此时,工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求。

JDK1.5环境变量配置 + JCreator的设置使用

JDK1.5环境变量配置 + JCreator的设置使用

JDK1.5环境变量配置+ JCreator的设置使用一、先进入Sun公司网站下载JDK。

在/javase/downloads/index.jsp中找到JDK 5.0 Update 8,点后面的Download,注意中间有Accept和Decline两选项,点选Accept。

下面第一个Windows Platform - J2SE(TM) Development Kit 5.0 Update 8有Windows Offline Installation, Multi-language这个链接,直接右键用迅雷下载49.52 MB的jdk-1_5_0_08-windows-i586-p.exe即可。

二、选择默认安装到C:\Program Files\Java\jdk1.5.0_08,也可以更改路径,则在设置环境变量时也要相应变换路径,jdk安装完毕之后,安装过程中还会让安装jre,也一起装上吧。

开始配置环境变量(win xp系统):右键点击我的电脑->属性->高级->环境变量1.在系统变量栏点新建,出现新建系统变量对话框变量名填JAVA_HOME变量值填C:\Program Files\Java\jdk1.5.0_082.再新建一个变量名填CLASSPATH变量值填.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar3.然后在系统变量栏找到变量为Path的选项,点编辑在变量值的末尾添加;%JAVA_HOME%\bin;确定后OK!三、再从/soft/24416.html上下载JCreator Pro V3.50.013汉化版。

在Jcreator安装时,会询问JDK的安装文件夹,此时只要按它的安装提示向导,设定好JDK安装文件夹的位置即可。

如果在JDK的安装目录下已经存在一个名为docs的目录,则Jcreator会自动将该目录作为当前JDK的帮助文档目录进行添加。

java+泛型

java+泛型

浅谈Java泛型编程原文地址:/thread.jspa?messageID=154504我原本想全文翻译Generics in the Java Programming Language,但是功力不够,太耗时间。

于是乎按照原文的框架,翻了一些再加上自己写的一点东西。

第一次写文,如有谬误还清指出~~谢谢!浅谈Java泛型编程1 引言在JDK 1.5中,几个新的特征被引入Java语言。

其中之一就是泛型(generics)。

泛型(generics,genericity)又称为“参数类型化(parameterized type)”或“模板(templates)”,是和继承(inheritance)不同而互补的一种组件复用机制。

继承和泛型的不同之处在于——在一个系统中,继承层次是垂直方向,从抽象到具体,而泛型是水平方向上的。

当运用继承,不同的类型将拥有相同的接口,并获得了多态性;当运用泛型,将拥有许多不同的类型,并得以相同的算法作用在它们身上。

因此,一般说来,当类型与实现方法无关时,使用泛型;否则,用继承。

泛型技术最直接联想到的用途就是建立容器类型。

下面是一个没有使用泛型技术的例子:List myIntList = new LinkedList();// 1myIntLikst.add(new Integer(0));// 2Integer x = (Integer)myIntList.iterator().next();// 3显然,程序员知道究竟是什么具体类型被放进了myIntList中。

但是,第3行的类型转换(cast)是必不可少的。

因为编译器仅仅能保证iterator返回的是Object类型。

要想保证将这个值传给一个Integer类型变量是安全的,就必须类型转换。

除了使代码显得有些混乱外,类型转换更带来了运行时错误的可能性。

因为程序员难免会犯错误。

使用了泛型技术,程序员就可以确切地表达他们的意图,并且把myIntList限制为包含一种具体类型。

Java基础知识总结(超详细整理)

Java基础知识总结(超详细整理)

Java基础知识总结(超详细整理)Java语⾔的特点1.⾯向对象⾯向对象(OOP)就是Java语⾔的基础,也是Java语⾔的重要特性。

⾯向对象的概念:⽣活中的⼀切事物都可以被称之为对象,⽣活中随处可见的事物就是⼀个对象,我们可以将这些事物的状态特征(属性)以及⾏为特征(⽅法)提取并出来,并以固定的形式表⽰。

2.简单好⽤Java语⾔是由C和C++演变⽽来的,它省略了C语⾔中所有的难以理解、容易混淆的特性(⽐如指针),变得更加严谨、简洁、易使⽤。

3.健壮性Java的安全检查机制,将许多程序中的错误扼杀在摇蓝之中。

另外,在Java语⾔中还具备了许多保证程序稳定、健壮的特性(强类型机制、异常处理、垃圾的⾃动收集等),有效地减少了错误,使得Java应⽤程序更加健壮。

4.安全性Java通常被⽤在⽹络环境中,为此,Java提供了⼀个安全机制以防恶意代码的攻击,从⽽可以提⾼系统的安全性。

5.平台⽆关性Java平台⽆关性由Java 虚拟机实现,Java软件可以不受计算机硬件和操作系统的约束⽽在任意计算机环境下正常运⾏。

6.⽀持多线程在C++ 语⾔没有内置的多线程机制,因此必须调⽤操作系统的多线程功能来进⾏多线程程序设计,⽽ Java 语⾔却提供了多线程⽀持。

多线程机制使应⽤程序在同⼀时间并⾏执⾏多项任务,该机制使得程序能够具有更好的交互性、实时性。

7.分布式(⽀持⽹络编程)Java语⾔具有强⼤的、易于使⽤的⽹络能⼒,⾮常适合开发分布式计算的程序。

java中提供了⽹络应⽤编程接⼝(),使得我们可以通过URL、Socket等远程访问对象。

8.编译与解释共存Java语法基础标识符: ⽤来标识类名、对象名、变量名、⽅法名、类型名、数组名、⽂件名的有效字符序列。

合法的标识符:由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且⾸字符不能是数字。

不能把java关键字和保留字作为标识符。

标识符对⼤⼩写敏感。

关键字:Java语⾔中已经赋予了特定含义的保留字: const、goto,Java版本中尚未使⽤,但以后版本可能会作为关键字使⽤变量:程序运⾏期间可以被改变的量。

JDK发展历史以及版本特性

JDK发展历史以及版本特性

JDK发展历史以及版本特性JDK(Java Development Kit)是Java语言的开发工具包,包含了Java编译器、调试器、自动构建工具和其他一些实用工具。

JDK的发展历史可以追溯到上世纪90年代,从最早的JDK 1.0到最新的JDK 17,每个版本都带来了许多新的功能和改进。

下面将详细介绍JDK的发展历史以及每个版本的主要特性。

1. JDK 1.0(1996年):JDK 1.0是Java开发工具包的首个正式发布版本。

它包含了Java编译器、调试器、类库和开发工具。

JDK 1.0的特性包括基本的Java语言特性、图形界面和网络编程支持。

2. JDK 1.1(1997年):JDK 1.1引入了许多重要的新功能,包括内部类、JavaBeans、RMI(远程方法调用)和反射。

此外,JDK 1.1还带来了对AWT(图形用户界面工具包)和JDBC(Java数据库连接)等的改进。

3. JDK 1.2(1998年):JDK 1.2是一个重要的里程碑,它引入了许多基本的Java特性,包括协同多线程、集合框架、Java虚拟机内存管理和Java 2D API。

此外,JDK 1.2还提供了对Java Servlet和JavaServer Pages(JSP)的支持。

4. JDK 1.3(2000年):JDK 1.3主要集中在性能改进和稳定性方面。

它引入了HotSpot虚拟机,其中包含了即时编译器,可以显著提高Java程序的执行速度。

此外,JDK 1.3还带来了对JNDI(Java命名和目录接口)和Java Sound API的支持。

5. JDK 1.4(2002年):JDK 1.4引入了许多新功能,包括正则表达式库、XML处理工具、Java Web Start和JMX(Java管理扩展)。

此外,JDK 1.4还改进了性能、内存管理和安全性能。

6. JDK 5(2004年):JDK 5(也称为J2SE 5.0)是一个重要的版本,引入了许多新的语言特性,如泛型、枚举、自动装箱和拆箱以及注解。

java李兴华学习笔记之JAVA SE基础部分

java李兴华学习笔记之JAVA SE基础部分
· 面向对象:充分的掌握接口的作用。 · 集合框架:数据结构的实现都在此部分完成。 · IO 编程:初学者最大难点,完全是应用面向对象的概念去理解的。 · 数据库编程(JDBC):主要的作用是进行数据库的开发,主要与 Oracle 有管。 除了以上的核心部分之外,对于 JDK 1.5 之后的主要新特性也会讲解到,但是对于使用上不会有明确的要求。 在 JAVA SE 中的知识点主要分为以下几个部分的掌握程度: · 重点:JAVA SE 的基础概念、面向对象、集合、IO、JDBC、类库
有的概念就通了。
2.2、本次预计讲解的知识点
1、 JAVA 的发展及环境的搭建配置; 2、 JAVA 中的主要数据类型及关键字; 3、 基本的运算操作符; 4、 程序的控制语句:循环、判断; 5、 方法及数组的使用。
3、具体内容
3.1、认识 Java(了解)
Java 是现在最流行的一种语言,而且在 Java 中完全的显示出了简单的特性,所以 java 语言足够简单。 Java 最早的时候是在 1991 年的 GREEN 项目诞生的,但是其原本的名字不叫 Java 而是称为 OAK(橡树),GREEN 的项目实际上就属于现在所提出的嵌入式的开发项目,通过 EMAIL 可以控制家电的工作。但是最早的时候 SUN 公司的设 计人员原本是使用 C++进行开发,但是由于其开发过于复杂了,所以使用了 C++开发出了一套新的平台 —— OAK。 可是遗憾的是 OAK 项目并没有中标,被网景公司的 SGL 平台所打败,那么很明显就意味着死亡,但是后来 SUN 公 司的人员开始向网景公司学习浏览器技术,后来产生了 HOTJava 的浏览器,之后并且在 1995 年的时候成功的将 OAK 更 名为 JAVA,推出了 JDK 1.0 和 Applet 程序。 PS:斯坦伏大学,本身造就了很多的人才:YAHOO 、HP。 JAVA 语言的发展经历了以下的几个重大的版本:

JDk以及各个版本的区别

JDk以及各个版本的区别

JDK的含义:java development kit是程序员编写java程序需要的软件,JDK是整个java 的核心,包括了java运行环境、java工具和java基础的类库。

JDK包含的基本组件包括:.javac—编译器,将源程序转成字节码.jar—打包工具,将相关的类文件打包成一个文件.javadoc—文档生成器,从源码注释中提取文档.jdb—debugger,查错工具.java—运行编译后的java程序appletviewer:小程序浏览器,一种执行HTML文件上的java小程序的java浏览器。

javah:产生可以调用java过程的C过程,或建立能被java程序调用的C过程的头文件。

javap:java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。

jconsole:java进行系统调试和监控的工具。

ng:这个是系统的基础类,比如String等都是这里面的,这个package是唯一一个可以不用import就可以使用的package;java.io:这里面有所有输入输出有关的类,比如文件操作等;:这是与网络有关的类,比如URL,URLConnection等;java.util:这个是系统辅助类,特别是集合类Collection,List,Map等;java.sql:这个是数据库操作的类,Connection,Statement,ResultSet等;javax.servlet这个是JSP,Servlet等使用到的类;JDK各个版本的新特性:jdk1.5的新特性(代号:猛虎):1.静态导入(import static)import语句可以导入一个类或是某个包中的所有类。

import static 语句可以导入一个类中的某个静态方法或是所有静态方法。

例如:Math类提供了很多于数学运算的静态方法,通常情况下我们是以Math.abs();这样的方式来进行调用函数的。

但是我们可不可以只写出adb();在JDK1.5之后,可以使用import static 语句导入一个类中的某个静态方法或是所有静态方法。

J2SE(TM) 5.0 语言特性

J2SE(TM) 5.0 语言特性

J2SE(TM) 5.0专题之语言特性回复Posted on 2005-01-12 22:49 大胃阅读(4275) 评论(7)编辑收藏引用收藏至365Key所属分类: On Java[准备工作]首先,为了了解J2SE(TM) 5.0的新的语言特性,你需要下载新版的JDK,在这里可以找到下载链接:/j2se/1.5.0/download.jsp。

当然,如果你已经有过手动配置Java环境的经历,我也建议你使用一个支持J2SE(TM) 5.0的IDE,推荐Eclipse SDK 3.1 M4,或者NetBeans IDE 4.0。

两个都是开源免费的,且很容易找到(Eclipse不用说了,NetBeans IDE 4.0有与JDK 5.0 Update 1的捆绑版)。

说点题外话,Java的版本号自从1.2开始,似乎就多少显得有点蹩脚。

从1.2版本开始,Java (J2SE)被称作Java 2,而不是Java 1.2,现在则显得更加离奇:Java(TM) 2 Platform Standard Edition 5.0或者J2SE(TM) 5.0,而内部的版本号还是1.5.0。

那么到底是1、2、还是5呢?来看看Sun官方网站是怎么说的:从Java诞生至今已有9年时间,而从第二代Java平台J2SE算起也有5个年头了。

在这样的背景下,将下一个版本的版本号从1.5改为5.0可以更好的反映出新版J2SE的成熟度、稳定性、可伸缩性和安全性。

好吧,现在我们将面对如下一些名称,而它们指的基本上是同一个东西:TigerJava(TM) 2 Platform Standard Edition 5.0J2SE(TM) 5.0Java version 1.5.0…在本文中,为了方便起见,我将统一使用J2SE(TM) 5.0这个名称。

如果你对Java各个版本的代号感兴趣,就像这里的"Tiger",可以参考如下网址:/j2se/codenames.html。

JDK1.5 JDK1.6 各自的新特性

JDK1.5 JDK1.6 各自的新特性

JDK1.5(JDK5.0)Java2标准版(Java 2 Platform, Standard Edition, J2SE)1.5版本更新不同于以往,它带来了很多里程碑式的革新,SUN将其绰号取名为“虎”。

这一次的变革将是Java诞生以来从未有过的,它给我们带来了耳目一新的感觉。

下面我们就来欣赏一下其中的部分典型变化:比较JDK版本,JDK 1.5中新增的语言特性:1.枚举(增加了一个关键字enum);2.变参(方法参数数量可以不固定多少);3.泛型;4.自动拆装箱(基本类型与包装类型可以混用);5.foreach循环(方法地用于遍历数组和集合);6.静态导入(可以在使用静方法前不加类名);7.注释(采用@前缀,这个基本上是为了简化J2EE而准备的,在JavaEE5中的EJB3、JPA 等中随处可以看到它的身影)。

在JVM、基本类库、SDK工具和硬件平台支持上都有很多的提高,这个JDK版本的出现可以说是Java中的一次飞越。

具体的解释下:1.自动包装和解包(Autoboxing and unboxing)代码示例往一个ArrayList中加入一个整数,1.5版本以前的版本写法是:List list = new ArrayList();list.add( new Integer( 10 ) );而在1.5版本中可以写为:list.add( 10 );因为,在1.5版本中,对一个整数进行包装,使之成为一个Integer对象(即包装,boxing),然后加入到一个ArrayList中的做法被认为是没有必要的,反之,解包(unboxing)的做法也是没有必要的,这样的代码只是增加了程序的文本长度而已,所以1.5版本支持了自动包装和解包操作,对于bool/Boolean,byte/Byte,double/Double,short/Short,int/Integer,long/Long,float/Float的相应包装/解包操作都进行了支持,从而使代码变得简单。

面向对象编程测试题

面向对象编程测试题

Java 面向对象一、单选:(1)在JDK1.5.0 安装目录下的bin 文件夹中,下面哪个程序是Java 执行器( B)A )Javac.exeB )java.exeC)jdb.exe D )javah.exeE)javadoc.exe (E)(2)在JDK1.5.0 安装目录下的bin 文件夹中,下面哪个程序能生成Java 参考文档A )Java.exeB )javac.exeC)appletviewer.exe D)javah.exeE)javadoc.exe(3)下列数据类型不属于整型的是(E)A )byte 类型B )short 类型C)int 类型 D )long 类型E)float 类型(4 )精确保存一个值为“53.21458961”需要用什么数据类型( D)A )int 类型B )long 类型C)String 类型 D )double 类型E)以上都可以(5)循环语句for(int i=0;i<4;i++){}循环的次数为(D)A )无限次B )不确定C)1 次 D )3 次E)4 次(6)若i、j 为已定义的整型,下面程序段中循环体执行的次数为(B) for(i=0;i<5;i++){for(j=0;j<=i;j++){}}A )不确定B )5 次C)15 次 D )25 次E)无限次(7)执行下列程序段后,j 的值变为(E)int i=1;int j=10;do{j-=i;i++;}while(j--<0);A )9 B)10C)-1 D)-2E)8(8)执行下列程序段后,y 的值变为(E)int x,y;for(y=1,x=1;y<=50;y++){if(x>=10){break;}if(x%2==1){x+=5;continue;}x-=3;}A )2B )3C)4 D )5E)6(9)下面哪种情况属于方法重载( A)A )方法名相同,参数类型与个数不同B )方法参数类型相同C)方法参数个数相同D )方法返回类型相同E)方法名相同,方法参数类型与个数也相同(10)如果一个子类要继承父类,需要使用哪个关键字(D)A )thisB )superC)public D )extendsE)final(11)使用下面哪个关键字可以实现调用父类的构造方法及被隐藏的方法(A)。

JDK各个版本新特性

JDK各个版本新特性

JDK各个版本新特性jdk1.5的新特性:1,泛型(它允许指定集合⾥元素的类型,这样你可以得到强类型在编译时刻进⾏类型检查的好处) ArrayList list=new ArrayList()------>ArrayList<Integer>list=new ArrayList<Integer>();2,⾃动装箱/拆箱 ⾃动装包:基本类型⾃动转为包装类.(int >> Integer) ⾃动拆包:包装类⾃动转为基本类型.(Integer >> int) nt i=list.get(0).parseInt();-------->int i=list.get(0);原始类型与对应的包装类不⽤显式转换3,for-each(循环清晰许多,并且避免了强制类型转换) i=0;i<a.length;i++------------>for(int i:a){......}4,static import (静态导⼊:要使⽤⽤静态成员(⽅法和变量)我们必须给出提供这个⽅法的类。

使⽤静态导⼊可以使被导⼊类的所有静态变量和静态⽅法在当前类直接可见,使⽤这些静态成员⽆需再给出他们的类名。

) import static ng.Math.*; Math.sqrt();--------------->sqrt();5 变长参数 int sum(int ...intlist)有任意个参数,把他看作数组6 枚举(Enums) 然后可以这样来使⽤Color myColor = Color.Red. 枚举类型还提供了两个有⽤的静态⽅法values()和valueOf(). 我们可以很⽅便地使⽤它们jdk1.6新特性1,Desktop类和SystemTray类 在JDK1.6中,AWT新增加了两个类:Desktop和SystemTray. 前者可以⽤来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,⽤默认应⽤程序打开或编辑⽂件(⽐如,⽤记事本打开以txt为后缀名的⽂件),⽤系统默认的打印机打印⽂档;后者可以⽤来在系统托盘区创建⼀个托盘程序.2,使⽤JAXB2来实现对象与XML之间的映射 JAXB是Java Architecture for XML Binding的缩写,可以将⼀个Java对象转变成为XML格式,反之亦然. 我们把对象与关系数据库之间的映射称为ORM,其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping).原来JAXB是Java EE的⼀部分,在JDK1.6中,SUN将其放到了Java SE中,这也是SUN的⼀贯做法.JDK1.6中⾃带的这个JAXB版本是2.0,⽐起 1.0(JSR 31)来,JAXB2(JSR 222)⽤JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极⼤简化了开发的⼯作量.实际上,在Java EE 5.0中,EJB 和Web Services也通过Annotation来简化开发⼯作.另外,JAXB2在底层是⽤StAX(JSR 173)来处理XML⽂档.除了JAXB之外,我们还可以通过XMLBeans和Castor等来实现同样的功能.3,StAX StAX(JSR 173)是JDK1.6.0中除了DOM和SAX之外的⼜⼀种处理XML⽂档的API. StAX 的来历:在JAXP1.3(JSR 206)有两种处理XML⽂档的⽅法:DOM(Document Object Model)和SAX(Simple API for XML). JDK1.6.0中的JAXB2(JSR 222)和JAX-WS 2.0(JSR 224)都会⽤到StAXSun决定把StAX加⼊到JAXP家族当中来,并将JAXP的版本升级到1.4(JAXP1.4是JAXP1.3的维护版本).JDK1.6⾥⾯JAXP的版本就是1.4. StAX是The Streaming API for XML的缩写,⼀种利⽤拉模式解析(pull-parsing)XML⽂档的API.StAX通过提供⼀种基于事件迭代器(Iterator)的API让程序员去控制xml⽂档解析过程,程序遍历这个事件迭代器去处理每⼀个解析事件,解析事件可以看做是程序拉出来的,也就是程序促使解析器产⽣⼀个解析事件然后处理该事件,之后⼜促使解析器产⽣下⼀个解析事件,如此循环直到碰到⽂档结束符; SAX也是基于事件处理xml⽂档,但却是⽤推模式解析,解析器解析完整个xml⽂档后,才产⽣解析事件,然后推给程序去处理这些事件;DOM采⽤的⽅式是将整个xml⽂档映射到⼀颗内存树,这样就可以很容易地得到⽗节点和⼦结点以及兄弟节点的数据,但如果⽂档很⼤,将会严重影响性能.4,使⽤Compiler API 现在我们可以⽤JDK1.6 的Compiler API(JSR 199)去动态编译Java源⽂件,Compiler API结合反射功能就可以实现动态的产⽣Java代码并编译执⾏这些代码,有点动态语⾔的特征. 这个特性对于某些需要⽤到动态编译的应⽤程序相当有⽤,⽐如JSP Web Server,当我们⼿动修改JSP后,是不希望需要重启Web Server才可以看到效果的,这时候我们就可以⽤Compiler API来实现动态编译JSP⽂件,当然,现在的JSP Web Server也是⽀持JSP热部署的,现在的JSP Web Server通过在运⾏期间通过Runtime.exec或ProcessBuilder来调⽤javac来编译代码,这种⽅式需要我们产⽣另⼀个进程去做编译⼯作,不够优雅容易使代码依赖与特定的操作系统;Compiler API通过⼀套易⽤的标准的API提供了更加丰富的⽅式去做动态编译,是跨平台的.5,轻量级Http Server API JDK1.6 提供了⼀个简单的Http Server API,据此我们可以构建⾃⼰的嵌⼊式Http Server,它⽀持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员⾃⼰实现HttpHandler接⼝,HttpServer会调⽤HttpHandler实现类的回调⽅法来处理客户端请求,在这⾥,我们把⼀个Http请求和它的响应称为⼀个交换,包装成HttpExchange类,HttpServer负责将HttpExchange传给 HttpHandler实现类的回调⽅法.6,插⼊式注解处理API(Pluggable Annotation Processing API) 插⼊式注解处理API(JSR 269)提供⼀套标准API来处理Annotations(JSR 175)实际上JSR 269不仅仅⽤来处理Annotation,我觉得更强⼤的功能是它建⽴了Java 语⾔本⾝的⼀个模型,它把method,package,constructor,type,variable, enum,annotation等Java语⾔元素映射为Types和Elements(两者有什么区别?),从⽽将Java语⾔的语义映射成为对象,我们可以在ng.model包下⾯可以看到这些类. 我们可以利⽤JSR 269提供的API来构建⼀个功能丰富的元编程(metaprogramming)环境.JSR 269⽤Annotation Processor在编译期间⽽不是运⾏期间处理Annotation,Annotation Processor相当于编译器的⼀个插件,称为插⼊式注解处理.如果Annotation Processor处理Annotation时(执⾏process⽅法)产⽣了新的Java代码,编译器会再调⽤⼀次Annotation Processor,如果第⼆次处理还有新代码产⽣,就会接着调⽤Annotation Processor,直到没有新代码产⽣为⽌.每执⾏⼀次process()⽅法被称为⼀个"round",这样整个Annotation processing过程可以看作是⼀个round的序列.JSR 269主要被设计成为针对Tools或者容器的API. 举个例⼦,我们想建⽴⼀套基于Annotation的单元测试框架(如TestNG),在测试类⾥⾯⽤Annotation来标识测试期间需要执⾏的测试⽅法.7,⽤Console开发控制台程序 JDK1.6中提供了java.io.Console 类专⽤来访问基于字符的控制台设备.你的程序如果要与Windows下的cmd或者Linux下的Terminal交互,就可以⽤Console类代劳. 但我们不总是能得到可⽤的Console,⼀个JVM是否有可⽤的Console依赖于底层平台和JVM如何被调⽤.如果JVM是在交互式命令⾏(⽐如 Windows的cmd)中启动的,并且输⼊输出没有重定向到另外的地⽅,那么就可以得到⼀个可⽤的Console实例. 8,对脚本语⾔的⽀持 如: ruby,groovy,javascript9,Common Annotations Common annotations原本是Java EE 5.0(JSR 244)规范的⼀部分,现在SUN把它的⼀部分放到了Java SE 6.0中.随着Annotation元数据功能(JSR 175)加⼊到Java SE 5.0⾥⾯,很多Java 技术(⽐如EJB,Web Services)都会⽤Annotation部分代替XML⽂件来配置运⾏参数(或者说是⽀持声明式编程,如EJB的声明式事务),如果这些技术为通⽤⽬的都单独定义了⾃⼰的Annotations,显然有点重复建设,,为其他相关的Java技术定义⼀套公共的Annotation是有价值的,可以避免重复建设的同时,也保证Java SE和Java EE 各种技术的⼀致性. 下⾯列举出Common Annotations 1.0⾥⾯的10个Annotations Common Annotations Annotation Retention Target Description Generated Source ANNOTATION_TYPE,CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PACKAGE,PARAMETER,TYPE ⽤于标注⽣成的源代码Resource Runtime TYPE,METHOD,FIELD⽤于标注所依赖的资源,容器据此注⼊外部资源依赖,有基于字段的注⼊和基于setter⽅法的注⼊两种⽅式 Resources Runtime TYPE同时标注多个外部依赖,容器会把所有这些外部依赖注⼊PostConstruct Runtime METHOD标注当容器注⼊所有依赖之后运⾏的⽅法,⽤来进⾏依赖注⼊后的初始化⼯作,只有⼀个⽅法可以标注为PostConstruct PreDestroy Runtime METHOD 当对象实例将要被从容器当中删掉之前,要执⾏的回调⽅法要标注为PreDestroy RunAs Runtime TYPE⽤于标注⽤什么安全⾓⾊来执⾏被标注类的⽅法,这个安全⾓⾊和Container的Security⾓⾊⼀致的.RolesAllowed Runtime TYPE,METHOD⽤于标注允许执⾏被标注类或⽅法的安全⾓⾊,这个安全⾓⾊和Container的Security⾓⾊⼀致的PermitAll Runtime TYPE,METHOD允许所有⾓⾊执⾏被标注的类或⽅法DenyAll Runtime TYPE,METHOD不允许任何⾓⾊执⾏被标注的类或⽅法,表明该类或⽅法不能在Java EE容器⾥⾯运⾏DeclareRoles Runtime TYPE⽤来定义可以被应⽤程序检验的安全⾓⾊,通常⽤isUserInRole来检验安全⾓⾊.jdk1.7新特性1,对集合类的语⾔⽀持 Java将包含对创建集合类的第⼀类语⾔⽀持。

JDK下各文件夹的作用

JDK下各文件夹的作用

假设JDK安装在c:/jdk1.5.0/下面:c:/jdk1.5.0 :jdk的根目录,比如在使用tomcat时设定的java_home环境变量就是这个值。

c:/jdk1.5.0/bin :jdk开发工具可执行文件存放的目录,比如,环境量PATH中必须有此值,方可执行java命令。

提供的是JDK的工具程序,包括javac、java、javadoc、appletviewer等程序。

c:/jdk1.5.0/lib :JDK开发类库存放的目录;c:/jdk1.5.0/jre :java运行环境目录,比如在程序中提取系统参数java.home时就是这个值。

c:/jdk1.5.0/jre/bin :jre执行文件及DLL库,与jdk1.5.0/bin相同。

c:/jdk1.5.0/jre/bin/client :j ava client VM and DLL.c:/jdk1.5.0/jre/bin/server :java Server VM and DLL.c:/jdk1.5.0/jre/lib :java app运行时类库,默认参数设置和资源文件,* rt.jar -- 系统引导库,jre的核心API所在。

* charsets.jar --字符集转换类.工具程序实际上会使用的Java工具类(例如,javac工具程序实际上会去使tools.jar中的com/sun/tools/javac/Main类)。

c:/jdk1.5.0/jre/lib/ext :扩展platform的一些资源。

c:/jdk1.5.0/jre/lib/security :安全管理相关库,如java.policy,java.security配置。

c:/jdk1.5.0/jre/lib/applet :对applet支持的一些资源文件c:/jdk1.5.0/jre/lib/fonts :TrueType 字体文件。

一些附劦nbsp;文件:c:/jdk1.5.0/src.zip :java2平台源代码,Java提供的API类的源代码压缩文件c:/jdk1.5.0/demo :jdk自带的例子,一些使用Java编写好的范例程序。

查看java类版本

查看java类版本

:IT群首页>> 语言编程>> JA V A/JSP>> Unsupported major.minor version 49.0错误详解Unsupported major.minor version 49.0错误详解浏览次数:22 次字体:[增加减小] 类型:转载关键字:Unsupported major.minor version 49.0错误详解一:要解决的问题我们在尝鲜JDK1.5 的时候,相信不少人遇到过Unsupported major.minor version 49.0 错误,当时定会茫然不知所措。

因为刚开始那会儿,网上与此相关的中文资料还不多,现在好了,网上一找就知道是如何解决,大多会告诉你要使用JDK 1.4 重新编译。

那么至于为什么,那个major.minor 究竟为何物呢?这就是本篇来讲的内容,以使未错而先知。

我觉得我是比较幸运的,因为在遇到那个错误之前已研读过《深入JA V A 虚拟机》第二版,英文原书名为《Inside the JA V A Virtual Machine》( Second Edition),看时已知晓major.minor 藏匿于何处,但没有切身体会,待到与Unsupported major.minor version 49.0 真正会面试,正好是给我验证了一个事实。

首先我们要对Unsupported major.minor version 49.0 建立的直接感觉是:JDK1.5 编译出来的类不能在JVM 1.4 下运行,必须编译成JVM 1.4 下能运行的类。

(当然,也许你用的还是JVM 1.3 或JVM 1.2,那么就要编译成目标JVM 能认可的类)。

这也解决问题的方向。

二:major.minor 栖身于何处何谓major.minor,且又居身于何处呢?先感性认识并找到major.minor 来。

写一个Java Hello World! 代码,然后用JDK 1.5 的编译器编译成,HelloWorld.javapackage com.unmi;publicclass HelloWorld{publicstaticvoid main(String[] args){System.out.println("Hello, World!");}}package com.unmi; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }用JDK 1.5 的javac -d . HelloWorld.java 编译出来的字节码HelloWorld.class 用UltraEdit 打开来的内容如图所示:从上图中我们看出来了什么是major.minor version 了,它相当于一个软件的主次版本号,只是在这里是标识的一个Java Class 的主版本号和次版本号,同时我们看到minor_version 为0x0000,major_version 为0x0031,转换为十制数分别为0 和49,即major.minor 就是49.0 了。

Java技术专题-探针Agent底层运作原理和分析(2)

Java技术专题-探针Agent底层运作原理和分析(2)

Java技术专题-探针Agent底层运作原理和分析(2)JavaAgent启动时加载的 JavaAgent 是 JDK1.5 之后引入的新特性,此特性为用户提供了在 JVM 将字节码文件读入内存之后,JVM 使用对应的字节流在 Java堆中生成一个 Class 对象之前,用户可以对其字节码进行修改的能力,从而JVM也将会使用用户修改过之后的字节码进行 Class 对象的创建。

JVM Tool Interface•JVMTI 是 JVM 暴露出来的一些供用户进行自定义扩展的接口集合,每当 jvm 执行到一些特定的逻辑的时间,就会去进行触发这些回调接口,用户就恰好可以在此回调接口之中做一些自定义逻辑。

•而对于此次所要描述的 JavaAgent 也恰恰是基于 JVMTI 的,JPLISAgent 就是用作实现 javaagent 功能的动态库。

JPLISAgentJPLISAgent 实现了 Agent_OnLoad 方法,Agent_OnLoad 方法就是整个启动时加载的 JavaAgent 的入口方法,后续也会说明整个运行流程。

如何使用虽然大多数同学可能已经使用过 JavaAgent 了,但是为了下面原理的平滑过渡,我这里还是大概写一下使用:编写 premain 启动类编写一个含有以下 premain 函数的类public static void premain(String agentArgs, Instrumentation instrumentation);[1] p ublic static void premain(String agentArgs);[2]•上面的两个方法只需要实现一个即可,且 [1] 的优先级是高于 [2] 的,即如果上面的两个方法同时出现,则只会执行 [1] 方法。

•agentArgs是javaagent:xx.jar=yyy传入yyy字符串是ng.instrument.Instrumentation 实例,由本地方法实例化并由 jvm自动传入。

java枚举和数值的相互转换

java枚举和数值的相互转换

java枚举和数值的相互转换枚举简介enum 的全称为 enumeration,是 JDK 1.5 中引⼊的新特性,存放在 ng 包中在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,⽽且“数据集”中的元素是有限的。

此时枚举可以很⽅便的表⽰这样的简单的数据集枚举和数值的相互转化步骤: 1.⾸先定义⼀个枚举类:例如atEnum 2.在枚举类中创建⼀个枚举构造⽅法:private atnum(int value) 3.创建将枚举值转换成数值的的⽅法: 4创建将数值转换成对应的枚举值public class Test01 {public static void main(String[] args) {System.out.println(atEnum.b.enumToInt()); //输出枚举值b对应的数字System.out.println(atEnum.intToEnum(1)); //输出1对应的枚举值}private enum atEnum{//定义⼀个枚举类a(0),b(1),c(2),d(3),e(4);private int value;private atEnum(int value){//编写枚举的构造函数,这⾥的构造⽅法只能是私有的this.value=value;}public static atEnum intToEnum(int value) { //将数值转换成枚举值switch (value) {case 0:return a;case 1:return b;case 2:return c;case 3:return d;case 4:return e;default :return null;}}public int enumToInt() { //将枚举值转换成数值return this.value;}}}利⽤枚举的⽅法转换成int数值:枚举所对应的下标值创建枚举类:private static enum color{red,blue,yellow,green}枚举⽅法ordinal() 返回结果int类型public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("red=========="+color.red.ordinal());System.out.println("blue=========="+color.blue.ordinal());System.out.println("yellow=========="+color.yellow.ordinal());System.out.println("green=========="+color.green.ordinal()); }运⾏结果如图。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5
ACCP V4.0
泛型方法
泛性方法:
public <T> String get(T obj) {
return obj.toString();
} List<String> list1 = new ArrayList<String>(); List<Object> list2 = list1; public void print(List<?> list) {} public <T> boolean containsAll(Collection<T> c); 如果实参T只使用一次,而大多情况下被用作多态,就要使用 通配符
6
ACCP V4.0
增强循环
LinkedList<String> list = new LinkedList<String>(); list.add("Hi"); … for (String s : list) System.out.println("2=" + s); }
7
ACCP V4.0
可变参数
10
ACCP V4.0
StringBuilder
该类的方法不是同步(synchronized)的,这使得它比 StringBuffer更加轻量级和有效。 public void testStringBuilder() { StringBuilder sb = new StringBuilder(); sb.append(123).append("aaa"); }
4
ACCP V4.0
泛型通配符
Object o = new String(“aaa”); List<String> list1 = new ArrayList<String>(); List<Object> list2 = list1; public void print(List<?> list) {} public <T> boolean containsAll(Collection<T> c); 如果实参T只使用一次,而大多情况下被用作多态,就 要使用通配符
15
ACCP V4.0
作业
1. 用StringBuilder存储一个简单的html内容 2. 定义一个方法,查询一张表的所有记录,返回 ArrayList(内装HashMap),请用范型技术取消强制 转化,再写一个方法,用增强循环显示ArrayList的所有 内容
16
ACCP V4.0
JDK1.5.0 新特性
ACCP V4.0
目标
掌握泛型类的使用 掌握增强循环 掌握装箱与拆箱 了解枚举类型 了解annotation
2
ACCP V4.0
泛型
Generics
就是多态polymorphism 、模板 模板Template,参数的声明方式 就是多态 , 减少代码量 提高重用性 Jdk集合框架泛性化 集合框架泛性化
3
ACCP V4.0
泛型类
泛性类:可以声明参数的类, 为 类型, 泛性类:可以声明参数的类,T为Object类型,不能直接 类型 不能直接new T(), , T不能是原始数据类型,T可改为其它任何标识如 不能是原始数据类型, 可改为其它任何标识如 可改为其它任何标识如A 不能是原始数据类型
public class GenList<T> {} public class GenList<K,V> {} public class Limited<T extends Object> {} interface Executor<E extends Exception> {}
9
ACCP V4.0
静态导入
import static ng.Math.pow; public void staticImport() { double x = sqrt(pow(12, 2) + pow(21, 2)); System.err.println("5=" + x); }
12
ACCP V4.0
控制台输入
public void consolInput14(String s) { String input = JOptionPane.showInputDialog(s); System.out.println("9.1=" + input); } public void consolInput15(String s) { Scanner in = new Scanner(System.in); System.out.print(s); int n = in.nextInt(); double x = in.nextDouble(); String str = in.nextLine(); System.out.println("9.2=" + n + ";" + x + ";" + str); }
范型的目的:增加类型的安全 范型的目的:
内在的类型转换优于在外部的强制转换。 内在的类型转换优于在外部的强制转换。 Java 接口更加强壮 因为它增加了类型。 接口更加强壮,因为它增加了类型 因为它增加了类型。 类型的匹配错误在编译阶段就可以捕捉到,而不是在代码运行 类型的匹配错误在编译阶段就可以捕捉到, 时。
11
ACCP V4.0
枚举
J2SE 5.0 之前定义新类型:Class 以及Interface. 特殊情况想定义 一个类型 Priority只能接受 High, Medium, Low 三种值. 其他任何 值都是非法的.J2SE 5.0的枚举类型(Enum) 很容易做到. 枚举类型是安全的,可以避免类的final常量名称不同值相同的调 用问题 不能直接继承ng.Enum,必须用关键字 不能直接继承 ,必须用关键字enum声明 声明 它的每一个值都是一个实例 Red相当于调用了构造函数 相当于调用了构造函数new Enum(Red,0) 相当于调用了构造函数 public enum Colors { Red, Yellow, Blue, Orange, Green, Purple, Brown, Black }
//int被自动封装为Integer类型 arrayList.add(100); 拆箱
Integer integer = new Integer(99); ArrayList<Integer> arrayList3 = new ArrayList<Integer>(); arrayList3.add(integer); //自动将Integer拆箱成int型 int intending3 = arrayList3.iterator().next();
14
ACCP V4.0
格式化I/O
public static void io(){ 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); }
13
ACCP V4.0
改变返回类型
确实需要clone一个对象,最好的方法还是使用Object 一个对象,最好的方法还是使用 确实需要 一个对象 方法, 调用native方法来实现,这样效 方法来实现, 的clone方法,由jdk调用 方法 调用 方法来实现 率比较高。 率比较高。 Clone有shallow clone 和deep clone ,后者在克隆对 有 象中有引用对象时也不会因此而改变
public class ObjectToClone implements Cloneable{ // 重写Object的clone public ObjectToClone clone() throws CloneNotSupportedException { return (ObjectToClone)super.clone(); } }
注意
在定义一个泛型类的时候,在 “<>”之间定义形参,例如: “class TestGen<K,V>”,其中“K” , “V”不代表值,而是表示类型。 实例化泛型对象的时候,一共要有两次书写。例如:TestGen< String,String> t=new TestGen<String,String>(); 泛型中extends并不代表继承,它是类型范围限制,代表上界,而 super 是下界,常用在?中。
public int varible(int... args) { int total = 0; for (int i = 0; i < args.length; i++) { total += args[i]; } return total; }
8
ACCP V4.0装Fra bibliotek与拆箱装箱
ArrayList<Integer> arrayList = new ArrayList<Integer>();
相关文档
最新文档