Java与C++的区别:
(1)JAVA中没有显式的指针,但是C++中有
(2)JAVA只能支持单继承,但是C++支持多继承(一个类可以继承多个类)
(3)JAVA中有自动的垃圾回收机制,用完一个内存之后无需自己释放,但是C++需要自己delete或者free,所以可能出现内存泄漏
面向对象的三个/四个特征?
封装,继承,多态,抽象。
什么是类?
类是对象的模子,具有相同属性和方法的一组对象的集合,类是不存在的,是用来描述对象信息
什么是多态?
多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。多态的作用:消除类型之间的耦合关系。
多态的好处
1.允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)。即父类型的引用指向子类型的对象。主要有以下优点:
2.可替换性:多态对已存在代码具有可替换性
3.可扩充性:增加新的子类不影响已经存在的类结构
4.更加灵活
面向对象和面向过程的区别?
面向过程
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。比如,单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展。
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
缺点:性能比面向过程低。
C++的特点是什么?
封装,继承,多态。支持面向对象和面向过程的开发。
C++的异常处理机制?
抛出异常和捕捉异常进行处理。(实际开发)
c和c++,java的区别?
c是纯过程,c++是对象加过程,java是纯面向对象的
Java语言有哪些特点
1、简单易学、有丰富的类库
2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)
3、与平台无关性(JVM是Java跨平台使用的根本)
4、健壮和安全的语言
5、支持多线程
6、面向网络的语言
JDK、JRE、JVM 有什么区别?
JDK:(Java Development Kit)即java的开发与运行环境,他除了包含完整的JRE之外,还包含了供开发者使用的工具包。
JRE:(Java Runtime Environment)即Java运行环境,非开发者只需要安装 JRE来运行程序, 它包含java运行的所需的类库+JVM(java虚拟机)。
JVM: (Java Virtual Machine) 即Java虚拟机, 当我们运行一个程序时,JVM 负责将字节码转换为特定机器代码,JVM 提供了内存管理/垃圾回收和安全机制等。这种独立于硬件和操作系统,正是 java 程序可以一次编写多处执行的原因。
三者的关系:
作为程序员,就必须安装JDK,因为其中包含Java开发工具包,同时也包含了JRE。
作为使用者,运行已经开发好的Java程序,只需要安装JRE。
JVM和JRE的关系:JRE包含了JVM,JVM是运行Java程序的核心虚拟机,同时也包含了Java程序所需的环境支持
总结:JDK>JRE>JVM
字符流与字节流的区别?
1、字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。
2、字节流默认不使用缓冲区;字符流使用缓冲区。
3、字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;
字符流通常处理文本数据,它支持写入及读取Unicode码元。
普通类和抽象类有哪些区别?(java)
抽象类不能被实例化;
抽象类可以有抽象方法,只需申明,无须实现;
有抽象方法的类一定是抽象类;
抽象类的子类必须实现抽象类中的所有抽象方法,否则子类仍然是抽象类;
抽象方法不能声明为静态、不能被static、final修饰。
接口和抽象类有什么区别?(java)
(1)接口
接口使用interface修饰;
接口不能实例化;
类可以实现多个接口;
①java8之前,接口中的方法都是抽象方法,省略了public abstract。②java8之后;接口中可以定义静态方法,静态方法必须有方法体,普通方法没有方法体,需要被实现;
(2)抽象类
抽象类使用abstract修饰;
抽象类不能被实例化;
抽象类只能单继承;
抽象类中可以包含抽象方法和非抽象方法,非抽象方法需要有方法体;
如果一个类继承了抽象类,①如果实现了所有的抽象方法,子类可以不是抽象类;②如果没有实现所有的抽象方法,子类仍然是抽象类。
Java的内存划分
Java内存划分:栈,堆,代码区,数据区
栈:主要存储变量(局部变量或基本数据类型的变量),内容使用完毕立即清除(不会对内容赋初值)
堆:主要存储对象,使用完毕后在某个时间进行回收(对存储的内容进行赋初值)
代码区:存放类和方法
数据区:常量池和静态变量
访问权限(java)
1.public 公共的,所有人都可访问
2.Private 私有的,只能通过类中成员函数访问,类外不允许访问。
3.Protect 保护的,这种权限是为继承而设计的,保护所修饰的成员,对所有子类是可访问的,但只对同包的类是可访问的,对外包的非子类是不可以访问。
4.Default 包访问权限,在自己包内可以随意访问。
final关键字及其作用
1.被final修饰的变量不可以被改变,又被称为常量(修饰字符时,自负的地址不能改变)
2.被final修饰的方法不可以被重写
3.被final修饰的类不可以被继承
总结就是不可变