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"的引用对象。
本文内容由小迪整理编辑!