1:自动装箱与拆箱
自动装箱:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。
自动拆箱:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。
 
2:枚举
简单用法:JavaEnum简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。
复杂用法:Java为枚举类型提供了一些内置的方法,同时枚举常量还可以有自己的方法。可以很方便的遍历枚举对象。
 
 public enum Color {  
   RED, GREEN, BLANK, YELLOW  
 }  
 
3:静态导入
import xxxx 和 import static xxxx的区别是前者一般导入的是类文件如import java.util.Scanner;后者一般是导入静态的方法,import static java.lang.System.out;
 
 
import static java.lang.System.out;//导入java.lang包下的System类的静态方法out;
 
public class HelloWorld{
 
    public static void main(String[] args){
 
        out.print("Hello World!");//既是在这里不用再写成System.out.println("Hello World!")了,因为已经导入了这个静态方法out。
 
    }
 
}
 
4:可变参数(Varargs)
 
可变参数的简单语法格式为:
methodName([argumentList], dataType... argumentName);
 
比如你想定义一个方法,但是不知道以后要用的时候想传几个参数进去,比如求和,你想定义一个传几个int数据都能给你算出和的方法,可以在方法的参数列表中这样写(参数类型... 数组名),然后在方法内部直接用操作数组的方式操作。在你调用的时候可以随便传几个参数进去,JVM都能将这些数据封装成一个数组,然后按照你方法内的操作进行操作。
 
举我上面说的求和的例:
 
public static int Sum(int... arr){
 
    int sum=0;
 
    for(int i=0;i<arr.length-1;i++){
 
        sum+=arr[i];
 
 
    }
 
    return sum;
 
 
}
 
调用:
Sum(1,2,3,4,5,6)
 
使用可变参数的一个注意:可变参数的定义,必须是放在参数列表的最后面,否则编译失败!
 
 
5:内省(Introspector)
 
