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。