常见的Java问题

1.什么是java虚拟机?为何java被称做是“平台无关的编程语言”?java

Java虚拟机是一个能够执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。c++

Java被设计成容许应用程序能够运行在任意平台,而不须要程序员为每一个平台单独重写或者从新编译。Java虚拟机让这个变成可能,由于它知道底层硬件平台的指令长度和其余特性。程序员

2.JDK和JRE的区别是什么?编程

Java运行环境是将要执行Java程序的Java虚拟机。它同时包含了执行applet须要的浏览器插件。Java开发工具包是完整的Java软件开发包,包含了JRE,编译器和其余工具(如:JavaDoc,Java调试器),可让开发者开发、编译、执行Java应用程序。浏览器

3."static"关键字是什么意思?Java中是否能够覆盖(override)一个private或者static的方法?app

“static”关键字代表一个成员变量或者是成员方法能够在没有所属类的实例变量的状况下被访问。编程语言

java中static方法不能被覆盖,由于方法覆盖是基于运行时动态绑定的。static方法跟类的任何实例都不相关,因此概念上不适用。ide

4.是否能够在static环境中访问非static变量?函数

static变量在java中是属于类的,它在全部的实例中的值是同样的。当类被java虚拟机载入的时候,会对static变量进行初始化。若是你的代码尝试不用实例来访问非static的变量,编译器会报错,由于这些变量尚未被建立出来,还没和任何实例关联上。工具

5.java支持的数据类型有哪些?什么是自动拆装箱?

java语言支持的8种基本数据类型是:

byte

short

int

long

float

double

boolean

char

自动装箱是java编译器在基本数据类型和对应的对象包装类型之间作的一个转化。好比:把int转化成Integer,double转化成Double等等。反之就是自动拆箱。

6.java中的方法覆盖(overriding)和方法重载(overloading)是什么意思?

java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同可是参数不一样的状况。与此相对,方法覆盖是说子类从新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

7.java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

当新对象被建立的时候,构造函数会被调用。每个类都有构造函数。在程序员没有给类提供构造函数的状况下,java编译器会为这个类建立一个默认的构造函数。每个构造函数必须有它本身惟一的参数列表。java不支持像c++中那样的复制构造函数,这个不一样点是由于若是你不本身写构造函数的状况下,java不会建立默认的复制构造函数。

8.java支持多继承么?

不支持,每个类都只能继承一个类,但能够实现多个接口。

9.接口和抽象类的区别是什么?

java提供和支持建立抽象类和接口,它们的实现有共同点,不一样点在于:

 

接口中全部的方法隐含的都是抽象的。而抽象类则能够同时包含抽象和非抽象的方法。

类能够实现不少个接口,但只能继承一个抽象类。

类若是要实现一个接口,它必需要实现接口声明的全部方法。可是,类能够不实现抽象类声明的全部方法,固然,在这种状况下,类也必须得声明成是抽象的。

抽象类能够在不提供接口方法实现的状况下实现接口。

java接口中声明的变量默认都是final的。抽象类能够包含非fianl的变量。

java接口中成员函数默认是public的。抽象类的成员函数能够是private,protected或者是public。

10.什么是值传递和引用传递?

对象被值传递,意味着传递了对象的一个副本。所以,就算是改变了对象的副本,也不会影响源对象的值。

 

对象被引用传递,意味着传递的并非实际的对象,而是对象的引用。所以,外部对引用对象所作的改变会反映到全部的对象上。

相关文章
相关标签/搜索