【面试题】Java基础
简述JDK和JRE的区别
JDK是Java开发人员在开发过程中使用的软件开发包,它提供了Java的开发环境和运行环境。
JRE是Java Runtime Enviroment,Java的运行环境。
如果你只想跑Java程序,只需要安装jre就够了,如果要从事开发就得安装jdk。
简述path和classpath的区别
path是系统变量,跟Java无关,里面存放的是各种可执行的应用程序的路径。
classpath是给Java使用的,从字面上来理解,就是类的路径,主要是模仿path,将类文件的路径配置到classpath中实现在系统的任何位置都可以对类文件进行编译和执行。
Java的关键字中有没有goto
goto是Java的保留字,不是关键字的一员。
static关键字是什么意思?Java中是否可以覆盖override一个private或者是static的方法?
static关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。
overload和override的区别?
方法的重写overriding和重载overloading是Java多态性的不同表现。重写overriding是父类与子类之间多态性的一种表现,重载overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写overriding,子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,他们或有不同的参数个数或有不同的参数类型,则称为方法的重载overloading.
接口和抽象类的区别是什么
Java提供和支持创建抽象类和接口。他们的实现有共同点,不同点在于:
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现多个接口,但是只能继承一个抽象类。
类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。
接口是否可以继承解耦?抽象类是否可实现接口?抽象类是否可继承实体类?
接口可以继承接口。抽象类可以实现接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数。
Java的基本数据类型跟引用数据类嘻嘻那个分别有哪些?
Java的基本数据类型有8个。分别是:整数型byte/short/int/long/char/float/double/char/boolean.
char变量中能不能存贮一个中文汉字?为什么?
char变量是用来存储unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字了。
简述&和&&的区别
&和&&都可以用作逻辑与的运算符,表示逻辑与and,当运算符两边的表达式的结果都为true时,整个运算的结果才为true,否则,只要有一方为false,则结果为false.
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。
&还可以用作位运算符。
Java中垃圾回收有什么目的?什么时候进行垃圾回收?
垃圾回收的目的是识别并且丢弃不再使用的对象来释放和重用资源。
如果对象的引用被置为null,垃圾回收期是否会立即释放对象占用的内存?
不会。在下一个垃圾回收周期中,这个对象将是可回收的。