Java笔试面试题汇总(4)

2019-08-30 12:59

} {

System.out.println(\构造代码块\); }

public Student() {

System.out.println(\构造方法\); } }

public class StudentDemo { static {

System.out.println(\你好,明天!\); }

public static void main(String[] args) { System.out.println(\我是main方法\);

Student s1 = new Student(); Student s2 = new Student(); }

/*输出结果: 你好,明天! 我是main方法

Student 静态代码块 Student 构造代码块 Student 构造方法 Student 构造代码块 Student 构造方法*/ }

问题:不仅要输出局部范围的num,还要输出本类成员范围的num,我还想要输出父类成员范围的num。怎么办呢? class Father {

public int num = 10; }

class Son extends Father { public int num = 20;

public void show() { int num = 30;

System.out.println(num);

System.out.println(this.num); System.out.println(super.num); } }

class ExtendsDemo {

public static void main(String[] args) { Son s = new Son(); s.show(); } }

数据初始化的面试题

A:一个类的初始化过程 B:子父类的构造执行过程 C:分层初始化 class Father {

public Father() {

System.out.println(\的无参构造方法\); }

public Father(String name) {

System.out.println(\的带参构造方法\); } }

class Son extends Father { public Son() { //super();

System.out.println(\的无参构造方法\); }

public Son(String name) { //super();

System.out.println(\的带参构造方法\); } }

class ExtendsDemo {

public static void main(String[] args) { //创建对象 new Son();

System.out.println(\);

new Son(\蒙蒙\);

//运行结果:

//Father的无参构造方法 //Son的无参构造方法 //------------

//Father的无参构造方法 //Son的带参构造方法 } }

看程序写结果: A:成员变量 就近原则 B:this和super的问题 this访问本类的成员 super访问父类的成员

C:子类构造方法执行前默认先执行父类的无参构造方法 D:一个类的初始化过程 成员变量进行初始化 默认初始化 显示初始化 构造方法初始化 class Fu{

public int num = 10; public Fu(){

System.out.println(\); } }

class Zi extends Fu{ public int num = 20; public Zi(){

System.out.println(\); }

public void show(){ int num = 30;

System.out.println(num); //30 System.out.println(this.num); //20 System.out.println(super.num); //10 } }

class ExtendsTest {

public static void main(String[] args) { Zi z = new Zi();

z.show(); } }

结果: fu zi 30 20 10

看程序写结果:

A:一个类的静态代码块,构造代码块,构造方法的执行流程 静态代码块 > 构造代码块 > 构造方法 B:静态的内容是随着类的加载而加载 静态代码块的内容会优先执行

C:子类初始化之前先会进行父类的初始化 class Fu { static {

System.out.println(\静态代码块Fu\); }

{

System.out.println(\构造代码块Fu\); }

public Fu() {

System.out.println(\构造方法Fu\); } }

class Zi extends Fu { static {

System.out.println(\静态代码块Zi\); }

{

System.out.println(\构造代码块Zi\); }

public Zi() {

System.out.println(\构造方法Zi\); } }

public class ExtendsTest {

public static void main(String[] args) { Zi z = new Zi();

/*

结果是:

静态代码块Fu 静态代码块Zi 构造代码块Fu 构造方法Fu 构造代码块Zi 构造方法Zi*/ } }

看程序写结果:

A:成员变量的问题

int x = 10; //成员变量是基本类型 Student s = new Student(); //成员变量是引用类型 B:一个类的初始化过程 成员变量的初始化 默认初始化 显示初始化 构造方法初始化

C:子父类的初始化(分层初始化)

先进行父类初始化,然后进行子类初始化。 问题:

虽然子类中构造方法默认有一个super() 初始化的时候,不是按照那个顺序进行的。 而是按照分层初始化进行的。

它仅仅表示要先初始化父类数据,再初始化子类数据。 class X {

Y b = new Y(); X() {

System.out.print(\); } }

class Y { Y() {

System.out.print(\); } }


Java笔试面试题汇总(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:广东省关于〈幼儿园收费管理暂行办法〉的实施细则和《广东省关于

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: