黑马程序员-学习笔记
黑马程序员_JAVA基础_面向对象2
------- android培训、java培训、期待与您交流! ----------
面向对象:
1.代码块:就是用一对{}括起来的内容
构造代码块:在类的成员位置上,每个构造方法都会默认调用构造代码块,它里面可以放每个对象都具有的默认初始值;
局部代码块:在方法体中,当方法体中的语句执行完以后,它里面定义的变量就会从内存中消失;
static代码块:随着类的加载而加载;它在类中只执行一次,比main还先执行;
执行顺序:静态代码块-à构造代码块-à构造方法-à局部代码块
2.通过new创建对象时在内存中做了什么事:
Person p=newPerson();
1) 将Person.class文件加载进内存;
2) 如果p定义在主方法中,那么就会在栈内存中开辟一个变量p内存空间;
3) 在堆内存中就会对对象分配内存空间;
4) 对对象进行默认初始化值;
5) 对对象进行显示初始化值
6) 调用构造代码块对对象进行初始化;(如果没有就不执行)
7) 调用构造方法对对象进行初始化值,初始化完毕;
8) 将对象的内存地址值赋给变量p,让p就指向该对象;
3.static关键字:static的意思:可以用于修饰成员(成员变量和成员方法);
A:static的特点:随着类的加载而加载;优先于对象而存在;可以直接用类名调用;被该类中所有的对象所共享;
B: 静态的注意事项:静态方法只能访问静态成员,因为静态随着类的加载而加载,优先于对象存在;
静态中不能使用this,super关键字;
主方法是静态的:public static void main(String[]agrs)
public:公共的意思,是最大权限修饰符;static:因为JVM调用主方法是没有创建对象,只能通过类名调用,所以main是用static修饰;void:因为main是被JVM调用,所以不需要返回值;main:main是主要的意思,所以jvm采用了这个名字,是程序的入口;String[]:字符串数组;args:数组名;
main方法可以通过在运行的时候通过java命令给args数组赋值,格式:java MainTest helloworld
4.静态变量与成员变量的区别:
A:调用方式:静态直接可以用类名调用,也可以用对象名调用,成员要用对象名调用;
B:存储位置:静态存储在方法区中的静态区中,成员存储在堆内存中;
C:生命周期:静态随着类的加载而加载,随着类的消失而消失,生命周期最长;成员随着对象的建立而存在,随着对象的消失而消失;
D:与对象的相关性:静态变量是被本类中所有对象所共享;成员变量是每个对象的特有属性;
5.什么时候使用静态:
A:当数据被本类中所有对象所共享的时候将数据使用静态修饰;B:当某个方法没有访问该类中的非静态成员时,可以将这个方法定义为静态方法;
一般情况不定义静态因为静态的生命周期过长。
6.制作API:API(全拼):Application Program Interface应用程序编程接口。
(1)类中的内容需要用文档注释。(2)使用JDK\bin目录下的javadoc工具。
格式:javadoc -d目录 -author -version ArrayTool.java
7.单例设计模式:用来保证类中对象的唯一性;
思想:外界不能创建对象,将对象私有,将空参数的构造函数私有;本身要创建一个对象,在成员位置上创建;对外提供静态的公共的方法来获取对象。
8.单例设计模式的两种方式:
A:饿汉式:当类加载的时候就创建对象
class Single
{
privatestatic Student s=new Student();
privateSingle(){}
publicstatic Student getInstance()
{
returns;
}
}
是线程安全的,开发使用;
B:懒汉式:当对象使用的时候创建对象
class Single
{
privatestatic Student s=null;
privateSingle(){}
publicstatic Student getInstance()
{
if(s==null)
{
s=newStudent();
}
returns;
}
}
是线程不安全的
------- android培训、java培训、期待与您交流! ---------- 详细请查看:http://edu.csdn.net/heima/