java 最烧脑的继承题_java烧脑面试题总结

1.下面代码的输出结果是(A)

public class Test {

public static void main(String[] args) {

Integer n1 = 30, n2 = 30,n3 = 130, n4 = 130;

System.out.println(n1 == n2);

System.out.println(n3 == n4);

}

}

A. true,false B. true,true C. false,false D. false,true

解析:首先对于基本数据类型==是值的比较,而对于引用数据类型==是地址的比较 ,查看底层代码可知当数在-128---127之间的时候不会new出新的Integer对象,所以n1==n2是值的比较故输出true。Interger是int的封装类属于引用数据类型,所以每创建一个对象都会在堆内存划分一块新的空间,所以n3==n4为false。

2965ee4e1858556497f32bf3db020d46.png

2.Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?(BC)

A. 11 B. 12

C. -11 D. -12

解析:简单来说当括号里边数的小数位是5,那么不管这个数是正数还是负数直接给这个数加上0.5。如果小数位不是5按照四舍六入。

3.把正确的选项填入括号里(A)

public class Test {

public static void main(String[] args) {

short n1,n2,n3;

n1=1;

n2=2;

n3=n1+n2;

System.out.println(n3);

}

}

A. 编译报错 B. 运行报错

C. 输出3

解析:byte,short,char不管单独运算还是混合运算都会先转化成int,所以n1+n2的结果是int类型而n3是short类型,所以无法直接赋值,想要赋值必须进行强转n3=(short)(n1+n2)。

4.两个对象M和N值相同(M.equals(N) == true),下列说法正确的是()

A. M,N的hash值不一定相同 B. M,N的hash值一定相同

C. 如果M,N的hash值相同那么M.equals(N) == true一定成立

D. 如果M,N的hash值相同那么M.equals(N) == true不一定成立

解析:如果两个对象的equals方法返回值为true那么他们的hashCode值一定相同,如果他们的hashCode值相等,那这两个对象不一定相等。相当于一对多的关系,一个hashCode值可以对应多个对象,但是一个对象只对应一个hashCode值。

5106c4d1724ce060c91f9789fdfe1154.png

5.下面代码输出的结果为(D)

String s1 = "Study";

String s2 = new String("Study");

String s3 = "Stu" + "dy";

System.out.println(s1 == s2);

System.out.println(s1 == s3);

System.out.println(s1 == s1.intern());

A. true,true,false B. false,true,false

C. true,false,false D. false,true,true

解析:对于String s1= “Study”jvm会在常量池中开辟一块空间存放“Study”;

String str2 = new String("Study") 会先在常量池中开辟一块空间存放“Study”,然后在堆内存new出一块空间存放“Study”,最后在栈内存中存放指向堆内存的地址。所以s1==s2返回值是false。对于String s3 = "Stu" + "dy" jvm会去常量池查找拼接后的字符串所以s1==s3为true。对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。所以同一个对象他们的equals方法返回值必定为true,所以s1 == s1.intern()为true。

6.下面代码输出的数字为(A)

int i=1;

i=i++;

int j=i++;

int k=i+ ++i*i++;

System.out.println(i);

System.out.println(j);

System.out.println(k);

A. 4,1,11 B. 4,2,11 C. 5,2,11 D.5,1,11

解析:i++是先赋值后自增,++i是先自增后赋值

0360a002423dea09fec65496f3c1d73d.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值