java面试题(二)

1.

 解析:

  • Integer与new Integer不会相等,不会经历拆箱过程。
  • 两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false
  • 两个都是new出来的,都为false
  • int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比

2.

解析:

default和protected的区别是:

  • 前者只要是外部包,就不允许访问。
  • 后者只要是子类就允许访问,即使子类位于外部包。

总结:default拒绝一切包外访问;protected接受包外的子类访问

3.

解析:

count = count++的真正含义:

count = 0;

temp = count = 0;

count = count + 1 = 0 + 1 = 1;

count = temp = 0;

......

4.

解析:

  • throw用于抛出异常。
  • throws关键字可以在方法上声明该方法要抛出的异常。
  • try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句。
  • cacth用于捕获从try中抛出的异常并作出处理。
  • finally语句块是不管有没有出现异常都要执行的内容。

 

5.

解析: 

A. 抽象类可以有构造方法,只是不能直接创建抽象类的实例对象而已
B. 在接口中 不可以有构造方法,在接口里写入构造方法时,编译器提示:Interfaces cannot have constructors。
C. Java不允许类多重继承
D. jdk1.8后接口中的方法可以有方法体,jdk1.8之前不可以有方法体

6.

三元操作符类型的转换规则:

  • 1.若两个操作数不可转换,则不做转换,返回值为Object类型
  • 2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换,int类型转换为long类型,long类型转换为float类型等。
  • 3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型标示为T,那么,若数字S在T的范围内,则转换为T类型;若S超出了T类型的范围,则T转换为S类型。
  • 4.若两个操作数都是直接量数字,则返回值类型为范围较大者

符合4,所以选D.

7.

 解析:

 

8.

解析: 
代码的输出结果是false,true,true。首先第一个test.equals(testB),由于两个对象不是String类的实例,是一个test类的两个对象,所以new的动作会在堆内存中开辟两块不同的空间用来存放这两个对象,所以使用equals比较这两个对象返回false。其次,test.name.equals(testB.name)比较的是两个字符串,使用equals比较字符串则会比较内容,所以返回true。最后,test.name == testB.name,在这里使用了==来进行比较,需要注意的是两个test对象的name属性指向同一个字符串,也就是同一块内存上的地址,所以使用==比较直接返回true。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

再让我学一会吧!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值