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是不同的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值