Java自学笔记(第六天)-static-类变量-对象变量-javadoc文档-static代码块-单例设计模式

(*)static(不变的)-关键字:修饰的变量叫做类变量,随着类的加载而加载,随着类的消失而消失,

//static修饰的成员叫做静态成员(不变的成员,类成员),

//不仅能被对象调用,还可以直接被类名调用

//被所有对象共享

//优先于对象存在

(*)类变量实例变量的区别

//存放位置不同,类变量在方法区中和实例变量在堆内存中

//生命周期不同,类变量与类同在,实例变量与实例同在

(*)static使用注意事项:

//static成员只能访问static成员,非static成员可以访问static成员和非static成员

//static方法不可以使用this和super关键字,因为static优先于对象存在所以static中不可以使用this

//main函数是static

(*)main-函数:public static void main(String[] args),一个特殊的函数,作为程序的入口,被jvm调用

public:访问修饰符

static:不变的成员,随着类的存在而存在

void:返回类型是void

main:不是关键字,但是一个特殊的单词,被jvm识别

(String[] args):参数列表,一个String类型的数组,args变量名是可以改变的

main函数是固定格式,被jvm识别

//下面代码是正确的

Java自学笔记(第六天)-static-类变量-对象变量-javadoc文档-static代码块-单例设计模式_第1张图片

(*)什么时候定义static变量,static函数

//当一个变量的值被所有对象所共用,该变量可以定义成static变量

//当一个函数内只涉及static变量时或者任何变量都不涉及时,该函数可以被定义成static函数

//被static修饰的成员就是类成员

(*)在cmd命令行中设置类文件路径 (.class文件所在的路径)set classpath=.;c:\;    ,(.)表示在当前目录查找,C:\表示在C盘目录查找。

(*)制作Javadoc文档(就是.class文件的说明),使用javadoc.exe编译生成javadoc文档,cmd命令行中的命令 javadoc -d -author -version xx.java

//在类中添加注释的语法: /**   @author @version ...... @param @return     */

(*)static代码块,随着类的加载而执行,只执行一次,用于给类进行初始化,

格式:

static{

  //代码;

static代码块,构造代码块,的执行顺序:加载类---->static代码块---->new对象时调用构造函数---->构造代码块---->new时调用的构造函数

Java自学笔记(第六天)-static-类变量-对象变量-javadoc文档-static代码块-单例设计模式_第2张图片

//只有类中内容被用到时,类才被加载,例:类名 xx = null; 这个类不被加载,xx对象变量没有意义,类中的static代码块也不会执行。

(*) Person p = new Person("zhangsan",20);

这句代码在内存中的执行过程:

1,因为new用到Person.class文件,所以会先找到Person.class文件并加载到内存中

2,执行Person类的static代码块

3,在堆内存中开辟空间

4,在堆内存中生成相对应的属性变量,并赋于与数据类型相对应的默认值

5,再赋予代码给出的默认值

6,执行构造代码块

7,执行构造函数

8,将堆内存空间地址赋予栈内存中的变量P

(*)对象在内存中调用方法的执行过程

Java自学笔记(第六天)-static-类变量-对象变量-javadoc文档-static代码块-单例设计模式_第3张图片

(*)单例设计模式:

1,关闭构造函数,就是用private修饰构造函数

2,在类中定义一个自己类的对象变量(new对象是饿汉式,赋null值是懒汉式)

3,定义一个方法把自己类的对象变量return给调用者(懒汉式要判断对象变量是否为null在new对象,涉及synchronized(锁)关键字和多线程)代码如下:Java自学笔记(第六天)-static-类变量-对象变量-javadoc文档-static代码块-单例设计模式_第4张图片

 

你可能感兴趣的:(javadoc)