没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
19页
1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。 Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。 Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。 2.JDK和JRE的区别是什么? JDK: java开发工具包,包含了JRE、编译器和其它工具(如:javaDOc、java调试器) JRE: java运行环境,包含java虚拟机和java程序所需的核心类库。 如果只是想跑java程序,那么只需安装JRE,如果要写java程序并且运行,那就需要JDK了。
资源推荐
资源详情
资源评论
整了最新最全的 Java 常见面试题及答案
1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语
言”?
Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源
文件被编译成能被 Java 虚拟机执行的字节码文件。
Java 被设计成允许应用程序可以运行在任意的平台,而不需要程
序员为每一个平台单独重写或者是重新编译。
Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长
度和其他特性。
2.JDK 和 JRE 的区别是什么?
JDK:
java 开发工具包,包含了 JRE、编译器和其它工具(如:
javaDOc、java 调试器)
JRE:
java 运行环境,包含 java 虚拟机和 java 程序所需的核心类
库。
如果只是想跑 java 程序,那么只需安装 JRE,如果要写 java 程序
并且运行,那就需要 JDK 了。
3."static"关键字是什么意思?Java 中是否可以覆盖一个 private 或
者是 static 的方法?
如果一个类的变量或者方法前面有 static 修饰,那么表明这个方
法或者变量属于这个类,也就是说可以在不创建对象的情况下直接
使用
当父类的方法被 private 修饰时,表明该方法为父类私有,对其他
任何类都是不可见的,因此如果子类定了一个与父类一样的方法,
这对于子类来说相当于是一个新的私有方法,且如果要进行向上转
型,然后去调用该“覆盖方法”,会产生编译错误
class Parent {
private fun() {
...
} }class Child extends Parent {
private fun() {
...
}}class Test {
public static void main(String[] args) {
Parent c = new Child();
c.fun(); //编译出错
}}
static 方法时编译时静态绑定的,属于类,而覆盖是运行时动态
绑定的(动态绑定的多态),因此不能覆盖.
4.Java 支持的基本数据类型有哪些?什么是自动拆装箱?
java 支持的基本数据类型有以下 9
种:byte,shot,int,long,float,double,char,boolean,void.
自动拆装箱是 java 从 jdk1.5 引用,目的是将原始类型自动的装换
为相对应的对象,也可以逆向进行,即拆箱。这也体现 java 中一
切皆对象的宗旨。
所谓自动装箱就是将原始类型自动的转换为对应的对象,而拆箱就
是将对象类型转换为基本类型。java 中的自动拆装箱通常发生在
变量赋值的过程中,如:
Integer object = 3; //自动装箱
int o = object; //拆箱
在 java 中,应该注意自动拆装箱,因为有时可能因为 java 自动装
箱机制,而导致创建了许多对象,对于内存小的平台会造成压力。
5. 覆盖和重载是什么?
覆盖也叫重写,发生在子类与父类之间,表示子类中的方法可以与
父类中的某个方法的名称和参数完全相同,通过子类创建的实例对
象调用这个方法时,将调用子类中的定义方法,这相当于把父类中
定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态
性的一种表现。
重载是指在一个类中,可以有多个相同名称的方法,但是他们的参
数列表的个数或类型不同,当调用该方法时,根据传递的参数类型
调用对应参数列表的方法。当参数列表相同但返回值不同时,将会
出现编译错误,这并不是重载,因为 jvm 无法根据返回值类型来判
断应该调用哪个方法。
6.Java 支持多继承么?如果不支持,如何实现?
在 java 中是单继承的,也就是说一个类只能继承一个父类。
java 中实现多继承有两种方式,一是接口,而是内部类.
//实现多个接口 如果两个接口的变量相同 那么在调用该变量的时候 编译出错
interface interface1 {
static String field = "dd";
public void fun1();
}interface interface2 {static String field = "dddd";
public void fun2();
}class child implements interface1,interface2 {
static String field = "dddd";
@Override
public void fun2() {
}
@Override
public void fun1() {
} }
//内部类 间接多继承 class Child {class Father {
private void strong() {
System.out.println("父类");
}}class Mother {
public void getCute() {
System.out.println("母亲");
}}public void getStrong() {
Father f = new Father();
f.strong();
}public void getCute() {
Mother m = new Mother();
m.getCute();
}}
7.什么是值传递和引用传递?java 中是值传递还是引用传递,还是都
有?
值传递 就是在方法调用的时候,实参是将自己的一份拷贝赋给形
参,在方法内,对该参数值的修改不影响原来实参,常见的例子就
是刚开始学习 c 语言的时候那个交换方法的例子了。
引用传递 是在方法调用的时候,实参将自己的地址传递给形参,
此时方法内对该参数值的改变,就是对该实参的实际操作。
在 java 中只有一种传递方式,那就是值传递.可能比较让人迷惑的
就是 java 中的对象传递时,对形参的改变依然会影响到该对象的
内容。
下面这个例子来说明 java 中是值传递.
public class Test {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("hello ");
getString(sb);
System.out.println(sb);
}
public static void getString(StringBuffer s) {
//s = new StringBuffer("ha");
s.append("world");
}}
在上面这个例子中,当前输出结果为:hello world。这并没有什么
问题,可能就是大家平常所理解的引用传递,那么当然会改变
StringBuffer 的内容。但是如果把上面的注释去掉,那么就会输
出:hello.此时 sb 的值并没有变成 ha hello. 假如说是引用传递的
话,那么形参的 s 也就是 sb 的地址,此时在方法里 new
StringBuffer(),并将该对象赋给 s,也就是说 s 现在指向了这
个新创建的对象.按照引用传递的说法,此时对 s 的改变就是对 sb
的操作,也就是说 sb 应该也指向新创建的对象,那么输出的结果
应该为 ha world.但实际上输出的仅是 hello.这说明 sb 指向的还
是原来的对象,而形参 s 指向的才是创建的对象,这也就验证了
java 中的对象传递也是值传递。
8.接口和抽象类的区别是什么?
不同点在于:
1. 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时
包含抽象和非抽象的方法。
1. 类可以实现很多个接口,但是只能继承一个抽象类
剩余18页未读,继续阅读
资源评论
秀文
- 粉丝: 4
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功