我是靠谱客的博主 欣喜过客,最近开发中收集的这篇文章主要介绍java最难面试题_java比较难面试题(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目二

60. 运行以下程序,控制台将打印:?public ExamTest {

publicstatic void main(String[] args) {

System.out.println(newWolf("灰太狼",32.3));

}

}

class Animal{

private String desc ;

public Animal(){

this.desc= getDesc();

}

publicString getDesc(){

return"Animal" ;

}

public String toString(){ 、

return desc ;

}

}

class Wolf extends Animal{

private String name ;

private double weight ;

publicWolf(String name , double weight ){

this.name= name ;

this.weight= weight ;

}

publicString getDesc(){

return"Wolf[name=" + name + ", weight="+weight + "]" ;

}

}

打印结果是:Wolf[name=null, weight=0.0]

你猜对了吗。。。。。。。。。

当然不能猜了,需要分析下才行,首先看main函数,这里有个输出语句,这个输出语句里面new 了个对象,下面看这个对象的构造方法(创建一个对象必须走这个

方法),传入了两个参数,参数内容是 "灰太狼",32.3,但是,这时还没赋值,又要调用父类的构造方法,父类构造方法中又调用了getDesc()方法,注意子类复写父类方法

因此此时调用的是子类方法,但是因为子类成员没有赋值,所以打印的是默认值,即null,和0.0,因此打印了结果了Wolf[name=null,weight=0.0],注意父类的toString()方法

题目二.

58阅读以下程序,运行结果为

public classExamTest { public static void main(String[] args) {

new Derived();

}

}

class Base{

private int i = 2 ;

public Base(){

this.display();

}

public voiddisplay(){

System.out.println(i);

}

}

class

Derived extends Base{

private int i = 22;

public Derived(){

super();

i= 222 ;

}

public voiddisplay(){

System.out.println(i);

}

}

打印结果为   :  0  ;

自己看到这答案时也很诧异,但是仔细分析下知道原因,下面来分析下

首先通过 new Derived()创建子类对象,这时会调用空参的构造方法,然后执行父类的构造方法, 然后执行父类构        造方法 中this.display()方法,注意这个this指得是子类对象,即是你创建的对象 ,所以执行的子类的display()方法,思考下打印的i的值是什么能?此时Derived对象还未创建,属性还未赋值,Base对象也没没有创建成功,因为构造方法还未执行完,所以i也还没有赋值,综上所述,打印的结果是0,因为整型成员变量默认为0

题目三

61.运行下面的程序,控制台打印结果为

public class ExamTest {

public static void main(String[] args) {

String s1 = "Hello World" ;

String s2 = "Hello " + "World" ;

String temp1 = "Hello " ;

String temp2 = "World" ;

String s5 = temp1 + temp2 ;

boolean flag1 = s1 ==s2 ;

boolean flag2 = s1==s5 ;

System.out.println("flag1:"+flag1);

System.out.println("flag2:"+flag2);

}

}

打印结果: true|false

5eab31aa480ad55469c0898fb8eda20e.png

s2和s1一样指向helloworld,但是,s5是s3和s4地址和,和s1是不同的

最后

以上就是欣喜过客为你收集整理的java最难面试题_java比较难面试题(一)的全部内容,希望文章能够帮你解决java最难面试题_java比较难面试题(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部