您的位置:首页 > 编程语言 > Java开发

通往黑马 —— Java学习笔记(1)

2014-12-30 17:17 169 查看
之前已经学习四天了,突然听说黑马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 我的总结
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: