答:接口没有构造方法,抽象类有。抽象类中可以有普通成员变量;接口中没有普通成员变量。抽象类中可以包含非抽象普通方法;接口中的所有方法必须都是抽象的,不能有非抽象的方法。一个类可以实现多个接口,用逗号隔开,但只能继承一个抽象类;接口不可以实现接口,但可以继承接口,并且可以继承多个接口,用逗号隔开。
接口里面可以写方法实现吗?
答:可以,jdk1.8之后可以写接口的默认方法实现
Java中的UUID是什么?
答:生成一串随机的数字,它保证对在同一时空中的所有机器都是唯一的
Java类初始化顺序是怎样的?
答:如下
hashCode有什么作用?
答:hashcode在java中用于表示对象的唯一码。hashcode也用在Hash数据结构中,用来计算对象存放在Hash中的位置(存储地址)
hashCode和identityHashCode的区别?
答:
Object类中的hashCode方法会返回一个hash码,只有指向同一个对象的引用变量调用才会返回相同值,而String类中放宽了要求,对象里的值相等也返回相同值
identityHashCode方法是System类中的方法,调用该方法时,不管类中是否重写了Object类中的hashCode方法,都执行Object类中的hashCode方法,返回一个hashCode值。所以只有指向同一个对象的引用变量调用才会返回相同值
什么是Hash冲突?
答:两个对象都放入同一个hash容器中,且计算出的hash值都相同。也称为hash碰撞,此时的解决办法是再hash
Java常用的元注解有哪些?
答:
@Target:描述了注解修饰的对象范围
METHOD:用于描述方法
PACKAGE:用于描述包
PARAMETER:用于描述方法变量
TYPE:用于描述类、接口或enum类型
@Inherited:使被它修饰的注解具有继承性
@Retention:表示注解的运行时期范围
RetentionPolicy.SOURCE -------------注解将被编译器丢弃
RetentionPolicy.CLASS -------------注解在class文件中可用,但会被VM丢弃
RetentionPolicy.RUNTIME ---------VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息
@Documented:使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息
Java泛型中的T、R、K、V、E分别指什么?
答:
? --不确定的Java类型,是一个通配符泛型
T --表示确定的Java类型
K、V --Java中的键值对key、value
E --Element (在集合中使用,因为集合中存放的是元素,也表示Collection容器中的类型)
Java源码中的Class代表这个类型所对应的类,而Class<?>表示类型不确定的类。
Java金额计算怎么避免精度丢失?
答:使用BigDecimal进行与金钱相关的计算
Java语法糖是什么意思?
答:通过提供简单的编写方式在编译时完成对复杂操作的转换。通常是指Java中的简单语法,在编译时期还原成基础语法。
transient关键字有什么作用?
答:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化
如何实现对象克隆?
答:Java对象克隆又分深拷贝和浅拷贝,浅拷贝调用Object跟对象继承下来的clone,深拷贝可以借助SpringFramework提供的BeanUtils工具或者通过Java的序列化与反序列化实现。
对象克隆浅拷贝和深拷贝有什么区别?
答:浅拷贝与深拷贝的区别,浅拷贝:如果对象中还包括着子对象,浅拷贝只能拷贝一份父对象的内存空间,而子对象则只是拷贝了其引用,值没有进行拷贝。深拷贝则是涉及到这个对象当前所占的所有空间(值)都进行拷贝。
Java反射机制有什么作用?
答:反射可以让程序在运行时具有检测自己和获取当前运行环境的能力。