JavaSE Day04 面向对象
2021-02-07 本文已影响0人
望穿秋水小作坊
1. Java 程序的内存划分,分为 5 大区域,分别是什么?(重点,牢记)
-
PC 寄存器(Program Counter Register):存储 Java 虚拟机正在执行的字节码指令地址 -
Java 虚拟机栈(Java Virtual Machine Stack):存储栈帧 -
堆(Heap):存储着 GC 锁管理的各种对象 -
方法区(Method Area):存储每一个类的结构信息(比如字段和方法信息、构造方法和普通方法的字节码等) -
本地方法栈(Native Method Stack):用来支持 native 方法的调用(比如用 C 语言编写的方法)
image.png
2. Java 的构造方法怎么写?可以重载吗?
image.png
3. Java 中 this 关键字是什么?本质是什么?如何在同一个类的一个构造器中调用另一个构造器?
- this 是一个指向当前对象的引用
- this 的本质是一个隐藏的、位置最靠前的方法参数
-
this()可以调用其他构造器
image.png
4. 如何理解 this 的本质是一个隐藏的、位置最靠前的方法参数 这句话呢?(注意理解这个点,非常重要)
image.png
- 上面的
dog1.run()这句代码相当于 方法区run(dog1)的调用 - 上面的
Dog dog1 = new Dog(10);这句代码等价于 方法区中Dog dog1 = Dog(新对象的地址, 10);因为new会创建出一个堆空间地址
5. Java 在什么情况会生成默认构造方法?如果有自定义构造方法,默认构造方法还在吗?
- 如果开发者不给类声明构造方法,就会自动生成无参默认构造方法
- 如果开发者有自定义构造方法,默认构造方法就不会生成了
image.png
6. Java 中的包本质是是什么?有什么作用?包的命名建议是什么?(重要)
- 包的本质就是文件夹
- 作用:① 将不同的类进行组织管理、访问控制 ② 解决命名空间
- 命名建议:一般用
公司名称的全小写字母命名
image.png
7. 如何在一个类中使用其他包的类呢?(至少说两种方式)
image.png
8. 为了方便,Java 编译器会为每个源文件自动导入哪 2 个包?import aa.bb.*;这句代码导入了哪些位置的类?
- 自动导入
import java.lang.*;和import .*; -
import aa.bb.*;代表导入 aa/bb 文件夹下的所有类,并不会递归导入子文件夹的类
image.png