java基础-001
一、区分final 、 finally 、 finalize
1.关键字final
Java语言的关键字final可以用于变量、类或方法,但是含义会有所不同。
-用于变量:一旦初始化,变量值就不能修改
-用于方法:该方法不能被子类重写(overrride)
-用于类:该类不能派生出子类
2.关键字finally
关键字finally和try/catch语句配对使用,即使有异常抛出,也能确保某段代码一定会执行。finally语句块会在try/catch语句块之后,在控制权交回之前执行。
3.finalize方法
在真正销毁对象之前,自动垃圾收集器会调用finalize()方法。因此,一个类可以重写Object类的finalize()方法,以便定义在垃圾收集时的特定行为。
protected void finalize() throws Throwable{
/*关闭以打开的文件,释放资源等操作*/
}
二、区分重载与重写
1.重载(overloading)是指两个方法的名称相同,但参数类型或个数不同。
1 1 public double computeArea(Circle c ){...........}
2
3 2 public double computeArea(Square s){..........}
2.重写(overriding)是指某个方法与父类的方法拥有相同的名称和函数签名
三、常用集合框架
1.ArrayList:ArrayList是一种可动态调整大小的数组,随着元素的插入,数组会适时扩容。
1 ArrayList<String> myArray = new ArrayList<String>();
2 myArray.add("one");
3 myArray.add("two");
4 System.out.println(myArray.get(0)); //打印“one”
2.Vector:vector与ArrayList非常相似,只不过前者(Vector)是同步的(synchronized)。两者语法也相差无几。
1 Vector<String> myVector = new Vector<String>();
2 myVector.add("one");
3 myVector.add("two");
4 System.out.println(myVector.get(0));
3.LinkedList:Java内建的LinkedList类,使用时会引出一些迭代器的语法
1 LinkedList<String> myLinkedList = new LinkedList<String>();
2 myLinkedList.add("two");
3 myLinkedList.add("one");
4 Iterator<String> iter = myLinkedList.iterator();
5 while(iter.hasNext()){
6 System.out.println( iter.next());
7 }
4.HashMap:HashMap集合广泛用于各种场合。
1 HashMap<String,String> map = new HashMap<String,String>();
2 map.put("one","one");
3 map.put("two","two");
4 System.out.println(map.get("one"));
四、从继承的角度看,将构造函数声明为私有的作用
将构造函数声明为私有(private),可确保类以外的地方都不能直接实例化这个类。在这种情况下,要创建这个类的实例,唯一的办法是提供一个公共静态方法,就像工厂方法模式(Factory Method Pattern)那样。
此外,由于构造函数是私有的,因此这个类也不能被继承。还有就是单例模式(singleton)也要用到私有化的构造函数。
五、Java中的对象反射以及作用
对象反射(Object Reflection)是Java的一项特性,提供了获取Java类和对象的反射信息的方法,他可以执行以下操作:
(1)运行时取得类的方法和字段的相关信息
(2)创建某个类的新实例
(3)通过取得字段引用直接获取和设置对象字段,不管访问修饰符为何
作用体现在以下三方面:
(1)有助于观察或操纵应用程序的运行时行为
(2)有助于调试或测试程序,因为我们可以直接访问方法、构造函数和成员字段
(3)即使事前不知道某个方法,我们也可以通过名字调用该方法