内省是Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新 的值。通过getName/setName来访问name属性,这就是默认的规则。Java中提供了一套API用来访问某个属性的getter /setter方法,通过这些API可以使你不需要了解这个规则(但你最好还是要搞清楚),这些API存放于包java.beans中。
一 般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器 (PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来 调用这些方法。
 
反射和内省操作很多时候都是在做框架的时候作用非常大。
大部分是面向对象编程,即:你所写代码都能够找到对应的类或接口,找到具体的方法写出对应的代码。
    但是以后学面向抽象编程的时候,即:我们所写的代码完全抽象,比如我们写的框架所要面向的类或方法目前并没有的,而是以后别人用我们的框架写出来的类。但是我们又怎么调用去他们的类get/set方法呢?所以这个时候要用到反射和内省进行抽象编程
 
public class Person {
 
    private int age;
    private String name; 
    public String getName() {
        return name; 
    } 
    public void setName(String name) {
        this.name = name; 
    } 
    public int getAge() {
        return age; 
    } 
    public void setAge(int age) {
        this.age = age;
    }
 
 
    public void run() {
        System.out.println("111");
    }
 
 
}
 
public class IntrospectorTest {
 
    @Test 
    public void tes1() throws Exception { 
        Class<?> cl = Class.forName("com.zbq.javaNewFeature.java5.introspector.Person");
        // 在bean上进行内省 
        BeanInfo beaninfo = Introspector.getBeanInfo(cl, Object.class); 
        PropertyDescriptor[] pro = beaninfo.getPropertyDescriptors(); 
        Person p = new Person(); 
        System.out.print("Person的属性有:"); 
        for (PropertyDescriptor pr : pro) { 
            System.out.print(pr.getName() + " "); 
        } 
        System.out.println(""); 
        for (PropertyDescriptor pr : pro) { 
            // 获取beal的set方法 
            Method writeme = pr.getWriteMethod(); 
            if (pr.getName().equals("name")) { 
                // 执行方法 
                writeme.invoke(p, "xiong"); 
            } 
            if (pr.getName().equals("age")) { 
                writeme.invoke(p, 23); 
            } 
            // 获取beal的get方法 
            Method method = pr.getReadMethod(); 
            System.out.println(method.invoke(p) + " ");
 
        } 
    } 
 
    @Test 
    public void test2() throws Exception { 
        PropertyDescriptor pro = new PropertyDescriptor("name", Person.class); 
        Person preson=new Person(); 
        Method  method=pro.getWriteMethod(); 
        method.invoke(preson, "xiong"); 
        System.out.println(pro.getReadMethod().invoke(preson)); 
    } 
 
6:泛型(Generic)
 
泛型(generic),泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。通俗点说就是一个盒子本来只能放int,改成泛型之后就可以灵活地根据你的要求放你的类型,如int,double,char,string等。
 
7:For-Each循环
For-Each循环的加入简化了集合的遍历
 
 long[] a = {2L, 3L, 5L};  
         for (long i : a) {  
             System.err.println(i);  
         }  

JDK1.5 新特性的更多相关文章

  1. JDK1.7新特性

    jdk1.7新特性 1 对集合类的语言支持: 2 自动资源管理: 3 改进的通用实例创建类型推断: 4 数字字面量下划线支持: 5 switch中使用string: 6 二进制字面量: 7 简化可变参 ...

  2. jdk1.6新特性

    1.Web服务元数据 Java 里的Web服务元数据跟微软的方案基本没有语义上的区别,自从JDK5添加了元数据功能(Annotation)之后,SUN几乎重构了整个J2EE体 系, 由于变化很大,干脆 ...

  3. JDK1.8 新特性

    jdk1.8新特性知识点: Lambda表达式 函数式接口 *方法引用和构造器调用 Stream API 接口中的默认方法和静态方法 新时间日期API https://blog.csdn.net/qq ...

  4. JDK1.6新特性,WebService强化

    Web service是一个平台独立的,松耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. Web ...

  5. JDK1.5新特性,基础类库篇,集合框架(Collections)

    集合框架在JDK1.5中增强特性如下: 一. 新语言特性的增强 泛型(Generics)- 增加了集合框架在编译时段的元素类型检查,节省了遍历元素时类型转换代码量. For-Loop循环(Enhanc ...

  6. JDK1.7新特性(2):异常和可变长参数处理

    异常 jdk1.7对try--catch--finally的异常处理模式进行了增强,下面我们依次来看增强的方面. 1. 为了防止异常覆盖,给Throwable类增加了addSuppressed方法,可 ...

  7. jdk1.8新特性应用之Iterable

    我们继续看lambda表达式的应用: public void urlExcuAspect(RpcController controller, Message request, RpcCallback ...

  8. jdk1.8新特性之方法引用

    方法引用其实就是方法调用,符号是两个冒号::来表示,左边是对象或类,右边是方法.它其实就是lambda表达式的进一步简化.如果不使用lambda表达式,那么也就没必要用方法引用了.啥是lambda,参 ...

  9. jdk1.8新特性之lambda表达式

    lambda表达式其实就是指一个匿名函数,应用最广泛的就是匿名内部类的简化.在jdk1.8之前,我们定义一个匿名内部类可能需要写一大坨代码,现在有了lambda之后,可以写的很简洁了.但不是说lamb ...

  10. JavaSE----API之集合(Collection、List及其子类、Set及其子类、JDK1.5新特性)

    5.集合类 集合类的由来: 对象用于封装特有数据,对象多了须要存储:假设对象的个数不确定.就使用集合容器进行存储. 集合容器由于内部的数据结构不同,有多种详细容器.不断的向上抽取,就形成了集合框架. ...

随机推荐

  1. jquery ui draggable,droppable 学习总结

    刚接触的时候,分不清draggable和droppable的区别,瞎弄了一会,其实很简单,draggable就是“拖”的功能,droppable就是“放”的功能. draggable()是被拖动的元素 ...

  2. [转] Matlab编程规范(MATLAB Programming Style Guidelines)

    转自: Jerry Zitao Liu的博客 主要是参考了下面这篇文章,简洁总结在这里. MATLAB Programming Style Guidelines 简洁总结如下: 表示object的数量 ...

  3. Spring,Struts2,MyBatis,Activiti,Maven,H2,Tomcat集成(二)——Struts2集成

    1. pom.xml文件添struts2依赖jar包: <!-- 与Struts2集成必须使用 --> <dependency> <groupId>org.spri ...

  4. 2018-2019-2 20165209 《网络对抗技术》Exp1:PC平台逆向破解

    2018-2019-2 20165209 <网络对抗技术>Exp1:PC平台逆向破解 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件 ...

  5. x86,x64,Any CPU区别

    https://blog.csdn.net/zuguangboy/article/details/51509670 1,即主程序(编译出来是exe文件的)是x86平台下编译的,而它所依赖的一个项目(或 ...

  6. 4~20mA电流输出芯片XTR111完整电路

    http://www.51hei.com/bbs/dpj-41904-1.html 为了大家方便,我这里给大家提供一种久经考验的电路,省去了大家找资料的麻烦,直接可以使用,优点有二:一是原料好买,二是 ...

  7. 03: centos中配置使用svn

    1.1 centos7.3源码搭建svn----安装各种依赖包 1.安装zlib-1.2.8.tar.xz xz -d zlib-1.2.8.tar.xz tar xvf zlib-1.2.8.tar ...

  8. 03: 自定义异步非阻塞tornado框架

    目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 源码 1 ...

  9. 20145307陈俊达_安卓逆向分析_APKtools分析smail

    20145307陈俊达_安卓逆向分析_APKtools分析smail 引言 真刺激呢!到了第二篇博客了,难度开始加大,之前是简单的dex2jar和有图形界面的jd-gui,现在来隆重介绍强大的反汇编工 ...

  10. BZOJ 1503 郁闷的出纳员(splay)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 题意:给出一个数列(初始为空),给出一个最小值Min,当数列中的数字小于Min时自动 ...