每日五题(第三期)
更新时间:周一到周五每天下午17:30
1、下面的程序将来打印什么?()
public class TestIncr {
public static void main(String args[]) {
int i = 0;
i = i++ + i;
System.out.println("I =" +i);
}
}
A、I = 1
B、I = 2
C、I = 3
D、编译出错
分析:
int i = 0;
System.out.println(i++ +i);
int i1 = 0;
System.out.println(i1++ +0);
int j = 1;
System.out.println(j++ +j);
int j1 = 1;
System.out.println(j1++ +0);
这里先给大家举个栗子,结果是:
1
1
0
3
1
为什么会这样呢?
首先这种编译是不会报错的,也就是可以排除D
可能很多人会认为i++ +i 是先算i+i,然后i+1。
但是实际情况不是这样的,那么实际情况是怎样的呢?
实际上i++时,这个i就已经产生了变化
也就是 i=_i+1(i++步骤),然后i+i而不是_i+i,这里的_i就是以前的i值。
这样就很好理解了,我们看到原题
int i = 0;
i = i++ + i;
先计算的是i++,也就是i = _i + 1
但是此时的前面那个i等于_i,也就是原来的值,但是后面那个i变成了_i+1=i
所以本题答案为A
2、下列选项中是正确的方法声明的是?()
A、protected abstract void f1();
B、public final void f1() {}
C、static final void fq(){}
D、private void f1() {}
分析:
A:抽象方法只可以被public和protected修饰
B:final可以修饰类、方法、变量,分别表示该类不可以被继承、该方法不能被重写、该变量是个常量
C:static final 可以一起来修饰方法,表示该方法是静态的不可重写的方法
D:private 修饰方法表示该方法只有本类才可以访问
本题答案:ABCD
3、下面程序输出结果为():
public class Demo{
public static void main (String [] args) {
String lx = “LeXin”;
String nb = lx;
lx = “Fenqile”;
System.out.println(nb);
}
}
A、程序异常,编译不通过
B、程序编写正常,可正常运行
C、程序输出值为“LeXin”
D、程序输出值为“Fenqile”
分析:
所以本题答案:BC
4、下面有关 JAVA 异常类的描述,说法正确的有()
A、异常的继承结构:基类为 Throwable,Error 和 Exception 。实现 Throwable, RuntimeException 和 IOException 等继承 Exception
B、非 RuntimeException 一般是外部错误(不考虑Error的情况下),其可以在当前类被 try{}catch 语句块所捕获
C、Error 类体系描述了 Java 运行系统中的内部错误以及资源耗尽的情形,Error 不需要捕捉
D、RuntimeException 体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须 被 try{}catch 语句块所捕获
都是Throwable的子类:
1.Exception(异常) :是程序本身可以处理的异常。
2.Error(错误): 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需要程序处理。
3.检查异常(编译器要求必须处置的异常) : 除了Error,RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。
4.非检查异常(编译器不要求处置的异常): 包括运行时异常(RuntimeException与其子类)和错误(Error)。
5、关于equals和hashCode描述正确的是()
A、两个obj,如果equals()相等,hashCode()一定相等(符合代码规范的情况下)
B、两个obj,如果hashCode()相等,equals()不一定相等
C、两个不同的obj, hashCode()可能相等
D、其他都不对
分析:
“==”:作用是判断两个对象的地址是否相等,即,判断两个对象是不是同一个对象,如果是基本数据类型,则比较的是值是否相等。
“equal”:作用是判断两个对象是否相等,但一般有两种使用情况
1.类没有覆盖equals()方法,则相当于通过“==”比较
2.类覆盖equals()方法,一般,我们都通过equals()方法来比较两个对象的内容是否相等,相等则返回true,如String
地址比较是通过计算对象的哈希值来比较的,hashcode属于Object的本地方法,对象相等(地址相等),hashcode相等,对象不相等,hashcode()可能相等,哈希冲突
本题答案:ABC
原文链接:https://blog.csdn.net/qq_36547531/article/details/113875603