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。

七、构造器不可以被重写,因为构造器不能被继承,因为构造器与类同名,继承构造器没有意义,而且父类构造器是会被自动调用的。

八、

 

posted @ 2022-12-02 23:13  springcode  阅读(82)  评论(0编辑  收藏  举报