摘要
1、基本概念
1.1、Java语言有什么优点
- 纯面向对象:Everything is object
- 平台无关性:通过使用虚拟机(JVM)来实现跨平台性,Write Once,Run Anywhere
1.2、Java与其他语言有什么异同
待补充……
| Java | C++ | Python | Go | Rust | |
|---|---|---|---|---|---|
| 运行过程 | 解释型语言 | 编译型语言 | |||
| 面向对象 | 纯面向对象 | 面向对象、面向过程 | |||
| 指针 | 没有,更安全 | 有 | |||
| 多重继承 | 不支持 | 支持 | |||
| 接口概念 | 有 | 无接口 | |||
| 运算符重载 | 不支持 | 支持 | |||
| 平台无关 | 是 | 否 | |||
| 内存分配 | 垃圾回收器 | 手动分配与释放 | |||
| goto | 不支持 | 支持 |
1.3、Java程序初始化的顺序是怎样的
- 静态对象/变量优于非静态对象/变量,并且静态对象/变量仅初始化一次
- 父类优先于子类进行初始化
- 成员变量按照定义顺序进行初始化
1.4、作用域关键字与可见性问题
| 关键字 | 当前类 | 当前包 | 子类 | 其他包 |
|---|---|---|---|---|
| public | ☑️ | ☑️ | ☑️ | ☑️ |
| protected | ☑️ | ☑️ | ☑️ | ❌ |
| default | ☑️ | ☑️ | ❌ | ❌ |
| private | ☑️ | ❌ | ❌ | ❌ |
1.5、为什么Java有些接口没有任何方法
这种借接口通常称为标识接口,在项目中经常会用instance of判断一个实例对象的类型是否实现了某个标识接口。
比如常见的Cloneable、Serializable,都是标识接口。
1.6、深拷贝、浅拷贝
Java取消了指针的概念,但实质上每隔new语句返回的都是一个指针的引用。
Java在处理基本数据类型时,是按值传递;此外,为引用传递。
浅拷贝:被复制对象的所有变量都含有与原来对象相同的值,而所有对其他对象的引用仍然指向原来的对象。
深拷贝:把复制对象所引用的对象也复制了一遍。
怎么实现深拷贝呢?
可以通过实现Cloneable标识接口,并重写Object类的clone方法,在方法内部把非基本类型的属性也clone一遍。
1.7、反射机制
概念的名字多少有些奇怪,但其实用起来还是比较简单的。
说白了,就是可以拿到一个对象所属的类、获取一个类的所有成员变量和方法、在运行时创建对象、在运行时调用对象的方法。



评论区
0/2048