1、Java和C++的区别:
Java据有跨平台特性,c++依赖于特定的平台
Java没有指针
支持自动垃圾回收
不支持多重继承
2、Java--jvm、jre、jdk
jdk:整个Java的核心,包括了Java运行环境JRE,Java工具和Java基础类库
jre:运行Java的环境集合,包含jvm标准实现与Java核心类库
jvm:Java虚拟机,实现跨平台的核心部分
jdk包含jre和jvm,jre包含jvm。
3、跨平台特性
Java 源代码经过编译,生成字节码文件,交由 Java 虚拟机来执行,不同的系统有不同的JVM,借助JVM 实现跨平台。Java的编码方式--Unicode编码标准,为每个字符制定唯一的数值,在任何平台都可以放心的使用
4、Java语言特点:
面向对象
一次编译,到处运行
支持多线程、网络编程
安全性和可靠性较高
5、面向对象和面向过程的区别:
- 面向对象:易维护、易复用、易扩展,具有封装、继承、多态的特性,可以设计出低耦合的系统。
- 面向过程:性能比面向对象高,类调用时需要实例化,消耗资源。较难维护。
6、面向对象的三大特性:
- 封装:类封装属性和行为,方法封装特定的业务逻辑,通过访问控制符限制封装内容的访问权限。
- 继承:通过extends实现代码复用,涉及的对象有超类、派生类、接口。超类封装派生类的共有属性和行为,接口封装部分派生类共有的属性和行为,一个类可以实现多个接口,从而突破了继承的单一性限制。
- 多态:同个行为具有多个不同表现形式或形态的能力。实现多态的必要条件:继承、重写、上溯造型。上溯造型是指将子类的引用赋给父类对象,编译时属性的调用取决于父类,并且能够引用的只有父类声明过的方法。运行时方法的结果看子类的结果。
7、访问控制修饰符:
- public:公开的
- protected:本类、同包类、同包子类可以访问
- default:本类、同包类、同包子类可以访问
- private:本类可以访问
8、重写和重载的对比:
- 重写:发生在父子类中,方法名、参数列表相同,返回值、抛出异常小于等于父类,访问控制修饰符大于等于父类。当父类方法由private修饰时,子类的同名方法就不属于重写。绑定在运行期,通常子类对父类的方法不满时,就会对父类的方法进行重写。
- 重载:发生在一个类中,方法名相同,但参数列表不同,重载的方法不能以方法的返回值区分。编译时编译器会根据方法签名自动匹配和调用对应的方法。构造函数(构造器)就是重载的表现。
9、抽象类和接口的对比:
- 抽象类:通过abstract class定义,是抽象方法的集合,一个子类只能继承一个抽象类,继承后需要重写父类中的所有抽象方法。抽象类中可以有抽象方法,也可以有其他类型的方法。访问控制修饰符没有限定。可以有构造函数,字段的声明可以是任意的。
- 接口:由interface定义,一个子类可以实现多个接口,接口可以继承多个接口。子类实现的时候需要重写接口中的所有方法,接口中的方法不能使用public外的,不能有构造器,接口中只有常量。
10、变量:
- 成员变量(类变量、实例变量)、局部变量
- 类变量:static修饰,定义在类中,方法外,有默认的初始值,存储在方法区,跟随类的加载而生存。
- 实例变量:无static修饰,存于堆中,定义在类中,方法外,跟随实例的创建和销毁而生存。
- 局部变量:定义在方法中,没有默认初始值,存于栈中,跟随方法的调用和结束调用而生存。