搜索
写经验 领红包
 > 旅游

java基础面试题重载和重写还有多少人做(java的重写和重载面试题)

导语:java基础面试题 重载和重写还有多少人记得

1、 java为什么能够跨平台运行?

因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。

Java编译运行过程:

1.1)编译期:.java文件,经过编译,生成.class字节码文件

1.2)运行期:JVM加载.class并运行.class(0和1)

跨平台、一次编程到处使用

2)名词解释:

2.1)JVM:java虚拟机

加载.class并运行.class

2.2)JRE:java运行环境

除了包含JVM以外还包含了运行java程序所必须的环境

JRE=JVM+java系统类库

2.3)JDK:java开发工具包

除了包含JRE以外还包含了开发java程序所必须的命令工具

JDK=JRE+编译、运行等工具

运行java程序的最小环境为JRE

开发java程序的最小环境为JDK

3)配置环境变量

JAVA_HOME:指向jdk的安装路径

CLASSPATH:表示类的搜索路径,一般简写为.

PATH:指向jdk下的bin目录

2、谈谈&和&&的区别?

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。

&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。

3、静态变量和实例变量的区别?

静态变量也称为类变量,归全类共有,它不依赖于某个对象,可通过类名直接访问;而实例变量必须依存于某一实例,只能通过对象才能访问到它。

4、面向对象的基本特征是什么?

1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意 与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一 部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象(抽象方法),二是数据抽象(抽象类)。

2)继承:子类拥有父类一切非私有的属性和方法。同时子类可以拥有特有的属性和方法。单一继承,传递性。

3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面 向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装 的对象,这些对象通过一个受保护的接口访问其他对象。

4)多态性:同一种事物的不同种表现形式。(行为的多态,对象的多态)

表现形式:重写,重载。

5、Overload和Override的区别

(Overload)重载:发生在同一个类之中,方法名相同、参数列表不同,与返回值无关、与final无关、与修饰符无关、与异常无关。

(Override)重写:发生在子类和父类之间,方法名相同、参数列表相同、返回值相同、不能是final的方法、重写的方法不能有比父类方法更为严格的修饰符权限、重写的方法所抛出的异常不能比父类的更大。

如果父类私有的方法,子类拥有方法签名相同的方法,子类不属于重写父类的方法,该方法属于子类的新方法。

6、Java中有没有多继承?

java中没有多继承,但是可以多实现,即一个类实现多个接口。

虽然没有多继承,但是java中接口可以近似的实现多继承,那就是接口;接口和接口之间可以进行多继承。

7、抽象类和接口的区别?

a.抽象类继承与object接口不继承object.

b.抽象类有构造器,接口中没有构造器。

c.抽象类中可以有普通成员变量和常量,接口中只能有常量,而且只能是

public static final 不写默认。

d.抽象类中可以有抽象方法,也可以由普通的方法,接口中只能有抽象的方法而且修饰符只能是public abstract 不写默认。

e.抽象类中可以有final的方法,接口中不能有final的方法。

f.抽象类只能是单继承,多实现,接口是可以多继承其他接口,但是不能实现接口,和不能继承其他类。

g.抽象类中可以有静态的方法,接口中不可以。

8、int和integer的区别?

int是java的基本数据类型,integer是1.4版本后提供的基本类型包装类,当两者作为成员变量时,初始值分别为;int是0;integer是null;其中integer提供了一些对整数操作的方法,还定义了integer型数值的最值,其他基本类型也有对应的包装类,基本类型包装类的出现,使得java完全面向对象.

9、String、StringBuffer与StringBuilder的相同点与区别--线程安全性体现

StringBuffer与StringBuilder相同点是它们都是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String每次操作会创建一些新的对象,所以速度快些。

不同点是StringBuilder是线程非安全的,StringBuffer是线程安全的, 当我们在字符串缓冲区被多个线程使用时,JVM不能保证StringBuilder的操作是安全的,虽然它的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下我们是在单线程下进行的操作,所以大多数情况下建议使用StringBuilder而不用StringBuffer的,就是速度的原因。对于三者使用的总结:

1.如果要操作少量的数据使用 String。

2.单线程操作字符串缓冲区,操作大量数据使用StringBuilder。

3.多线程操作字符串缓冲区,操作大量数据使用 StringBuffer。

特别注意:

StringBuffer是可变的,对StringBuffer中的内容修改都是当前这个对象。

String重写了equals和hashCode方法,StringBuffer没有重写equals方法。

String是final的类,StringBuffer不是。

String创建的字符串是在常量池中,创建的变量初始化一次,如果对该字符串修改,产生新的字符串地址值。

StringBuffeer是在堆中创建对象,当对该字符串修改时不产生新字符串地址值。频繁修改,建议StringBuffer

当不考虑并发问题时就用StringBuilder.

10、String s=new String(“xyz”);创建了几个String Object?

两个对象,一个是"xyx",一个是指向"xyx"的引用对象。

本文内容由小迪整理编辑!