摘要
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