zoukankan      html  css  js  c++  java
  • java基础加强_补充笔记


    java基础加强


    1、JDK5.0新特性介绍

    jdk5.0的代号为:tiger(老虎)

    2、静态导入

    作用:静态导入类的某个静态成员(包括静态属性和静态方法)。
    语法:
    import static java.lang.System.out;
    import static java.util.Arrays.*;
    import static java.lang.Math.*;
    应用:实际开发中一般不用,因为比较抽象。
    示例代码:
    import static java.lang.System.out;
    import static java.util.Arrays.*;
    import java.util.List;
    public class Demo1 {
    public static void main(String[] args) {
    // out.println("aa");
    // out.println("bbb");
    // out.print("ccccc");
    String[] ss = {"cc", "bb", "aa"};
    List<String> list = asList(ss); // 把数组转成集合 Arrays.asList(ss);
    sort(ss); // 排序 Arrays.sort(ss);
    // 遍历数组
    for (int i = 0; i < ss.length; i++) {
    out.println(ss[i]);
    }
    }
    }

    3、自动装箱和拆箱

    装箱:基本类型-->包装类型
    拆箱:包装类型-->基本类型
    Object o = 10; // 自动装箱+自动转换
    int i = (Integer) o; // 强制转换+自动拆箱
    小面试题:
    Integer i = null; // 没有new,说明堆里是空的。
    int j = i;
    答:语法无错误,但是不能运行,运行会报空指针异常。NullPointerException
    Java的规范指出:特定的基本类型一定会被装箱成相同的包装类型。这些对象会被高速缓存以重复使用,并且会被当做一般对象使用。
    这些特殊的值是boolean值的truefalse、所有的byte值、介于-128127shortintlong值,以及介于u0000与u007F之间的任何一个char
    因此这些基本类型的包装类的对象,是同一个对象。

    4、增强for循环

    增强for循环设计的目的:替换迭代器。
    增强for循环只能用在数组、或实现Iterator接口的集合类上。
    注意:增强for循环,只适合遍历集合数据。不适合修改或删除元素。如果要修改或删除使用普通for循环。
    语法:
    for (元素类型 元素名 :数组或实现了IteraTable接口的集合) {
    System.out.println(元素名);
    }

    5、可变参数

    注意:可变参数实际就是数组。
    如果需要其它参数,则要把可变参数写在最后。即:一个方法的参数列表中,只能有一个可变参数,且必须放在最后。
    在一个方法的参数列表中,不能使用多个可变参数。
    语法:参数(数据类型 ... 变量名)
    public int sum(int ... nums) { // 把可变参数当成数组
    int sum = 0;
    for (int i = 0; i < nums.length; i++) {
    sum += nums[i];
    }
    return sum;
    }

    6、枚举

    enum关键字用于定义一个枚举类。
    应用场景:当给一个变量赋值时,值只能是特定或有一定范围时使用。
    特点:
    1. 枚举类也是一种特殊形式的Java类。
    2. 枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
    3. 与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解)。
    4. 枚举类也可以实现接口、或继承抽象类。
    5. JDK5中扩展了swith语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型。
    6. 若枚举类只有一个枚举值,则可以当作单态设计模式使用。
    Java中声明的枚举类,均是java.lang.Enum类的孩子,它继承了Enum类的所有方法。常用方法:
    name() 返回当前对象的名称
    ordinal() 返回当前对象的索引
    values() 返回枚举类中的所有对象,此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便。
    valueOf(Class enumClass, String name) 把其它类型数据转换为枚举类型

    7、反射

    反射是框架设计的灵魂!!!
    反射就是把Java类中的各种成分映射成一个个的java对象(加载类时,解剖出类的各个组成部分)。
    例如,一个类有:成员变量,方法,构造方法,包等等信息,利用反射技术可以对一个类进行解剖,把各个组成部分映射成一个个对象。
    Class类用于表示.class文件。
    如何得到某个class文件对应的字节码文件对象:
    1. Class clazz = Class.forName(""); // 根据完整类名,得到类的字节码文件对象。
    2. 类名.class;
    3. 对象名.getClass();
    与构造函数相关的方法:
    得到public类型的构造函数
    Constructor getConstructor(Class ... parameterTypes) 根据可变参数类型,得到指定的公共的构造函数。
    Constructor[] getConstructors() 得到所有的公共的构造函数。
    示例代码:
    clazz.getConstructor(); // 得到无参的公共的构造函数
    clazz.newInstance(); // 创建此 Class 对象所表示的类的一个新实例。
    clazz.getConstructor(String.class, int.class); // 得到含有两个参数的公共的构造函数
    clazz.newInstance("tom", "18"); // 创建此 Class 对象所表示的类的一个新实例。
    总之,只要是在源程序中出现的类型,都有各自的Class实例对象,例如,int,voi,...

    8、内省

    为什么要学内省?
    开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,
    所以SUN公司开发了一套API,专门用于操作java对象的属性。
    什么是JavaBean和属性的读写方法?
    通过内省技术访问(java.beans包提供了内省的API)JavaBean的两种方式。
    1. 通过PropertyDescriptor类操作Bean的属性
    2. 通过Introspector类获得Bean对象的 BeanInfo,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),
    通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后通过反射机制来调用这些方法。
    Beanutils工具类:
    导入jar文件:
    commons-beanutils-1.8.3.jar
    commons-logging-1.1.1.jar
    apache开源组织

    9、泛型


  • 相关阅读:
    IO
    mouseover,mouseout和mouseenter,mouseleave
    【译】addEventListener 第二个参数
    Git 常用命令
    我对Backbone中url属性的理解
    小失误引起大失败
    收集各大网站的登录页面
    随笔2
    随笔1
    创建数据库
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/9145209.html
Copyright © 2011-2022 走看看