之前已经学习四天了,突然听说黑马56期招生时间提前到1月12日,还剩将将10天的时间,只能拼了,拼了!
这十天,我将在每天以学习笔记的形式,把自己一天所学的Java知识,总结在这里。
————————————————————————————————————————————————
1.static关键字
static关键字可以修饰方法,变量,以及代码块。
静态方法 :
1)静态方法不能直接操作实例;
2)可实例作为静态方法的显式参数(也就是方法名后面括号里面的参数),实现操作实例的效果,稍显麻烦;
3)静态方法用类名进行调用,它只能使用显式参数,以及类里的静态变量;
静态变量:
1)随着类的加载而创建;
2)整个类的所有对象通用;
静态常量:
1)static final修饰;
2)final修饰的常量通常可以随需要声明为public,因为不用担心值会被随意改变;
静态代码块:
1)随着类的加载而执行,且只执行一次(注意:类的加载次序由main函数的调用来决定);
2)可以用来给类进行初始化;
2.对象初始化
初始化顺序
1)实例变量的赋值初始化;
2)构造代码块;
3)构造器;
3.Java运行的内存形态
栈内存:运行区,从main函数开始,
堆内存:存储实例域
方法区:类,静态成员,方法
4.单例设计模式
一个类只创建一个对象,多个外部程序只能调用着一个对象,有饿汉式和懒汉式两种实现手段:
说明:通过private私有化构造器,禁止额外创建对象。通过静态变量创建一个对象,私有化禁止直接访问,getInstance()方法提供访问这个单一对象的途径。
1)饿汉式——实现简单,常用的方式
class Single { private Single(){} private static Single s = new Single(); public static Single getInstance() { return s; } }
2)懒汉式(延时加载的单例设计模式)——实现复杂,面试多
class Single { private Single(){} private static Single s = null; public static Single getInstance() { if(s == null) { synchronized(Single.class) { if(s==null) s = new Single(); } } return s; } }
说明:
5.继承
关键字:extends
覆盖方法时,权限不能小于父类方法。
覆盖方法时,不能用返回参数不同的方法——如果新的返回参数是旧的返回参数的子类倒是可以。
覆盖方法时,静态方法只能覆盖静态方法。
6.final关键字
1)final类——不能被继承的类,被定义为final的类,其中的方法会自动成为final。
2)final方法——不能被覆盖的方法,主要在继承中体现作用。
3)final变量——这个变量在定义后,必须在构造器运行期间进行初始化,之后将不再改变。
4)final常量——如果对final变量在定义的时候直接赋值,它就是一个常量。
7.抽象类
关键字:abstract
abstract修饰的类即为抽象类,修饰的方法即为抽象方法。
包含抽象方法的类必然为抽象类,抽象类却不一定有抽象方法。
抽象类的意义就在于被继承,而抽象方法的意义就在于被覆盖。
抽象类当然不能用来创建对象。
8.接口——like a
关键字:interface——定义接口
接口中的成员:常量 public static final;——public是为了便于引用,static则是因为接口无法创建对象,所以没有成员变量,只有静态常量。
抽象方法 public abstract;——public为了便于引用
(这些修饰符其实可以不写,接口会默认添加这些修饰符)
继承接口并覆盖方法时,不要忘了public修饰符。
接口间可以互相继承,并且可以多继承。
关键字:implements——实现接口
特性:多实现
9.多态——事物存在的多种形态
调用父类对象的地方可以用子类对象替换。
多态的转型:子类对象可以转换成父类(Fu a = new Zi();),该对象可以被再次转换为子类(Zi b = (Zi) a;),而原本就是父类的对象不能转换为子类。
动态绑定和静态绑定的内容,参阅 http://blog.csdn.net/u010431540/article/details/42321963 我的总结