- 浏览: 112197 次
- 性别:
- 来自: 青岛
文章分类
最新评论
-
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 644inceptor-sdk-transwarp-6.1.0-S ... -
SPRING TOMCATE 配置正确但后台打印Could not identify the Annotation....
2017-11-29 17:36 1399经过跟踪和分析发现是Axis2的源码中做了判断: pack ... -
log4j.xml警告log4j:WARN The content of element type "log4j:configuration" must ma
2013-09-25 13:05 2499原因log4j.xml中文件的位置不对,顺序为: < ... -
vb6 调用 java webservice 错误之解决
2012-12-17 17:20 3936webservice 是 Axis1.2.1 vb6中使用s ... -
jdk 1.4 多线程池
2012-05-29 16:15 768http://backport-jsr166.sourcefo ... -
oracle preparedStatement ResultSet.Type_Scroll_Insensitive 乱码
2012-03-30 00:31 3721问题: 我用的数据库 ... -
使用JDK1.4运行Struts2.0
2011-04-30 14:35 534Struts2.0默认的平台需 ... -
Apache Commons
2011-04-16 18:29 585Components Attributes ... -
difference between Struts 1.x and Struts 2.x
2011-04-16 17:33 856The major difference is that ... -
weblogic 新队列配置
2011-01-14 10:54 1380全部的web服务器,服务器都运行在weblogic.ke ... -
java异常处理之throw, throws,try和catch
2011-01-12 14:07 1814java异常处理之throw, throws,try和ca ... -
MyEclipse 8.6.1主要改进
2011-01-08 21:37 2327MyEclipse 8.6.1下载地址发布了,关注MyEcli ... -
JAVA5的新特性收集
2012-03-30 00:34 687一、java5特性:增强FOR循环 ... -
hibernate 的中文乱码解决办法
2010-03-22 22:36 1060我用 hibernate Synchronizer 时,在 ... -
XMLHTTPRequest对象
2009-11-20 17:21 553XMLHTTPRequest对象 ... -
JAVA开发者最常去的20个英文网站
2009-09-19 23:36 443JAVA开发者最常去的20个 ... -
改变IT世界的11大Apache开源技术
2009-09-19 23:31 883据国外媒体报道,转眼 ... -
Oracle数据库和JSP连接要注意的一些问题
2009-09-19 23:22 912CLOB可用于存放大文本数据,最多可存储4GB数据,在应 ... -
JDK1.4新特性之I/O APIs篇
2009-09-06 23:03 1462当然阅读本文之前,你最好先了解一下原有的Java I/O AP ... -
java面试题大全-基础方面
2009-02-04 17:48 1489Java基础方面: 1、作用 ...
相关推荐
jdk1.5的新特性泛型的实例代码,很好的学习资料
JDK1.5新特性之注解功能(实例讲解)[文].pdf
jdk1.5(jdk5.0)较之前版本有了比较大的改变,本资料较详细的讲解了jdk5.0的新特性,相信能让你受益。
Generics 是JDK 1.5 一个最重要的特性,主要用来处理Collection。 以下代码在JDK 1.5 调试通过。 代码实例1: Demo.java package maoxiang.examples.jdk15.generics; import java.util.ArrayList; import java.util....
注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。它主要的作用有以下四方面: · 生成文档,通过代码里标识的元数据生成javadoc文档。 · ...
全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...
每个人的开发环境可能会有差异,但有一点我需要说明的是,JDK的版本不得低于1.5,因为用到了很多1.5版才支持的新特性。Tomcat和MySQL请不要低于我所用的版本,因为我没在其它的版本上进行测试。Navicat则是MySQL...
8.2 JDK 特性的改善 141 8.3 Java鉴别和许可服务 142 8.3.1 主题与主体 144 8.3.2 证件 144 8.3.3 可插入和可堆叠的鉴别 144 8.3.4 回调 147 8.3.5 访问控制 147 8.3.6 JAAS工具 149 8.4 小结 149 参考文献 151
8.2 JDK 特性的改善 141 8.3 Java鉴别和许可服务 142 8.3.1 主题与主体 144 8.3.2 证件 144 8.3.3 可插入和可堆叠的鉴别 144 8.3.4 回调 147 8.3.5 访问控制 147 8.3.6 JAAS工具 149 8.4 小结 149 参考文献 151
1.5 JDBC驱动程序简介 1.5.1 JDBC-ODBC 桥和ODBC驱动程序 1.5.2 本地API部分Java驱动程序 1.5.3 JDBC网络纯Java驱动程序 1.5.4 本地协议纯Java驱动程序 1.5.5 JDBC驱动程序的比较 1.6 本章小结 第2章 JDBC...
Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升...
Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升...
1.5 小结 11 第2章 基本数据类型——构建Java 大厦的基础 12 2.1 源代码注释 12 2.1.1 单行注释 12 2.1.2 区域注释 12 2.1.3 文档注释 13 2.2 基本数据类型 14 2.2.1 整型 15 2.2.2 浮点型 17 ...
1.5 java源文件编排格式 代码行长度与折行规则 1.6 程序注释 1.7 变量的声明初始化与放置 1.7.1 变量声明 1.7.2 变量初始化 1.7.3 变量放置 1.8 java程序语句编写规则 1.8.1 简单语句 1.8.2 复合语句 1.9 空格与空行...
1.5关于Java的常见误解 第2章Java程序设计环境 2.1安装Java开发工具箱 2.1.1下载JDK 2.1.2设置执行路径 2.1.3安装库源代码和文档 2.1.4安装本书中的示例 2.1.5导航Java目录 2.2选择开发环境 ...
1.5关于Java的常见误解 第2章Java程序设计环境 2.1安装Java开发工具箱 2.1.1下载JDK 2.1.2设置执行路径 2.1.3安装库源代码和文档 2.1.4安装本书中的示例 2.1.5导航Java目录 2.2选择开发环境 ...
1.5关于Java的常见误解 第2章Java程序设计环境 2.1安装Java开发工具箱 2.1.1下载JDK 2.1.2设置执行路径 2.1.3安装库源代码和文档 2.1.4安装本书中的示例 2.1.5导航Java目录 2.2选择开发环境 2.3使用...
1.5关于Java的常见误解 第2章Java程序设计环境 2.1安装Java开发工具箱 2.1.1下载JDK 2.1.2设置执行路径 2.1.3安装库源代码和文档 2.1.4安装本书中的示例 2.1.5导航Java目录 2.2选择开发环境 ...
1.5关于Java的常见误解 第2章Java程序设计环境 2.1安装Java开发工具箱 2.1.1下载JDK 2.1.2设置执行路径 2.1.3安装库源代码和文档 2.1.4安装本书中的示例 2.1.5导航Java目录 2.2选择开发环境 ...
1.5关于Java的常见误解 第2章Java程序设计环境 2.1安装Java开发工具箱 2.1.1下载JDK 2.1.2设置执行路径 2.1.3安装库源代码和文档 2.1.4安装本书中的示例 2.1.5导航Java目录 2.2选择开发环境 ...