目录
一、选择取块解
二、类变量
三、似复刻变量
四、类变量的指向对象
五、变量的解引用访问
1.new 类变量(参)
2.this(参)
3.类变量/似复刻变量.
六、代码块
七、复制变量的赋值顺序
八、访问限定符
1.private
2.default
九、导类
一、选择取块解
解引用都有可以取块选择解的性质,即我们有了指向该对象的地址,该对象的所有都可以解引用此地址所取到,但我们通常不需要对象的所有,更多时候一次只需要解到对象的一部分,即一次解引用里对所能解引用到的所有内容进行选择取块地解要解的部分内容
二、类变量
class(类)是一种类型,用class(类)可以创建类变量,类变量里存储变量与方法,创建类变量时都有开辟空间,类变量里的存储的成员变量都存储在堆区,类变量里存储的成员方法都存储在方法区,类变量本身也是个变量存有空间,它里面存储这些成员变量与成员方法,不过类变量开辟的存储空间有部分在堆上(变量),有部分在方法区上(方法),是在两个不同区域开辟空间创建来的变量,类变量创建后相应地它也有哈希值,指向创建的这个类变量,能访问这个类变量的所有
三、似复刻变量
类变量创建好后,类变量也可作为一种类型,以此类变量为类型创建似复刻变量,似复刻变量按照类变量里的非静态变量模具变量创建复制变量、在堆上开辟空间存储有类变量里的静态变量、类变量里的所有方法的访问路径信息,用类变量创建的似复刻变量在堆区,复刻变量里存储复制变量与访问类变量路径信息两块内容,创建好似复刻变量后,相应地有指向此似复刻变量的哈希值,能访问与管理到此似复刻变量的所有内容,似复刻变量的存哈希值引用类型与类变量存哈希值引用类型是共用的,因为它们最终的指向对象类型都是相同的
四、类变量的指向对象
类变量里面存储有静态变量、非静态变量、静态方法、非静态方法:
- 静态变量与非静态变量都是存储在类变量的堆区部分,静态变量用来类变量里的存值的,而非静态变量对于类变量来说不存值,它作为复刻模具变量用来给似复刻变量照着复制出变量的
- 静态方法与非静态方法都存储在类变量里的方法区那块部分,都是类变量里面创建好的方法,非静态方法的形参有专门接似复刻变量哈希值的形参,这也就决定了非静态方法必须得有似复刻变量传它哈希值下才可调用(此形参this往往隐藏起来的),而静态变量就普通没有这一形参
五、变量的解引用访问
类变量、似复刻变量都是引用变量,里面存指向对应空间的哈希值,通过哈希值来访问、管理的
类在文件里写好的,文件里写好后在允许访问的范围内程序一加载该类,该类变量就已经创建好了,类变量里就装有了此类变量的哈希值,在能访问到的范围内,类变量.或类变量()即可解引用此哈希值使用访问类变量
1.new 类变量(参)
—— 创建似复刻变量时
解引用类变量里的哈希值得到类变量内容进行创建似复刻变量
创建好似复刻变量后(此时里面的复制变量都设置好初始值为0)就有了指向其的哈希值(似复刻变量里面不仅有复制变量,还有路径信息),再将似复刻变量的哈希值与参数传到类变量里的构造方法中进行初始构造此似复刻变量,最后返回指向该创建好的似复刻变量的哈希值,同用类变量的引用类型来接,此时此类变量创建的变量就是似复刻变量,里面装的是指向似复刻变量空间的哈希值
2.this(参)
—— 似复刻变量去构造方法时
一个似复刻变量刚创建好后即会被自动去调用执行它的构造方法,构造方法对于一个似复刻变量来说只有在这一过程中可被执行,构造方法这一过程结束之后,之后都不可再调用构造方法,在构造方法里执行时,构造方法有隐藏的形参this,是来接此似复刻变量哈希值的,所以在构造方法里,可用this.解似复刻变量哈希值得里面的复制变量或this(参)解引用似复刻变量里的哈希值,取块选择解其路径信息中的指向类变量里方法区非静态方法中的构造方法实现再次调用构造方法
3.类变量/似复刻变量.
—— 访问使用其指向内容时
解引用类变量或似复刻变量里的哈希值,得到引用对象指向的对应对象的内容
六、代码块
- 静态代码块是类变量创建时执行给静态变量初始化的
- 实例代码块是给似复刻变量自动初始化里面复制变量的,静态代码块先,实例代码块后
七、复制变量的赋值顺序
似复刻变量在创建时首先给复制变量设置好初始值为0,接着是就地初始化的赋值,实例代码块的赋值,最后是构造方法的赋值
八、访问限定符
1.private
被private修饰的限制在只能在同一个类中访问,在类里能访问,在类中就要封装好对外能间接访问到的接口
2.default
默认权限是default,同包的范围都可访问
九、导类
文件里写好的类都是创好了类变量的,把类文件导入进来就有了类变量(在可访问到范围),然后类变量一加载就有了一系列的功能,包括可直接使用类变量里的静态方法(类变量.),也可以用类变量创建似复刻变量就可以使用到里面的类变量里的全部方法包括非静态的方法(用类变量new完的似复刻变量.)
-
import java.util.* —— 导入包,会按实际使用情况自动导入包中的类
-
import java.util.Arrays; —— 导入类,导入要使用的Arrays这个类这个类变量
也可以手动解引用来一次解到一个类:
java.util.Date date = new java.util.Date();
导入类时可以以静态导入类,即只导入一个类变量里面静态的内容,导入后静态的内容直接进文件,不需要去解类变量的哈希值去得里面类变量的静态方法了,可以直接使用类里面导进来的的静态方法(静态导只能导类,一次导入一个类变量里面的静态内容)
java.lang这个包的这层包下的所有类都已经自动导入有了