JAVA核心API(上)

第四章 JAVA异常处理

第一节:异常的概念
第二节:捕获和处理异常  try...cacth...finally
第三节:throws和 throw关键字

  throws表示当前方法不处理异常,而是交给方法的调用出去处理;

  throw表示直接抛出一个异常;

  http://blog.java1234.com/blog/articles/201.html
第四节:Exception 和 RuntimeException 区别

  Exception是检查型异常,在程序中必须使用try...catch进行处理;

  RuntimeException是非检查型异常,例如NumberFormatException,可以不使用try...catch进行处理,但是如果产生异常,则异常将由JVM进行处理;

  http://blog.java1234.com/blog/articles/202.html

第五节:自定义异常类

 

第五章 JAVA常用类

第一节:Java日期处理类

  http://blog.java1234.com/blog/articles/204.html
第二节:String VS StringBuffer

  String:对String类型的对象操作,等同于重新生成一个新对象,然后讲引用指向它;

  StringBuffer:对StringBuffer类型的对象操作,操作的始终是同一个对象;

  总结下:假如定义的字符串内容基本不变或者很少变化,用String效率高;假如定义的字符串内容经常变动,要用StringBuffer;

第三节:Math类
第四节:Arrays类

  1,toString()方法 返回指定数组内容的字符串表示形式;

  2,sort()方法 对指定的类型数组按数字升序进行排序;

  3,binarySearch()方法 使用二分搜索法来搜索指定类型数组,以获取指定值;

  4,fill()方法,将指定类型值分配给指定类型数组的每个元素;

 

第六章 JAVA泛型

第一节:泛型的引入

  定义:使用泛型可以指代任意对象类型;

  比如有很多类似的类,如果创建一堆类的话太麻烦了,这样就想使用多态,所有的类都继承Object, 可以用Object 定义类的属性,但是调用该类的方法时需要向下转型(创建  对象的时候向上转型),比较麻烦。所以引入泛型<T>,在创建对象的时候就可以指定T的类型。

  http://blog.java1234.com/blog/articles/212.html

/**
 * 定义泛型类
 * @author caofeng
 *
 * @param <T>
 */
public class CC<T>{
 
    private T ob;
 
     
    public CC(T ob) {
        super();
        this.ob = ob;
    }
 
    public T getOb() {
        return ob;
    }
 
    public void setOb(T ob) {
        this.ob = ob;
    }
     
    /**
     * 打印T的类型
     */
    public void print(){
        System.out.println("T的实际类型是:"+ob.getClass().getName());
    }
     
}
View Code

第二节:限制泛型类型

  前面我们讲的泛型,可以是任意类型,但是我们有时候,需要限制类型,这样更加安全。这里假如我们放其他类型:直接编译报错,说类型不对;

  http://blog.java1234.com/blog/articles/215.html

public class Demo <T extends Animal>{
 
    private T ob;
 
    public T getOb() {
        return ob;
    }
 
    public void setOb(T ob) {
        this.ob = ob;
    }
 
    public Demo(T ob) {
        super();
        this.ob = ob;
    }
     
    public void print(){
        System.out.println("T的类型是:"+ob.getClass().getName());
    }
}
View Code

第三节:通配符泛型

  通配符泛型在使用泛型 特殊的场景下用到,比如把泛型对象作为方法参数传入方法的时候,就用到通配符泛型;

package com.java1234.chap06.sec03;
 
import com.java1234.chap06.sec02.Animal;
import com.java1234.chap06.sec02.Cat;
import com.java1234.chap06.sec02.Demo;
import com.java1234.chap06.sec02.Dog;
 
public class Test {
     
    /**
     * 通配符泛型
     * @param a
     */
    private static void take(Demo<?> a){
        a.print();
    }
     
    public static void main(String[] args) {
        Demo<Dog> dog=new Demo<Dog>(new Dog());
        take(dog);
        Demo<Cat> cat=new Demo<Cat>(new Cat());
        take(cat);
        Demo<Animal> animal=new Demo<Animal>(new Animal());
        take(animal);
    }
}
View Code

第四节:泛型方法

  泛型方法指返回值和参数都用泛型表示的方法;

package com.java1234.chap06.sec04;
 
public class Test {
 
    /**
     * 泛型方法
     * @param t
     */
    public static <T> void f(T t){
        System.out.println("T的类型是:"+t.getClass().getName());
    }
     
    public static void main(String[] args) {
        f("");
        f(1);
        f(1.0f);
        f(new Object());
    }
}
View Code

 

第七章 JAVA反射

第一节:反射的基本概念

  一般情况下,我们知道一个类,那可定可以通过这个类创建对象;

  但是如果要求通过一个对象找到一个类,这时候反射就派上用场了。

  java反射实现的核心就是Class类 java.lang包下的。
第二节:java Class 基本使用

   对象.getClass() 调用的是Object类的getClass() 得到Class对象 然后再调用Class里的getName()方法,获取到完整包路径类;

  Student student=new Student();

  student.getClass().getName();  //com.java1234.chap07.sec02.Student

  通过完整包路径类型来实例化Class对象,

  Class<?> c=Class.forName("com.java1234.chap07.sec02.Student");

  通过Class对象获取Student类实例

 


第三节:通过反射获取类的基本结构

  通过Class对象得到Student类的完整结构;

  Class<?> c=Class.forName("com.java1234.chap07.sec02.Student");

  1,通过getConstructors()方法获取所有构造方法

  Constructor<?> cons[]=c.getConstructors();

  2,通过getMethods()方法获取所有方法

  Method mds[]=c.getMethods();

  3,通过getDeclaredFields()方法获取所有属性

  Field fs[]=c.getDeclaredFields();
第四节:通过反射调用方法和操作属性

  http://blog.java1234.com/blog/articles/221.html

   1,通过反射调用方法,主要通过invoke方法

  Object obj=c.newInstance();

   Method m2=obj.getClass().getMethod("setName", String.class);
   m2.invoke(obj, "小锋");
 
  2,通过反射操作属性,java里反射可以操作私有属性,只需要设置下
package com.java1234.chap07.sec04;

import java.lang.reflect.Field;

public class Test2 {

    public static void main(String[] args) {
        Class<?> c=null;
        try {
            c=Class.forName("com.java1234.chap07.sec04.Student");
            System.out.println(c.getName());
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            Object obj=c.newInstance();
            Field nameField=c.getDeclaredField("name");
            nameField.setAccessible(true); // 设置可以访问 包括私有属性
            nameField.set(obj, "小锋");
            System.out.println("name:"+nameField.get(obj));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }
}
View Code

 

posted @ 2017-03-14 23:43  SKYisLimit  阅读(360)  评论(0)    收藏  举报