文章目录
- 1.JDK和JRE及JVM有什么区别?
- 2.常用数字类型的区别?
- 3.面向对象的三大特征是什么?
- 4.接口和抽象类的异同?
- 5.静态变量和实例变量(方法)的区别?
- 6.类的执行顺序?
- 7.说明java的异常体系:
- 8.String与字符串常量池:
- 9.String,StringBuilder,StringBuffer的区别:
- 10.List和Set的区别:
- 11.ArrayList,LinkedList的不同:
- 12.HashSet,TreeSet的区别?
- 13.Object类hashCode()和equals()的区别
- 14.Java IO中有几种类型的流
- 15.请介绍JVM的内存组成(重点)
- 16.请简述Java的垃圾回收(GC)
- 17.垃圾回收(GC)的算法(了解名字)
- 18.Java中内存泄漏的场景
- 19.请实现对象的浅复制和深复制
- 20.Servlet生命周期(单例多线程)
1.JDK和JRE及JVM有什么区别?
<1> JDK是用java程序员用来帮助自己开发的包
<2> JRE是运行java的环境的集合
<3> JVM是java虚拟机,JVM是java的核心,只识别字节码文件,用来把java的代码码编译成字节码或者把字节码又编译成代码的, 实际是上是JVM可以跨平台,帮助java实现跨平台
2.常用数字类型的区别?
<1> 字节(byte) 取值的范围是:-2的7次方 到 2的7次方-1(-128~127), 储存空间 1个字节
<2> 整短数(short) -2的15次方 到 2的15次方-1(-32768~32767) 2个字节
<3> 整数(int) -2的31次方 到 2的31次方-1 (约-21亿~21亿) 4个字节 #重点
<4> 长整数 -2的63次方 到 2的63次方 8个字节
<5> 单精度(float) 2的-149次方 到 2的128次方-1 4个字节 #重点
<6> 双精度(double) 2的-1074次方 到 2的1024次方-1 8个字节 #重点
3.面向对象的三大特征是什么?
<1> 封装:
1- 可以实现专业的分工(用户只需要看到功能,代码底层不需要关注)
2- 减少耦合(做需求时,大家都面向接口开发,可以互不干扰)
3- 可以自由修改类的内部结构(使用者不需要关心里面如何实现,换通俗句话说,只要功能可以实现,里面的代码可以变化)
注意:封装在现在开发分工和解耦的大前提下,必须要掌握的技能
<2> 继承:
1- 在已有的类中派生出新的类,新的类可以吸收已有的类,还可以扩展新的能力
2- 父类是子类的抽象类,子类是父类的具象类
3- 继承类只能继承一个抽象类(父类),实现类可以实现多个接口
<3> 多台:
1- 多态是同一个行为具有多个不同表现形式或形态的能力
2- 多态是三大特性中最重要的特性,前面两个都是为多态做准备
3- 多态是同一个接口,不同的实例使用时而执行的不同操作
4.接口和抽象类的异同?
<1>相同点:
1- 都是上层的抽象
2- 不能被实例化
3- 都可以包含抽象方法
<2>不同点:
1- 抽象类可以包含方法的实现,而接口只能声明方法
2- 继承类只能继承一个抽象类,接口可以被实现类实现多个接口 #java更推荐用接口来实现抽象
3- 抽象级别: 接口>抽象类>实现类
4- 作用不同,接口是用来约束程序的行为,而继承是用于代码的复用
5.静态变量和实例变量(方法)的区别?
<1> 语法区别: 静态要用static来声明