- 浏览: 1505223 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
1.AutoBoxing
原来int是非Object,在JDK5.0终于提供了autoboxing功能。
如: int i=0;
Integer j = i+1;
2. 范型
泛型(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);
3.可变参数
可变参数(Varargs):
util.write(obj1);
util.write(obj1,obj2);
util.write(obj1,obj2,obj3);
// 为了解决此类问题(如多态问题),可用"可变参数"
public void write(Object...objs){
// ..
}
// 注:传入的参数(如果有)会被当作一个数组处理,如要知道参数的数量,可取length
比如:
public List find(String hql, Object... values),避免了以前的大量重复定义
4.三种内置Annotation
JDK5.0 有SuppressWarnings,Deprecated和Override 三种内置的annotation:
@Override
此标签一方面提醒用户这是个重载函数,另一方面保证了父类函数的参数或者名字改变时,子类如果没有跟着变化,就会编译不过。
虽然有点占地方,但用处的确很大,不会哪天子类被人卖了都不知道。
所以我设置了让IDEA6检查所有重载函数必须加上@Override标识。
@SuppressWarnings("unchecked")
此标签可以让编译器忽略某种warning信息,比如减少JDK5.0的集合操作引入范型后无处不在的warning。
因为有些非JDK5.0的开源库如hibernate, 函数返回的一定是List,而不会是List<User>,这时候IDE就会爆出很多warning。用SuppressWarning("unchecked")可以取消掉它。
@Deprecated
此标签以前写在JavaDoc里,现在提为annotation,注释已废弃的函数。用户使用该函数的话,编译时会得到"你用了废柴"的提示。
5.静态导入
// "静态导入"会降低程序可读性,如无特殊需求,不建议使用
import static java.lang.Math.*; //是Math.* 不是Math
double d = sin(PI * 2); //无需再写 Math.sin(Math.PI * 2);
6.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());
}
7.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);
另外:
BigDecimal 多了很多实用方法,算钱方便多了~
Double 和 Float 提供了toHexString()方法(以前Integer/Long有)
Interger 位操作的扩充函数
System.clearProperty(String key) 清除一个属性(从前有getProperty()有setProperty(),但没有remove)
Double/Float/Long/Integer/Short/Byte等,都加入了一个静态常量 SIZE ,如Double.SIZE = 64
好了先整理这些,在这里就不一一列举.感兴趣的可以去google 一把。
发表评论
-
ISO-8859_1统一编码 java
2011-08-19 11:07 2036Java中文问题一直困扰着很多初学者,如果了解了Java系统的 ... -
UTF-8 GBK UTF8 GB2312
2011-08-19 10:46 1934UTF-8:Unicode TransformationFor ... -
Properties 类读取配置文件
2011-08-17 22:37 14651、使用java.util.Properties类的load( ... -
Java编程之四大名著
2011-08-06 10:07 1466中文第四版 http://download.csdn.n ... -
JDK6的新特性
2011-07-28 19:57 1788JDK6的新特性 JDK6的新特性之一_Desktop类和Sy ... -
线程同步
2011-07-25 11:34 1281作者 : buaawhl http://www.iteye.c ... -
ZipInputStream类
2011-07-22 11:33 18777《Java开发实战经典》第12章Java IO,Java ... -
String、StringBuffer和StringBuilder的区别
2011-07-14 15:04 1373String是不可变的,StringBuffer是可变的;St ... -
精通JAVA核心技术
2011-07-11 11:31 1290http://www.2cto.com/ebook/20100 ... -
Java多线程sleep(),join(),interrupt(),wait(),notify()
2011-07-06 22:51 4918浅析 Java Thread.join() 一、在研究j ... -
FileInputStream/FileOutputStream的应用
2011-07-06 15:06 1416这是一对继承于InputStream和OutputStream ... -
Java基础之理解JNI原理
2011-07-05 14:55 1318JNI是JAVA标准平台中的一个重要功能,它弥补了JAVA ... -
面向对象和面向过程的区别
2011-07-04 09:52 1413面向过程就是分析出解 ... -
Java参数传值还是传引用
2011-07-03 20:52 3642参数是按值而不是按 ... -
JAVA排序汇总
2011-06-29 18:07 1509package com.softeem.jbs.lesson4 ... -
Java流操作,InputStream、OutputStream及子类FileInputStream、FileOutputStream;BufferedInpu
2011-06-27 18:09 19258Java将数据于目的地及来 ... -
线程综合文章
2011-06-27 10:48 1121http://lavasoft.blog.51cto.com/ ... -
由Java中的Set,List,Map引出的排序技巧
2011-06-24 14:18 2387一。关于概念: ... -
Date、String、Timestamp之间的转换
2011-03-20 16:59 2423public static Timestamp pars ... -
ToStringBuilder和ToStringStyle
2011-03-09 17:55 1768看完了ReflectionToStringBuilder后,发 ...
相关推荐
### JDK 5.0新特性详解 #### 一、自动装箱与自动拆箱 在JDK 5.0中,引入了一个非常实用的功能——自动装箱和自动拆箱,这极大地方便了开发者在处理基本数据类型和它们对应的封装类之间的转换。以前,我们可能需要...
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
在Java开发领域,JDK 5.0是一个重要的里程碑,引入了多项显著的新特性,极大地提升了编程效率和代码质量。本文将深入探讨其中的四个关键特性:常量、枚举、for each循环(也称为增强型for循环)以及反射。 首先,让...
在JDK 5.0中,Java引入了一系列重要的新特性,极大地提升了开发效率和代码的可读性。这些新特性包括自动包装和解包、增强的for循环、可变参数方法、printf风格的格式化输出、枚举类型以及静态导入等。 首先,自动...
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
在`JDK5.0新特性 (2)——反射.doc`中,你可能会学习到如何使用`java.lang.Class`对象来获取类信息,以及如何使用`java.lang.reflect`包中的`Constructor`、`Method`和`Field`类来操作类的构造器、方法和字段。...
以上就是JDK 5.0中的一些重要新特性,这些特性极大地推动了Java语言的发展,使其在软件开发领域保持了强大的竞争力。通过学习和掌握这些特性,开发者可以编写出更加高效、健壮和易于维护的代码。
### JDK 5.0 新特性详解 #### 一、增强的 for 循环(ForEach Loop) JDK 5.0 引入了增强的 `for` 循环,也称为 foreach 循环,用于简化对集合和数组的操作。这种循环语法更加简洁,易于阅读。 **示例代码:** ``...
[浪曦][原创]JDK5.0新特性[风中叶老师主讲[浪曦][原创]JDK5.0新特性[风中叶老师主讲[浪曦][原创]JDK5.0新特性[风中叶老师主讲
[浪曦][原创]JDK5.0新特性[风中叶老师主讲][浪曦][原创]JDK5.0新特性[风中叶老师主讲][浪曦][原创]JDK5.0新特性[风中叶老师主讲]
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
浪曦 - JDK5.0新特性.part3
浪曦 - JDK5.0新特性.part2
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
浪曦 - JDK5.0新特性.part5.rar
浪曦 - JDK5.0新特性.part4.rar
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part