网站建设的特征,免费一键生成短链接,网站开发研究背景,免费做调查问卷的网站转载自 JAVA面试常考系列一
题目一
什么是Java虚拟机#xff1f;为什么Java被称为平台无关的编程语言#xff1f;
java虚拟机是一个可以执行字节码文件#xff08;.class#xff09;的虚拟机进程。
为什么java与平台无关呢#xff1f;因为java源程序#xff08;.java为什么Java被称为平台无关的编程语言
java虚拟机是一个可以执行字节码文件.class的虚拟机进程。
为什么java与平台无关呢因为java源程序.java首先被编译器编译成字节码文件.class然后java虚拟机将字节码文件解释成机器码。而不同的操作平台装有不同的java虚拟机JVM能够将相同的字节码文件.class解释为对应平台所需要的机器码。所以java是一种与平台无关的编程语言。题目二JDK和JRE的区别是什么
JDK是完整的Java软件开发包包括编译器、Java运行时环境和其它的工具(比如JavaDocJava调试器)可以让开发者开发、编译、执行Java应用程序。
JRE是Java运行时环境它是JDK的一个组成部分只包括Java虚拟机、Java核心类库和支持文件。 题目三可否在static环境中访问非static变量
static变量在Java中是属于类的它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候会对static变量进行初始化。如果代码尝试不用实例来访问非static的变量编译器会报错因为这些变量还没有被创建出来还没有跟任何实例关联上。 题目四Java支持的数据类型有哪些什么是自动拆装箱
支持类型Java支持8种基本数据类型
其中整数值型有四种byte,short,int,long,
字符型一种char
浮点类型两种float,double
布尔型一种boolean
整数默认int型小数默认是double型。Float和long类型的必须加后缀。
Java还支持引用数据类型引用类型包括类、接口、数组等。引用类型声明的变量是指该变量在内存中实际存储的是一个引用地址实体在堆中。而包装类就属于引用类型。
自动拆装箱自动装箱和拆箱就是基本类型和引用类型之间的转换转换的目的是因为基本类型转换为引用类型后就可以new对象从而调用包装类中封装好的方法进行基本类型之间的转换或者toString还有就是如果集合中想存放基本类型泛型的限定类型只能是对应的包装类型。题目五“static”关键字是什么意思Java中是否可以覆盖(override)一个private或者是static的方法
“static”关键字表明一个成员变量或者是成员方法可以在没有所属类的实例变量的情况下被访问。
Java中static方法不能被覆盖因为static方法是编译时静态绑定的而方法覆盖是基于运行时动态绑定的。static方法跟类的任何实例都不相关所以概念上不适用。
java中也不可以覆盖private的方法因为private修饰的变量和方法只能在当前类中使用如果是其他的类继承当前类是不能访问到private变量或方法的当然也不能覆盖。题目六Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思
方法覆盖
Java中方法覆盖Overriding是指子类重新定义了父类的方法。方法覆盖必须有相同的方法名参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。重写方法不能为private运用中最典型的就是对接口方法的覆盖。
方法重载
Java中方法重载Overloading就是具有相同函数名返回类型可以不同参数个数、顺序、类型不同的函数。Overloading发生在同一个类里面具有两个或者是更多的函数具有相同名字的情况下。题目七Java中什么是构造函数什么是构造函数重载什么是复制构造函数
构造函数是对象被创建时初始化对象的成员方法它具有和它所在的类完全一样的名字。构造函数只能有入口参数没有返回类型因为一个类的构造方法的返回类就是类本身。构造函数定义后创建对象时就会自动调用它对新创建的对象分配内存空间和初始化。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下Java编译器会为这个类创建一个默认的构造函数。
方法名称相同参数项不相同。那么认为一个方法是另一个方法的重载方法。重载只跟参数有关与返回类型无关。方法名和参数相同而返回类型不相同不能说是重载。
构造方法重载是方法重载的一个典型的特例。参数列表不同。题目八Java为什么不支持多继承
Java中类不支持多继承因为两个继承于中一个父类的子类被同一个子类继承时会出现方法的引用歧义所以Java中只支持单继承即一个类只有一个父类。
java中的接口支持多继承即一个子接口可以有多个父接口。接口的作用是用来扩展对象的功能一个子接口继承多个父接口说明子接口扩展了多个功能当类实现接口时类就扩展了相应的功能。题目九什么是值传递和引用传递
值传递值传递(形式参数类型是基本数据类型)方法调用时实际参数把它的值传递给对应的形式参数形式参数只是用实际参数的值初始化自己的存储单元内容是两个不同的存储单元所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递引用传递(形式参数类型是引用数据类型参数)也称为传地址。方法调用时实际参数是对象(或数组)这时实际参数与形式参数指向同一个地址在方法执行中对形式参数的操作实际上就是对实际参数的操作这个结果在方法结束后被保留了下来所以方法执行中形式参数的改变将会影响实际参数。 题目十接口和抽象类的区别是什么
接口是对动作的抽象抽象类是对根源的抽象。
抽象类表示的是这个对象是什么。接口表示的是这个对象能做什么。比如大猫小猫来定义两个类他们的抽象类是猫。说明他们都是猫。猫可以奔跑狗也可以奔跑把“奔跑”定义成一个接口然后让这些类去实现它。
所以在高级语言上一个类只能继承一个类抽象类(正如猫不可能同时是动物和植物)但是可以实现多个接口(吃奔跑口、跳跃接口)。
区别如下
1、抽象类和接口都不能直接实例化如果要实例化抽象类变量必须指向实现所有抽象方法的子类对象接口变量必须指向实现所有接口方法的类对象。
2、抽象类要被子类继承接口要被类实现。
3、接口只能做方法申明抽象类中可以做方法申明也可以做方法实现。
4、接口里定义的变量只能是公共的静态的常量抽象类中的变量是普通变量。
5、抽象类里的抽象方法必须全部被子类所实现如果子类不能全部实现父类抽象方法那么该子类只能是抽象类。同样一个实现接口的时候如不能全部实现接口方法那么该类也只能为抽象类。
6、抽象方法只能申明不能实现接口是设计的结果 抽象类是重构的结果。
7、抽象类里可以没有抽象方法。
8、如果一个类里有抽象方法那么这个类只能是抽象类。
9、抽象方法要被实现所以不能是静态的也不能是私有的。
10、接口可继承接口并可多继承接口但类只能单根继承。