Java练习题 02

1. 以下JAVA程序代码的输出是
public static void main(String args[]) {
System.out.println(14^3);
}
正确答案: B 你的答案: A (错误)
A.2744
B.13
C.17
D.11

按位或 |
按位且 &
按位取反 ~
按位异或 ^

逻辑与 &&
逻辑或 ||
非 !

左移<<:补0,相当于乘以2
右移>>:补符号位,相当于除以2
无符号右移>>>:补0

^表示异或 就是相同是0 不同是1
14是1110
3是0011
所以14^3=1101,即13

2.
方法的重载是指:
1、在同一个类中
2、方法名相同
3、方法的形参列表不同
具体的不同表现为:
类型、个数、顺序的不同才可以构成重载
4、#比较容易忽略的一点#
与方法的返回值类型与访问权限无关

3.
下列选项中是正确的方法声明的是?()
正确答案: A B C D 你的答案: A B D (错误)
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 修饰方法(这太常见的)表示私有方法,本类可以访问,外界不能访问

4. 下面哪些情况下需要使用抽象类?
正确答案: A B D 你的答案: B D (错误)
A.当一个类的一个或多个方法是抽象方法时
B.当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法体时
C.当一个类实现多个接口时
D.当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法体时

解释:A项 一个类中有抽象方法则必须申明为抽象类
B项 抽象类中的抽象方法必须由其子类实现,若子类不能实现则子类也必须定义为抽象类
D项 一个类实现一个接口就必须实现其中所有的抽象方法,若该实现类不能实现接口中的所有方法则实现类定义为抽象类

5 以下代码的输出结果是?
public class B
{
public static B t1 = new B();
public static B t2 = new B();
{
System.out.println(“构造块”);
}
static
{
System.out.println(“静态块”);
}
public static void main(String[] args)
{
B t = new B();
}
}

正确答案: C 你的答案: A (错误)
A.静态块 构造块 构造块 构造块
B.构造块 静态块 构造块 构造块
C.构造块 构造块 静态块 构造块
D.构造块 构造块 构造块 静态块

解释:并不是静态块最先初始化,而是静态域.
而静态域中包含静态变量静态块静态方法,其中需要初始化的是静态变量和静态块.而他们两个的初始化顺序是靠他们俩的位置决定的
1.程序入口main方法要执行首先要加载类B
2.静态域:分为静态变量,静态方法,静态块。这里面涉及到的是静态变量和静态块,当执行到静态域时,按照静态域的顺序加载。并且静态域只在类的第一次加载时执行
3.每次new对象时,会执行一次构造块和构造方法,构造块总是在构造方法前执行(当然,第一次new时,会先执行静态域,静态域〉构造块〉构造方法) 注意:加载类时并不会调用构造块和构造方法,只有静态域会执行
4.根据前三点,首先加载类B,执行静态域的第一个静态变量,static b1=new B,输出构造块和构造方法(空)。ps:这里为什么不加载静态方法呢?因为执行了静态变量的初始化,意味着已经加载了B的静态域的一部分,这时候不能再加载另一个静态域了,否则属于重复加载 了(静态域必须当成一个整体来看待。否则加载会错乱) 于是,依次static b2 =new B,输出构造块,再执行静态块,完成对整个静态域的加载,再执行main方法,new b,输出构造块。

6.
java.lang.NullPoninterException:变量未被初始化、对象未赋值、对象为空(俗称的空指针异常)

java.lang.NumberFormatException:数据格式转换失败(integer的取值范围为:-127-128,超过范围都会访问false)

java.lang.RuntimeException:运行时异常

java.lang.ArrayindexOutOfBoundsException:数组下标越界

7.
1、finally块一定会执行,无论是否try…catch。
2、finally前有return,会先执行return语句,并保存下来,再执行finally块,最后return。
3、finally前有return、finally块中也有return,先执行前面的return,保存下来,再执行finally的return,覆盖之前的结果,并返回。

8.
内部类可以是静态static的,也可用public,default,protected和private修饰,
外部类的修饰符只能是public,abstract,final

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值