志在指尖
用双手敲打未来

java7运行环境及新特性详解

java7运行环境及新特性详解

Java5:
1、泛型Generics:
引证泛型之后,答应指定调集里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型查看的好处。ParameterizedType作为参数和返回值,Generic是vararg、annotation、enumeration、collection的柱石。
扔掉List、Map,运用List、Map给它们增加元素或许运用Iterator遍历时,编译期就能够给你查看出类型错误
B、办法参数和返回值加上了Type
扔掉List、Map,运用List、Map
C、不需要类型转换
Listlist=newArrayList();
Stringstr=list.get(i);
D、类型通配符“?”
假设一个打印List中元素的办法printList,咱们期望任何类型T的List都能够被打印:
代码:
publicvoidprintList(Listlist,PrintStreamout)throwsIOException{
for(Iteratori=list.iterator();i.hasNext();){
System.out.println(i.next.toString());
}
}
假如通配符?让咱们的参数类型过于广泛,咱们能够把List、Iterator修改为
List、Iterator限制一下它。
2、枚举类型Enumeration:
3、主动装箱拆箱(主动类型包装和解包)autoboxing&unboxing:
简略的说是类型主动转换。
主动装包:根本类型主动转为包装类(int——Integer)
主动拆包:包装类主动转为根本类型(Integer——int)
4、可变参数varargs(varargsnumberofarguments)
参数类型相一起,把重载函数合并到一起了。
如:
publicvoidtest(object…objs){
for(Objectobj:objs){
System.out.println(obj);
}
}
5、Annotations它是java中的metadata
A、Tiger中预界说的三种规范annotation
a、Override
指出某个method掩盖了superclass的method当你要掩盖的办法名拼写错时编译不通过
b、Deprecated
指出某个method或element类型的运用是被阻挠的,子类将不能掩盖该办法
c、SupressWarnings
封闭class、method、field、variable初始化的编译期正告,比如:List没有运用Generic,则@SuppressWarnings(“unchecked”)去掉编译期正告。
B、自界说annotation
public@interfaceMarked{}
C、meta-annotation
或许说annotation的annotation
四种规范的meta-annotation全部界说在java.lang.annotaion包中:
a,Target
指定所界说的annotation能够用在哪些程序单元上
假如Target没有指定,则表明该annotation能够运用在恣意程序单元上
代码
@Target({ElementType.ANNOTATION_TYPE,
ElementType.CONSTRUCTOR,
ElementType.FIELD,
ElementType.LOCAL_VARIABLE,
ElementType.METHOD,
ElementType.PACKAGE,
ElementType.PARAMETER,
ElementType.TYPE})
public@interfaceTODO{}
b,Retention
指出Java编译期怎么对待annotation
annotation能够被编译期丢掉,或许保留在编译过的class文件中
在annotation被保留时,它也指定是否会在JVM加载class时读取该annotation
代码
@Retention(RetentionPolicy.SOURCE)//Annotation会被编译期丢弃
public@interfaceTODO1{}
@Retention(RetentionPolicy.CLASS)//Annotation保留在class文件中,但会被JVM忽略
public@interfaceTODO2{}
@Retention(RetentionPolicy.RUNTIME)//Annotation保留在class文件中且会被JVM读取
public@interfaceTODO3{}
c,Documented
指出被界说的annotation被视为所熟悉的程序单元的公开API之一
被@Documented标示的annotation会在javadoc中显现,这在annotation对它标示的元素被客户端运用时有影响时起作用
d,Inherited
该meta-annotation应用于目标为class的annotation类型上,被此annotattion标示的class会主动承继父类的annotation
D,Annotation的反射
咱们发现java.lang.Class有许多与Annotation的反射相关的办法,如getAnnotations、isAnnotationpresent
咱们能够运用Annotation反射来做许多事情,比如自界说Annotation来做Model目标验证
代码
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.METHOD})
public@interfaceRejectEmpty{
/**hinttitleusedinerrormessage*/
Stringvalue()default””;
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.METHOD})
public@interfaceAcceptInt{
intmin()defaultInteger.MIN_VALUE;
intmax()defaultInteger.MAX_VALUE;
Stringhint()default””;
}
运用@RejectEmpty和@AcceptInt标示咱们的Model的field,然后运用反射来做Model验证
6、新的迭代语句(for(intn:numbers))
7、静态导入(importstatic)
8、新的格式化办法(java.util.Formatter)
formatter.format(“Remainingaccountbalance:$%.2f”,balance);
9、新的线程模型和并发库ThreadFramework
HashMap的替代者ConcurrentHashMap和ArrayList的替代者CopyOnWriteArrayList
在大并发量读取时选用java.util.concurrent包里的一些类会让我们满足BlockingQueue、Callable、Executor、Semaphore…
Java6:
1、引入了一个支撑脚本引擎的新框架
2、UI的增强
3、对WebService支撑的增强(JAX-WS2.0和JAXB2.0)
4、一系列新的安全相关的增强
5、JDBC4.0
6、CompilerAPI
7、通用的Annotations支撑java
Java7:
1,switch中能够运用字串了
Strings=”test”;
switch(s){
case”test”:
System.out.println(“test”);
case”test1″:
System.out.println(“test1”);
break;
default:
System.out.println(“break”);
break;
}
2.运用ListtempList=newArrayList<>();即泛型实例化类型主动揣度
3.语法上支撑调集,而不一定是数组
finalListpiDigits=[1,2,3,4,5,8];
4.新增一些取环境信息的工具办法
FileSystem.getJavaIoTempDir()//IO临时文件夹
FileSystem.getJavaHomeDir()//JRE的安装目录
FileSystem.getUserHomeDir()//当时用户目录
FileSystem.getUserDir()//发动java进程时所在的目录5
5.Boolean类型回转,空指针安全,参加位运算
BooleanBooleans.negate(BooleanbooleanObj)
True=>False,False=>True,Null=>Null
booleanBooleans.and(boolean[]array)
booleanBooleans.or(boolean[]array)
booleanBooleans.xor(boolean[]array)
booleanBooleans.and(Boolean[]array)
booleanBooleans.or(Boolean[]array)
booleanBooleans.xor(Boolean[]array)
6.两个char间的equals
booleanCharacter.equalsIgnoreCase(charch1,charch2)
7.安全的加减乘除
intMath.safeToInt(longvalue)
intMath.safeNegate(intvalue)
longMath.safeSubtract(longvalue1,intvalue2)
longMath.safeSubtract(longvalue1,longvalue2)
intMath.safeMultiply(intvalue1,intvalue2)
longMath.safeMultiply(longvalue1,intvalue2)
longMath.safeMultiply(longvalue1,longvalue2)
longMath.safeNegate(longvalue)
intMath.safeAdd(intvalue1,intvalue2)
longMath.safeAdd(longvalue1,intvalue2)
longMath.safeAdd(longvalue1,longvalue2)
intMath.safeSubtract(intvalue1,intvalue2)
8.map调集支撑并发恳求,且能够写成Mapmap={name:”xxx”,age:18};

未经允许不得转载:IT技术网站 » java7运行环境及新特性详解
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载