答:静态变量和实例变量最大的区别在于,静态变量被static关键字修饰,被这个关键字修饰的变量在类第一次被加载的时候就被加载到方法区中,这是在jdk1.6之前,jdk之后都是存放到对象头中进行保存,也就是说我们可以直接通过类名。的形势调用,被所有类共享,而实例变量则需要创建对象,然后通过对象去调用,
2、如何实现克隆?浅克隆和深克隆的区别?答:实现克隆有三种方法;一种就是通过实现Cloneable接口,然后重新克隆方法;再就是通过反射直接通过copy方法实现克隆,第三种就是通过实现序列化接口,然后通过io流进行克隆;对于什么浅克隆,深克隆,我举个例子,比如我们a对象的属性都是基本数据类型,我们直接进行复制即可,但是如果有引用类型数据,那么复制之后由于引用数据类型只是存放的一个引用,克隆后引用数据类型还是指向的同一个数据源,这也就是所谓的浅克隆,那么深克隆也就容易理解了,深克隆就是将引用数据类型指向的引用也克隆下来,具体的方法我们可能对实现cloneable的接口增加一个递归来完成深克隆,或者通过序列化,然后使用io流来进行深克隆
3、静态方法中是否能够调用非静态方法?答:不能;静态方法在类第一次加载的时候数据就已经被加载,且只加载一次,被所有类共享,可以直接通过类。方法的形势进行的调用,而我们静态方法则需要实例化对象才能进行调用,为什么要实例化之后才能调用呢,这主要是在构建运行环境的时候,会有一个给this指针赋值的操作,静态方法是没有这个this指针的,也就是说通过静态调用非静态,无法给非静态方法的this赋值,所以不能进行调用
4、JDK JRE JVM 的关系?答:他们是一个包含关系,JDK包含JRE运行环境,同时携带了一些工具包,JRE又包含JVM,还包含一些类库,在程序只有JRE的情况也是能够运行的,jvm则是我们的虚拟机,提供类的加载,以及空间分配,加载引擎等等
5、什么是显示转换;什么是隐式装换?答:显示转换就是从低精度转变为高精度,字节型 --->短整形 ---->整形 ----->长整形 ---->单精度 ---->双精度
隐私转换也就是我们常说的强制转换,会造成精度丢失
6、++I和I++的区别?答:首先是复制顺序不同++i是先加后赋值,i++是先赋值后加,然后再就是效率问题,++i的效率更高,再就是++i不能作为左值
7、内部类和静态内部类的区别?答:对于内部类来说,你可以将他看着类中的一个独特的方法,他可以使用类中任意属性或者方法,内部类调用类的属性需要通过类名调用,而静态内部类则不同,他就相当于借我们这个类做为一个壳子。
8、super,this关键字有什么作用?答:super主要是在父子继承中使用,子类需要先调用父类的构造器,可以通过super指定调用的父类的构造器,this一般表示当前类;
9、创建子类对象时,会执行父类的构造器吗?说一下执行的过程答:会执行父类构造器,执行的过程,先创建子类对象,然后会调用父类构造器,父类如果还有父类,继续向上调用,然后再调用子类构造器 完成初始化。
10、什么叫形参什么叫实参?答:形参和实参都是用于数据传输的,在我们实例运用中,主函数定义的参数我们可以看着为实参,比如i=0,而调用方法中定义的接受参数则属于形参,只存在于被调用函数体内,使用完后就回收了。



