1.说出java和c++的区别
- java是一个纯粹的面向对象语言,所有的对象都继承于java. lang.Object,C++兼容C,不但支持面向对象也支持面向过程
- java有着一次编译四处运行的跨平台特性。
- java不具有指针,但具有垃圾回收。
- java不支持多重继承,只能通过实现多个接口去达到相同目的
2.JDK,JRE,JVM之间的关系
jvm是虚拟机
jre是java的运行环境,其中包含了jvm和java核心库,但是不包含开发环境,没有任何的编译器和调试器等。jdk。jre+java工具+编译器和调试器。
3.java程序是编译执行还是解释执行
- 编译型语言:在程序运行前,通过编译器将源码转为二进制。再次执行这个程序时,则不要要再次编译。缺点是修改一小部分模块后,需要将所有的编码再次重新编译。
- 解释性语言先翻译成中间代码,再翻译成中间代码,然后由解释器
4.介绍一下面向过程和面向对象的区别
面向过程就是分析出解决问题需要的步骤,然后通过一个个函数按照流程去实现
面向对象则是将事务划分位对象,并将对象分为各个的完整功能的系统。
5.面向对象有哪些特性
4大特性为封装,继承,多态,抽象
- 封装体现在可以通过privicte这样将信息隐藏类内部,通过类实现方法实现对类的访问,良好的封装可以减少耦合。
- 继承体现的是从已有的类派生出子类,新的类继承了父类的属性和行为,扩展了新的能力,java是单继承的,所以说一个子类只能有一个父类。
- 多态:是一个行为的不同多种表现方式的能力,实现多态的三要素,继承,重写,父类引用指向子类对象
静态多样性:通过重载实现,相同方法根据不同的参数做出不同处理
动态多样性:子类中重写父类的方法,运行期间判断引用对象的类型,根据类型执行相应的方法 - 抽象:将客观事务用代码抽象出
6.面向对象的六大原则 - 单一职责:对象设计要求独立,不能设计万能对象。列入在商品类的逻辑下不应该涉及订单类的逻辑
- 里式替换原则,子类能够完全替代父类,反之则不行。这表示子类要实现父类的基本功能的原则下再去扩展新的功能。父类有a方法,子类就必须实现a方法。
- 迪米特原则:高内聚,低耦合。要减少依赖的互相依赖。
- 开闭原则:开放扩展,封闭修改。业务要求变更,尽量不对原代码进行修改,而是在原有的基础上进行扩展。
- 依赖倒置原则:高层模块不应该直接依赖于底层模块的具体实现,而是依赖底层的抽象。,接口和抽象类不应该依赖于实现类,而实现依赖接口或抽象类。核心--基于接口编程,提前涉及好接口框架
- 接口隔离原则:一个对象和另外一个对象交互的过程中,依赖内容最小。应该保证2者的依赖相互不是很紧密。接口的大小过大导致污染,过小导致调用麻烦。
7.数组是否为对象
是,
对象是根据某个类建立出的实列,其具有对象的特征如封装了属性,可以调用方法,对象是封装数据,在内存中的一个代码块。
8.JAVA的基本数据类型
8种,一字节对应8bit
byte 8bit char 16bit shot 16bit int 32bit float 32bit
long 64bit double 64bit boolean 1bit只对应2个值
9.为什么不能用浮点数表示金额
计算机种保存的小鼠是10进制小数的近似值,并非准确值,应该使用Long或者BigDecimal
10.什么是值传递和引用传递
值传递是相对基本变量而言,传递的是变量的一个副本,改变副本不影响原变量
引用传递是对象型变量而言,传递的是该对象地址的副本,而不是原对象本身,2者共同执行一个地址空间
java中不存在引用传递,只有值传递,不存在a执行b,b执行某一个对象。
11.了解过java的包装类型吗
因为java是面向对象的语言,所以很多集合类中无法将int,double这种放入,因为集合容器需要一个Object类型,为了让基本类型也具有对象的特征,出现了包装,使其具有对象的性质,添加了属性和方法,丰富了基本类型的操作。
12.自动装箱和拆箱
结合11点回答,装箱就是将基本类型转为包装类型,拆箱相反