- 浏览: 116508 次
- 性别:
- 来自: 青岛
文章分类
最新评论
-
gozen007:
...
Axis2 与 JAX-WS规范 -
vvnet:
时间长了,好像是沿用了“但是如果preparedStateme ...
oracle preparedStatement ResultSet.Type_Scroll_Insensitive 乱码 -
xdchenggong:
请问你的乱码问题解决了吗,我也遇到这问题了,找不到解决办法
oracle preparedStatement ResultSet.Type_Scroll_Insensitive 乱码 -
623deyingxiong:
补充一点:在Eclipse里,子类的方法名只要满足参数列表,方 ...
overload和override的区别 -
qq274035206:
很好 写的很详细
Eclipse下支持jQuery1.2.6
class Temp{
String id ="";
public Temp() {
super();
}
public Temp(String id) {
super();
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
public class JdkTest {
// jdk1.5泛性、For-Each循环,特性实例
static List<String> processAll(List<Temp> c) {
List<String> strs = new ArrayList();
for (Temp emp : c) {
strs.add(emp.getId());
}
return strs;
}
//jdk1.5可变参数(Varargs),特性实例
public static void write(String... objs) {
for (String obj: objs){
System.out.print(obj);
}
System.out.print("\n");
}
public static void main(String args[]){
List<Temp> c = new ArrayList();
c.add(new Temp("1"));
c.add(new Temp("2"));
c.add(new Temp("3"));
List<String> strs =processAll(c);
for(String str: strs){
System.out.println(str);
}
write("hello");
write("hello"," world");
write("hello"," world"," welcome");
write("hello"," world"," welcome"," to");
write("hello"," world"," welcome"," to"," Leaderbird");
}
}
泛型(Generic):
//类型安全,不用转型
List<String> list = new ArrayList<String>();
//说明class A是范型类,T可以是任意类型
//多个类型参数的时候,用逗号分开 <T,V>
//接口用法一样
class A<T>{
private T t;
public void setT(T t){
this.t = t;
}
}
public class Test{
public static void main(String[] args){
A<String> a = new A<String>();
a.setT("str") //规范了class A里的T类型,所以只能传递String进去
}
}
//受限范型
public class Limited<T extends Number> {
public static void main(String[] args) {
Limited<Integer> number; //正确
Limited<String> str; //编译错误
}
}
//通配符
public void print(List<?> list){ // 如写成 List<T> 编译就会报错
// ..
}
public void draw2All(List<? extends Shape> shapes){ //可以是任何Shape的子类
// ..
}
范型方法:
--------------------------------------------------
public class Test {
public static void main(String[] args) throws Exception {
// 可换成Integer[] a = {1,2,3},但List的类型也必须由String换成Integer: List<Integer> ..
String[] a = {"1","2","3"};
List<String> list = new ArrayList<String>();
System.out.println(list.size());
fromArrayToCollection(a,list); // fromArrayToCollection方法强制了参数的类型
System.out.println(list.size());
}
public static <T> void fromArrayToCollection(T[] a, Collection<T> c) {
for (T o : a)
c.add(o);
}
}
--------------------------------------------------
For-Each循环:
Object[] os = new Object[5];
for(Object o : os){
// ..
}
//和"泛型"配合的话:
List<String> list = new ArrayList<String>();
for(String s : list){ // 可以直接告诉程序,遍历后的类型是 String
// ..
}
自动装包/拆包(Autoboxing/unboxing):
自动装包:基本类型自动转为包装类.(int >> Integer)
自动拆包:包装类自动转为基本类型.(Integer >> int)
//一般,jdk1.5降级到1.4,多少会产生点"自动装包/拆包问题"
枚举(Enums):
public enum Color
{
Red,
White,
Blue
}
// Color myColor = Color.Red;
// 提供了两个有用的静态方法values()和valueOf()
for (Color c : Color.values())
System.out.println(c);
例子:
--------------------------------------------------
package demo.test.jdk15;
import java.util.*;
public class EnumTest {
public enum Authority {
READ, READ_MAIL, WRITE, EXECUTE;
}
public enum Role {
USER() {
private Authority[] au = { Authority.EXECUTE };
Authority[] getAuthorities() {
return au;
}
},
MANAGER() {
private Authority[] au = { Authority.READ, Authority.EXECUTE };
Authority[] getAuthorities() {
return au;
}
},
SUPER() {
private Authority[] au = { Authority.WRITE, Authority.READ,
Authority.EXECUTE, Authority.READ_MAIL };
Authority[] getAuthorities() {
return au;
}
};
abstract Authority[] getAuthorities();
}
public enum User {
MARY() {
Role[] r = { Role.USER };
Role[] getRole() {
return r;
}
},
JACK() {
Role[] r = { Role.MANAGER , Role.USER };
Role[] getRole() {
return r;
}
};
abstract Role[] getRole();
}
public static void main(final String[] args) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("user", User.JACK);
Authority[] needAu = { Authority.READ, Authority.EXECUTE };
if (hasAuthority((User) map.get("user"), needAu)) {
System.out.println("+");
} else {
System.out.println("-");
}
}
public static boolean hasAuthority(User u, Authority... a) {
int needAu = a.length;
if (needAu == 0) {
return false;
}
Role[] roles = u.getRole();
int hasAu = 0;
for (Authority i : a) {
for (Role r : roles) {
boolean find = false;
for (Authority j : r.getAuthorities()) {
System.out.println(r + " -- " + i + ":" + j);
if (j.ordinal() == i.ordinal()) {
if(needAu == ++hasAu){
return true;
}
find = true;
break;
}
}
if(find){
break;
}
}
}
return false;
}
}
--------------------------------------------------
可变参数(Varargs):
util.write(obj1);
util.write(obj1,obj2);
util.write(obj1,obj2,obj3);
// 为了解决此类问题(如多态问题),可用"可变参数"
public void write(Object...objs){
// ..
}
// 注:传入的参数(如果有)会被当作一个数组处理,如要知道参数的数量,可取length
静态导入(Static Imports)
// "静态导入"会降低程序可读性,如无特殊需求,不建议使用
import static java.lang.Math.*; //是Math.* 不是Math
double d = sin(PI * 2); //无需再写 Math.sin(Math.PI * 2);
java.util.Scanner(扫描器)
//读取Console的内容
Scanner sc = new Scanner(System.in);
int i = sc.nextInt(); //可以是 nextXX()
//正则分割(类似Strint.split(xx))
String input = "a xx b xx c xx d xx";
Scanner sc = new Scanner(input).useDelimiter("\\s*xx\\s*");
while(sc.hasNext()){
System.out.println(sc.next());
}
printf 和 java.util.Formatter:
//类似C里面的printf,喜欢的人可以用
//printf(Locale l, String format, Object... args)
//printf(String format, Object... args)
System.out.printf("%08d %s \n",5,"ss"); // 00000005 ss (换行)
//和 out.format(format, args) 效果相同
//还可以用 Formatter
String s = new Formatter().format("%08d %s \n", 5,"ss").toString();
System.out.println(s);
Properties (loadFromXML storeToXML)(用Properties读写xml)
//test.xml:
//注:<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Hi</comment>
<entry key="id">1</entry>
<entry key="name">rocie</entry>
<entry key="email">rocie@sina.com</entry>
</properties>
//loadFromXML
Properties prop = new Properties();
FileInputStream fis = new FileInputStream("e:/test.xml");
prop.loadFromXML(fis);
fis.close();
System.out.println("Name: " + prop.getProperty("name")); // 这里的name是entry的key
//storeToXML
Properties prop = new Properties();
prop.setProperty("id", "2");
prop.setProperty("name", "aho");
prop.setProperty("email", "aho@jp.com");
FileOutputStream fos = new FileOutputStream("e:/test.xml");
prop.storeToXML(fos, "这是注释","utf-8");
fos.close();
另外:
BigDecimal 多了很多实用方法,算钱方便多了~
Double 和 Float 提供了toHexString()方法(以前Integer/Long有)
Interger 位操作的扩充函数
System.clearProperty(String key) 清除一个属性(从前有getProperty()有setProperty(),但没有remove)
Double/Float/Long/Integer/Short/Byte等,都加入了一个静态常量 SIZE ,如Double.SIZE = 64
发表评论
-
inceptor-sdk-transwarp-6.1.0-SNAPSHOT.jar和weblogic中的antlr*.jar包冲突解决方法
2020-06-29 16:39 728inceptor-sdk-transwarp-6.1.0-S ... -
SPRING TOMCATE 配置正确但后台打印Could not identify the Annotation....
2017-11-29 17:36 1490经过跟踪和分析发现是Axis2的源码中做了判断: pack ... -
log4j.xml警告log4j:WARN The content of element type "log4j:configuration" must ma
2013-09-25 13:05 2552原因log4j.xml中文件的位置不对,顺序为: < ... -
vb6 调用 java webservice 错误之解决
2012-12-17 17:20 4014webservice 是 Axis1.2.1 vb6中使用s ... -
jdk 1.4 多线程池
2012-05-29 16:15 824http://backport-jsr166.sourcefo ... -
oracle preparedStatement ResultSet.Type_Scroll_Insensitive 乱码
2012-03-30 00:31 3827问题: 我用的数据库 ... -
使用JDK1.4运行Struts2.0
2011-04-30 14:35 582Struts2.0默认的平台需 ... -
Apache Commons
2011-04-16 18:29 620Components Attributes ... -
difference between Struts 1.x and Struts 2.x
2011-04-16 17:33 892The major difference is that ... -
weblogic 新队列配置
2011-01-14 10:54 1417全部的web服务器,服务器都运行在weblogic.ke ... -
java异常处理之throw, throws,try和catch
2011-01-12 14:07 1851java异常处理之throw, throws,try和ca ... -
MyEclipse 8.6.1主要改进
2011-01-08 21:37 2365MyEclipse 8.6.1下载地址发布了,关注MyEcli ... -
JAVA5的新特性收集
2012-03-30 00:34 719一、java5特性:增强FOR循环 ... -
hibernate 的中文乱码解决办法
2010-03-22 22:36 1113我用 hibernate Synchronizer 时,在 ... -
XMLHTTPRequest对象
2009-11-20 17:21 597XMLHTTPRequest对象 ... -
JAVA开发者最常去的20个英文网站
2009-09-19 23:36 475JAVA开发者最常去的20个 ... -
改变IT世界的11大Apache开源技术
2009-09-19 23:31 916据国外媒体报道,转眼 ... -
Oracle数据库和JSP连接要注意的一些问题
2009-09-19 23:22 945CLOB可用于存放大文本数据,最多可存储4GB数据,在应 ... -
JDK1.4新特性之I/O APIs篇
2009-09-06 23:03 1528当然阅读本文之前,你最好先了解一下原有的Java I/O AP ... -
java面试题大全-基础方面
2009-02-04 17:48 1563Java基础方面: 1、作用 ...
相关推荐
10. **枚举常量的构造函数**:在JDK1.5中,枚举类型的构造函数可以接收参数,允许创建具有不同初始状态或行为的枚举实例。 以上这些特性极大地增强了Java语言的功能和表现力,让Java开发者能够编写出更加安全、可...
**JDK 1.5 新特性详解** JDK 1.5,也称为Java SE 5.0,是Java发展历程中的一个重要里程碑,引入了一系列显著的改进和新特性,极大地提升了开发效率和代码质量。以下是对这些新特性的详细介绍: 1. **自动装箱与...
JDK1.5,也被称为Java SE 5.0,是一个重要的版本,它引入了许多创新特性,对于Java的发展历程具有深远的影响。 在JDK1.5中,最重要的变化之一是引入了泛型。泛型允许在定义类、接口和方法时指定类型参数,从而增强...
Java Development Kit(JDK)是Java编程语言的核心组件,它包含了一个Java编译器、Java运行时环境(JRE)、调试工具和其他必要...因此,这个压缩包中的"jdk1.5.exe"可能是开发者为了兼容性或历史项目而寻找的重要资源。
JDK1.5,也被称为Java SE 5.0,是Oracle公司于2004年发布的一个重大更新,带来了许多重要的新特性、改进和优化。以下是对这个版本的一些关键知识点的详细解释: 1. **泛型(Generics)**:JDK1.5引入了泛型,使得...
** JDK 1.5 及后续版本中的重要特性详解** 自从 JDK 1.5 发布以来,Java 语言经历了一系列重大改进,引入了许多创新特性,极大地提升了开发效率和代码质量。以下是其中三个关键特性的详细解析:泛型、枚举和注解。 ...
1. **泛型(Generics)**:泛型是JDK 1.5最显著的新特性之一,它允许在类、接口和方法中使用类型参数,从而提高了代码的类型安全性和重用性。这减少了在运行时可能遇到的ClassCastException。 2. **自动装箱/拆箱...
1. **泛型(Generics)**:泛型是JDK 1.5引入的一项核心特性,允许在类、接口和集合中声明类型参数,增强了类型安全性和代码可读性。例如,ArrayList声明了一个只能存储String对象的列表。 2. **枚举(Enums)**:...
《深入解析JDK1.5中文API》 Java Development Kit(JDK)是Java编程语言的核心组成部分,提供了编译、运行Java程序所需的所有工具和库。JDK 1.5,也被称为Java SE 5.0,是Java历史上的一个重大版本,引入了许多新的...
在 JDK 1.5 中,Java 语言引入了一系列重要的新特性,极大地提升了代码的可读性、安全性以及效率。以下是对这些新特性的详细解析: 1. 泛型(Generics) 泛型是 JDK 1.5 最重要的改进之一,它允许在定义集合类时...
JDK1.5引入了枚举类型,使得创建一组相关的常量更加方便,同时也提供了更多的方法和特性,如枚举实例的比较和遍历。 3. **自动装箱与拆箱(Autoboxing/Unboxing)**: 为了解决原始类型与对应的包装类之间的转换问题...
《Java JDK1.5实例宝典》是一本深入解析JDK1.5版本中关键特性和类库的实践指南,涵盖了Java Mail、Servlet、JSP以及多线程等多个核心领域。这本书通过丰富的实例来帮助读者理解和掌握Java编程的精髓。 在JDK1.5中,...
1. **安装JDK**:首先需要下载并安装JDK 1.5,将其安装在如`C:\Program Files\jdk1.5`的路径下。 2. **设置环境变量**: - **JAVA_HOME**:创建一个系统变量,名为`JAVA_HOME`,值设置为JDK的安装路径,即`C:\...
在JDK 1.5之前,枚举类型通常是通过常量类来实现的,而JDK 1.5引入了内置的枚举类型,使得枚举成为一种独立的类型,提供了类型安全,避免了枚举值的非法实例化。枚举可以包含方法和字段,甚至可以实现接口,增强了...
泛型是JDK 1.5引入的一项核心特性,它允许在定义类、接口和方法时指定类型参数,从而实现了类型安全的集合操作。泛型减少了强制类型转换的需要,防止了运行时类型不匹配的错误,提高了代码的可读性和可维护性。 2....
JDK 1.5是Java历史上的一个重要版本,于2004年发布,引入了许多重要的新特性和改进,对Java语言的未来发展产生了深远影响。 **主要特性与知识点:** 1. **泛型(Generics)**:JDK 1.5首次引入泛型,允许在类、...
JDK 1.5的一些主要特性包括: 1. **泛型(Generics)**:泛型是Java 5引入的一项重要特性,允许在类、接口和方法中使用类型参数,增强了代码的类型安全性和重用性。泛型减少了强制类型转换的需要,使代码更加清晰和...
【JDK 1.5新特性详解】 JDK 1.5是Java发展历程中的一个重要里程碑,引入了许多创新特性,极大地提升了开发效率和代码质量。这些新特性包括泛型(Generics)、增强的“for”循环(Enhanced For loop)、自动装箱/...
### JDK1.5新特性泛型深入研究 #### 一、引言 随着软件工程的发展,类型安全成为了程序设计中的一个重要考量因素。Java作为一种广泛使用的编程语言,在其发展历程中不断引入新的特性以满足日益增长的需求。JDK1.5...
** JDK 1.5,也称为Java SE 5.0,是Java开发工具包的一个重要版本,它引入了许多显著的新特性和改进,极大地提升了Java语言的效率和可维护性。以下是一些主要的新特性及其详细解释:** 1. **泛型(Generics)** ...