- JVM、JRE、JDK三者的联系与区别:
JVM(java virtual machine):java虚拟机,是JRE的一部分,它是整个java实现跨平台的最核心 的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。所以平台上 的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代 码,然后 由虚拟机来解释执行。
JRE(java runtime environment):java运行环境,包含了JVM和java的核心类库(Java API)。
JDK(java development kit):java标准开发包,包含了jre和开发工具(只需要安装JDK即 可) - 局部变量和成员变量(分为:类变量,实例变量)的区别:
定义位置:局部变量:定义在方法中;成员变量:定义在方法外部,类中;
作用范围:局部变量:在定义的方法中;成员变量:在整个类中;
默认值:局部变量:没有默认值,在使用之前必须进行初始化;成员变量:JVM会默认初始 化,不同数据类型的变量初始化值不同
内存位置:局部变量:堆内存中;成员变量:位于栈内存中;
生命周期:局部变量:方 法调用而存在,方法调用结束而消失;成员变量:随着对象的创建而 产生,随着对象被回收而消失 - 方法重载和重写的区别:
方法重载:发生在同一个类中,方法名相同,参数列表(个数,顺序,类型)不同,与返回值 无关,与抛异常无关;
方法重写:发生在子父类中,方法名相同,参数列表相同,“返回值”相同,访问不能 被缩 小,异常不能被扩大; - java中的this和super的用法:
this:指代当前对象,在构造方法中调用另一个构造方法,this应该放在第一行;
super:当前对象父类的引用在子类构造器显示调用父类构造器,(不能和this同时使用); - 接口和抽象类的区别:
抽象类(abstract):不能创建实例,可以有抽象方法,也可以没有,子类继承抽象类时,子 类可以是抽象类,也可以是普通类,但必须重写(实现)父类的抽象方法,不能和 static,final连用,可以由抽象构造方法,也可以有普通构造方法;
接口(interface):接口的继承可以是多继承,接口是抽象类的另一种形式,接口中的方法全 部为抽象方法,接口中的成员变量默认都是public static final (静态常量),一个类只能 继承 一个直接的父类,但能实现多个接口,不能创建接口本身的对象,可以接口的引用 指向实现类的对象,接口可以继承接口; - java中’= ='和equals方法的区别
“= =”:基本数据类型比较值,引用数据类型比较地址值,创建对象后,地址值改变;
equals():(属于Object类):比较地址值;
一般情况下,二者都比较地址值(只要创建对象,地址值就不同),如果在类中重写equals (),”==”还是比较地址值,equals要看怎么重写的方法,在字符串类和包装类中,如果直接赋 值,那么直接赋值的内容相同,二者都返回true,是因为有缓冲区(将数值存放在一个对象数 组中),但赋值必须在对应类型的数值范围内,因为超出范围,便会创建一个新的对象; - Java中List,Set,Map三者的区别:
List:继承Collection接口,存放元素是有序可重复的;
Set:继承Collection接口,在放的是无序不可重复的;
Map:以键值对的方式存储(key-value),key值不能重复,否则会覆盖,并且放入无序;