牛客错题集-Java

Java基础

  1. 下面代码返回结果是
Integer a = 1;
Integer b = 1;
Integer c = 500;
Integer d = 500;
System.out.print(a == b);
System.out.print(c == d);

答案:true、false
解析:Integer类型在"-128-->127"范围之间是被缓存了的,也就是每个对象的内存地址是相同的,赋值就直接从缓存中取,不会有新的对象产生,而大于这个范围,将会重新创建一个Integer对象,也就是new一个对象出来,当然地址就不同了,也就"!=";

  1. 判断:程序中经常使用“System.out.println()”来输出信息,语句中的System是包名,out是类名,println是方法名。

答案:错
解析:System是java.lang中的类,out为System中的一个静态成员变量,out指向java.io.PrintStream类的对象,而println()是java.io.PrintStream类的一个方法,因此可以使用【类】.【静态方法】.【println()方法】的方式

  1. 以下程序输出结果:
class X{
	Y y=new Y();
	public X(){
		System.out.print("X");
	}
}
class Y{
	public Y(){
		System.out.print("Y");
	}
}
public class Z extends X{
	Y y=new Y();
	public Z(){
		System.out.print("Z");
	}
	public static void main(String[] args) {
		new Z();
	}
}

答案:YXYZ
解析:创建子类对象初始化顺序
image

  1. 如图,点击查看原题
    image

解析:一般关系数据模型和对象数据模型之间有以下对应关系:表对应类,记录对应对象,表的字段对应类的属性。

  1. 如图,点击查看原题image

解析:子类重写父类方法时,方法的访问权限不能小于原访问权限,在接口中,方法的默认权限就是public,所以子类重写后只能是public

  1. 如图,点击查看原题
    image

解析:
A、byte:-128~127。直接给个128,编译器会认为是int值,这个时候需要强转成byte。
B、boolean:这可是基本数据类型,只有false,true。默认值是false。如果是包装类Boolean,那默认值是null。
C、十六进制没毛病
D、double这个东西本来就可以写成有d的形式。

  1. 如图:点击查看原题
    image

解析:
被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了。
而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
【Java中的byte,short,char进行计算时都会提升为int类型】

posted @ 2022-03-31 23:02  aJream  阅读(124)  评论(0编辑  收藏  举报