您的位置:首页 > 职场人生

黑马程序员--Java学习笔记之面向对象思想(单例模式详解、匿名对象、静态、final)

2013-09-21 18:37 801 查看
---------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! -------------------
一、数据类型:

1、基本数据类型:8种,boolean char(16bit) byte(8) short(16) int(32) long(64) float(32) double(64)

2、引用数据类型:除了基本数据类型,其它的是引用数据类型。

二、类的成员变量和局部变量的区别:

a、作用范围

b、在内存中的位置,成员变量跟随对象在堆内存中存在,而局部变量跟随方法在栈中存在

c、成员变量会默认初始化(被final修饰的除外),局部变量必须人工初始化

三、匿名对象的特点:

1、当使用该对象的方法只调用一次时使用匿名对象比较方便

2、一次性,使用之后再堆内存中即刻变为垃圾,等待回收

3、不能使用匿名对象的方式改变成员变量的值,比如new Car().color = "blue"; 或者说这样做没有意义,因为该对象不能保存。

四、构造代码块

1、作用:给对象进行初始化

2、对象一建立就运行,优先于构造方法

3、构造代码块是要给该类所创建的所有对象初始化,而构造函数是给当前对象初始化。

五、静态static

1、用法:用于修饰类的成员(成员变量和成员方法),被修饰的成员被调用时可以:类名.成员名

2、特点:a、生命周期最长,随着类的加载而加载,随着类的消失而消失

b、优先于对象存在

c、被所有对象共享

d、可以直接被类名调用

3、静态使用注意事项:静态方法只能访问静态成员;静态方法中不可以使用this、super关键字

4、利弊:利,对对象的共享数据进行单独存储,节省空间;可以被类直接调用

弊,生命周期过长,出现访问局限性

六、final关键字

1、可以修饰类、方法、变量

2、被final修饰的方法不能被覆写

3、被final修饰的类不能被继承,不能有子类

4、被final修饰的变量是一个常量,只能被赋值一次

5、内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

6、fianl修饰的成员变量在定义时不会默认初始化,因此可以在构造方法中对其进行初始化。

class Test{
final int i;//此时默认没有赋值为0
public Test(){
this.i = 8;//这是可以的,但是在非构造方法中不可以。
}
}

七、单例模式

1、饿汉式

class SingleDemo{
private static SingleDemo sd = new Singledemo();
private SingleDemo(){}
public static SingleDemo getInstance(){
return sd;
}
}

2、懒汉式

class SingleDemo2{
private static SingleDemos sd2 = null;
private SingleDemo2(){}
public static SingleDemo2 getInstance(){
if(sd2 == null){
sd2 = new SingleDemo2();
}
return sd2;
}
}

3、懒汉式(线程安全)

class SingleDemo3{
private static SingleDemos sd2 = null;
private SingleDemo2(){}
public static SingleDemo2 getInstance(){
if(sd2 == null){
synchronized(SingleDemo3.class){
sd2 = new SingleDemo2();
}
}
return sd2;
}
}


---------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! -------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