1
class X{
Y y=new Y();
public X(){
System.out.print("X");
}
}
class Y{
public Y(){
System.out.print("Y");
}
}
public class Z extends X{
Y y=new Y();
public Z(){
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}
yxyz
1 创建类时候的代码执行循序
初始化过程:
1. 初始化父类中的静态成员变量和静态代码块 ;
2. 初始化子类中的静态成员变量和静态代码块 ;
3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
4.初始化子类的普通成员变量和代码块,再执行子类的构造方法;
静态》普通成员变量=构造块》构造器。
=====================================
2
JDK和JRE的区别是什么?
参考答案
Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执
行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包
,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让
开发者开发、编译、执行Java应用程序。
==================
3
什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
参考答案
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能
被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个
平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层
硬件平台的指令长度和其他特性。
========================
4
”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或
者是static的方法?
无法重写被private修饰的方法,因为被private修饰的父类方法在子类中是不
可见的。
static修饰的方法是静态绑定的,而方法覆盖是为了实现多态,是动态绑定,
所以static修饰的方法不需要被覆盖
=====================
5
What is the result of compiling and executing the following
fragment of code:
Boolean flag = false;
if (flag = true)
{
System.out.println(“true”);
}
else
{
System.out.println(“false”);
}
结局是输出true
Boolean修饰的变量为包装类型,初始化值为false,进行赋值时会调用
Boolean.valueOf(boolean b)方法自动拆箱为基本数据类型,因此赋值后
flag值为true,输出文本true。 如果使用==比较,则输出文本false。if的语句
比较,除boolean外的其他类型都不能使用赋值语句,否则会提示无法转成布
尔值。