⽜客⽹---Java题库(1~10)
1、什么是JAVA虚拟机?为什么JAVA被称作平台⽆关的编程语⾔?
java虚拟机是⼀个可以执⾏java字节码的虚拟机进程。java源⽂件被编译成能够java虚拟机执⾏的字节码⽂件。java被设计成允许应⽤程序可以运⾏在任意平台,⽽不需要程序员为每⼀个平台单独重写或重新编译。java虚拟机让这个变为可能,因为它知道底层硬件平台指令长度和其他特性。
2、JDK和JRE的区别是什么?
java运⾏环境(JRE) ,它包括虚拟机、java核⼼类库和⽀持⽂件。
java开发⼯具(JDK) ,是完整的java软件开发包,包含JRE,编译器,解释器等。
3、“static”关键字是什么意思?Java中是否可以覆盖(override)⼀个private或者是static的⽅法?
⼀个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,⽽不必引⽤任何对象。你可以将⽅法和变量都声明为static。static 成员的最常见的例⼦是main()。因为在程序开始执⾏时必须调⽤main() ,所以它被声明为static。声明为static的⽅法称为或类⽅法。静态⽅法可以直接调⽤静态⽅法,访问静态变量,但是不能直接访问实例变量和实例⽅法。静态⽅法中不能使⽤this,因为静态⽅法不属于任何⼀个实例。Static 块仅在该类被加载时执⾏⼀次。
java中static⽅法不能被覆盖,因为⽅法覆盖是基于运⾏时绑定的,⽽static⽅法是编译时静态绑定的。static⽅法和类⽅法不相关。
java中不可以覆盖private⽅法,因为private修饰的对象和⽅法只能在当前类中使⽤,如果其他类继承当前类是不能访问到private变量或⽅法的,当然也不能覆盖。
4、是否可以在static环境中访问⾮static变量?
当类被java虚拟机载⼊时,会对static变量做初始化。⽽⾮static变量是在运⾏时动态加载的,当然不可以使⽤。编译器会报错
5、Java⽀持的数据类型有哪些?什么是⾃动拆装箱?
java⽀持8种基本类型:
byte
short
int
long
float
double
boolean
char
⾃动装箱:java编译器在基本数据类型和对应的对象包装类之间做的⼀个转化。⽐如把int转换为Integer,double转换为Double。反之就是⾃动拆箱。
6、Java中的⽅法覆盖(Overriding)和⽅法重载(Overload)是什么意思?
java中的overload发⽣在同⼀个类⾥⾯两个或者多个⽅法的⽅法名相同但是参数不同的情况。
⽅法覆盖(overriding)是⼦类重新定义了⽗类的⽅法。⽅法覆盖必须有相同的⽅法名,参数列表和返回类型。覆盖着可能不会限制它所覆盖的⽅法。
7、java中什么是构造⽅法,什么是构造⽅法重载?什么是复制构造⽅法?
java接口有没有构造方法当新对象被创建的时候,构造⽅法会被调⽤。每⼀个类都有构造⽅法,在程序员没有给类
提供构造⽅法的情况下,java编译器会给类提供⼀个默认的构造⽅法。
java中构造⽅法重载和⽅法重载很相似。可作为⼀个类创建多个构造⽅法。每⼀个构造⽅法必须有它唯⼀的参数列表。
Java不⽀持像C++中那样的复制构造⽅法,这个不同点是因为如果你不⾃⼰写构造⽅法的情况下,Java不会创建默认的复制构造⽅法。
8、java⽀持多继承吗?
java中不⽀持多继承,只⽀持单继承(即⼀个类只有⼀个⽗类)。但是java中的接⼝⽀持多继承,即⼀个⼦接⼝可以有多个⽗接⼝(接⼝的作⽤是⽤来扩展对象的功能,⼀个⼦接⼝继承多个⽗接⼝),说明⼦接⼝扩展了多个可能,当类实现接⼝时,类就扩展了相应的功能。
9、接⼝和抽象类的区别是什么?
本质:从设计层⾯来说,抽象是对类的抽象,是⼀种模板设计,接⼝是⾏为的抽象,是⼀种⾏为的规范。接⼝只能定义⼀系列⽅法,算是定义⾏为,⽽不能包含具体的变量,不能拥有⾃⼰的属性,但是抽象类能够拥有变量
接⼝中的所有⽅法隐含的都是抽象的。⽽抽象类则可以同时包含抽象和⾮抽象的⽅法。
类可以实现很多个接⼝,但是只能继承⼀个抽象类。
类可以不实现抽象类和接⼝声明的所有⽅法。但是,在这种情况下,类也必须得声明是抽象的。
抽象类可以在不提供接⼝⽅法实现的情况下实现接⼝。
java中接⼝中声明的变量默认都是final的,抽象类可以包含⾮final的变量。
java接⼝中的成员默认是public的,抽象类的成员函数可以是private,protectde或者是public
接⼝是绝对抽象的,不可以实例化,抽象类也不可以实例化
10、什么是值传递,什么是引⽤传递?
(解析)
值传递是对基本型变量⽽⾔的,传递的是该变量的⼀个副本,改变副本不影响原变量。
引⽤传递⼀般是对于对象型变量⽽⾔的,传递的是该对象地址的⼀个副本,并不是原对象 本⾝。
⼀般认为,java内的基本类型数据传递都是值传递,java中实例对象的传递都是引⽤传递。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。