Java学习第六天2019_7_22限定符和静态修饰符

一、补充下节课内容:

1、对象的生命周期

(1)对象刚刚计算好对象内存大小,在堆内申请好空间,内部被初始化为0x0

(2)对象正在执行构造方法对属性初始化部分

(3)对象的可使用生命周期阶段

(4)对象被标记为垃圾,但可能还有被立即回收的时期

2、

(1)一个源文件中只能有一个public 类,该类的名称必须和文件名一样

(2)一个类会生成一个class字节码文件

3、this关键的作用(总结)

(1)可以在构造方法中调用其他的构造方法,必须出现在第一行

(2)代表该方法被调用时的当前对象的引用

4、理解类和对象的内存模型

   类信息存在方法区

   属性信息存在堆区

=====================================================================

二、包:

1、自定义一个包(包:组织代码)

(1)新建目录,目录名称是包名称(全小写,单词之间用下划线_分割)

(2)定义目录,在包里边建立Java文件,写类

2、使用包:

import 包名称.类名称;

import p1.HelloWorld;

三、访问限定符(影响的是访问权限)

1、分为两种情况:1)修饰顶级(Top-level)2)修饰成员级(Member-level)

2、四种访问限定符

说法                               |      定义语言       |                     说明

public                             |        public          |        所有类都有访问权限

package-private             |        空白            |           只有一个包的类才有权限访问

protected                       |        protected     |            留到讲完继承再讲

private                           |         private        |                  只有本类才有访问权限

注意:其中public、package-private才能修饰顶级;四种访问限定符都能修饰成员级

3、

a包的A类定义的属性      |  a包的A类的方法      |       a包下B类方法中         |    b包下的C类方法    

publilc                            |        有                       |             有                          |       有

package-private            |           有                    |              有                         |        没有

private                          |             有                   |               没有                    |            没有

四、静态方法 | 静态属性(static)

1、方法:普通方法(方法)| 静态方法(类方法)

2、属性:普通属性(属性)| 静态属性(类属性)

3、!!!!!!!!!!!!!static 的含义就是和对象解绑!!!!!!!!!!!!

4、静态属性不再保存在对象(堆区)中,而是保存在类(方法区)中

5、静态方法调用时,没有隐含着的对象,所以也就无法使用this关键字

6、访问静态属性、调用静态方法语法:

在类内部:

            1)属性名称;                                             a)方法名称

            2)类名称.属性名称;                                  b)类名称.方法名称(实参列表)

            3)this.属性名称     //保证当前方法不是静态方法

            c)this.方法名称(实参列表)     //保证当前方法不是静态方法

在类外部:

            1)访问属性:类名称.属性名称;                     |           对象的引用.属性名称

            2)调用方法:类名称.方法名称(实参列表);|          对象的引用.方法名称(实参列表);

强调:

在静态方法(静态上下文)中,无法使用this关键字。因为没有一个隐式的对象和该方法绑定

1)不能访问普通属性;2)不能调用普通方法

7、表现出来的特性:

一个类的所有对象,时可以共享静态属性的;(可以适当的看作时C语言的全局变量)

五、初始化的机制

1、属性的初始化(发生在对象的实例化的时候)

(1)定义时被初始化    int a=10;

(2)构造代码块时          {   a=10;   }

(3)在构造方法中初始化    Person (){   a = 10;   }

注意:(1)和(2)优先按照定义顺序执行;(3)最后执行

例如:

class A{

          { a = 0; }

          int a =10;

          { a = 20; }

         A()  {

                a=30;

         }

}

最后结果为30 其中a值的过程为======>0,10,20,30

2、静态属性的初始化(发生在类被加载的时候)

(1)定义时被初始化

static int a=10;

(2)静态构造代码

static {

          a = 20 ;

}

(1)和(2)按照定义的顺序依次顺序执行

六、没太懂

类的信息一开始是以字节码(bytecode)*.class 形式保存在磁盘上的

类的加载过程就是   类加载器(ClassLoader)在对象的目录上找到指定类的字节码文件,并进行解析,然后放到内存的方法区的过程

类只有在被使用到的时候才会进行加载(一般不会卸载)

1)用类去实例化对象

2)调用静态方法

3)访问静态属性

类的加载一定是发生在对象实例化之前

发布了78 篇原创文章 · 获赞 4 · 访问量 4183

猜你喜欢

转载自blog.csdn.net/weixin_43580746/article/details/96866101