java基础面试
一、clone
一、浅拷贝clone()
如果对象中的所有数据域都是数值或者基本类型,使用clone()即可满足需求,如:
Person p = new Person();
Person p1 = p.clone();
这样p和p1分别指向不同的对象。
深拷贝有实现cloneable接口,重写object的clone接口,还有序列化实现真正的clone。
二、创建对象
1、使用new关键字;
2、使用Class类的newInstance方法,可调用无参的构造函数创建对象;
3、使用Constructor类的newInstance方法;
4、使用clone方法;
5、使用反序列化。
三、多态
接口的作用:制定标准、提供可扩展性,实现依赖倒置
开闭原则、对修改关闭、对扩展开放
接口与抽象类的区别
接口约定的是实现的方法和参数,强调规则的制定,抽象类同时提供一些默认的行为例如定义一些初始化、基础、以及类回收的方法,另外一个实现类可以实现多个接口,但只能继承一个抽象类。
四、内部类。
成员内部类、局部内部类、静态内部类、匿名内部类。
实际开放中pojo类会使用内部类,一些内,在业务中存在某种关系,使用内部类,更简洁、防止类爆炸。
五、static和final在java中的意义
final的意义:给方法上锁,防止任何继承类改变他本来的含义和实现。
若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采取这种做法。
提高程序执行的效率,将一个方法设成final后,编译器就可以把对那个方法的所有调用都置入嵌入调用里(内嵌机制)
static总结:
static修饰成员函数:该成员函数不能使用this对象调用。
static不能修饰构造函数
static不能修饰函数参数、形参和实参
static不能修饰局部成员变量
static修饰成员字段
当类被虚拟机加载是,首先按照先后顺序对static成员字段进行初始化。
static修饰语句块
当类被虚拟机加载时,按照声明顺序先后初始化static成员字段和static语句块
static所修饰的方法和字段是只属于类,所有对象共享。
在static所修饰的函数和语句块中不能使用非static成员字段。
在java不能直接定义全局变量,是通过static来实现的。
在java中没有const,不能直接定义常量,通过static final来实现。
六、基本数据类型
double和long8字节、int和float4字节、char和short2字节、byte一字节、boolean一bit、一字节等于8bit。
非基本类型BigDecimal引用的对象占用的字节数是可变的,具体大小依赖于你输入的数据量,要求的精度和选择的舍入方法。如果你问的是类型为BigDecimal的引用变量占用的字节数,那只有一个指针变量的大小,目前为4。
七、构造器不可以被重写,因为构造器不能被继承,因为构造器与类同名,继承构造器没有意义,而且父类构造器是会被自动调用的。
八、