Java30道选择题答案及解析
1、关键字(B)表明一个对象或变量的引用在初始化后不能被修改。
A.private
B.final
C.static
D.没有这种关键字
解析:
final修饰的变量内容是不能修改的,如果final修饰一个对象的引用,那么指的是这个对象的地址值是无法改变的,对象的内容还是可以修改的。如果final修饰一个普通变量的话,就是变量的值无法修改。综上,final修饰变量的本质就是:修饰的变量值(地址或内容)无法改变。
2、一个抽象类并不需要其中所有的方法都是抽象的。( A )
A.正确
B.错误
解析:
1)抽象类可以包括抽象方法和非抽象方法
2)如果类里面有抽象方法的话,那么类一定要声明为抽象的!
3、下列关于Java中类的构造方法的描述,正确的是(B)
A.构造方法的返回类型为void
B.可以定义一个类而在代码中不写构造方法。
C.在同一个类中定义的重载构造方法不可以相互调用。
D.子类不允许调用父类的构造方法。
解析:
A、构造器没有返回值,这个没有返回值和返回值为void可部一样。
B、每个类在没有自己显式声明构造器的时候,都会有一个默认的无参构造。
C、构造器可以重载,而且可以使用super()、this()相互调用
D、每个构造器的默认第一行都是super(),但是一旦父类中没有无参构造,必须在子类的第一行显式的声明调用哪一个构造。
4、变量a是一个64位有符号的整数,初始值用16进制表示为:0x7FFFFFFFFFFFFFFF;变量b是一个64位有符号的整数,初始值用16进制表示为:0x8000000000000000。则a+b的结果用10进制表示为多少?(B)
A. 1
B. -1
C. 0
D.263+262+…+22+21+2^
解析:
计算机变量以补码形式存放,于是a+b为补码相加:
0x7FFFFFFFFFFFFFFF
+0x8000000000000000
=0xFFFFFFFFFFFFFFFF
而(0xFFFFFFFFFFFFFFFF)补化为原码,即第一位符号位不变,其他位取反后末位加1,得原码为0x8000000000000001,最后转换为10进制即为-1
5、抽象类方法的访问权限默认都是public( B )
A.正确
B.错误
解析:
关于抽象类
JDK 1.8以前,抽象类的方法默认访问权限为protected
JDK 1.8时,抽象类的方法默认访问权限变为default
6、DK中提供的java、javac、jar等开发工具也是用Java编写的。(A)
A.对
B.错
7、以下哪些内存区域属于JVM规范?(ADE)
A.方法区
B.实例变量
C.静态变量
D.程序计数器
E.虚拟机栈
解析:
JVM内存区:程序计数器、虚拟机栈、本地方法栈、堆、方法区(包括常量池)。
不属于JVM内存区:直接内存(Direct Memory),用户I/O操作
8、以下关于对象序列化描述正确的是(CD)
A.使用FileOutputStream可以将对象进行传输
B.使用PrintWriter可以将对象进行传输
C.使用transient修饰的变量不会被序列化
D.对象序列化的所属类需要实现Serializable接口
解析:
在Java中,对象的序列化可以通过实现两种接口来实现,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化,需要在writeExternal方法中进行手工指定所要序列化的变量,这与是否被transient修饰无关。
9、下面关于Applet的说法是正确的是(ABCD)
A.Applet可以在带有Java解释器的浏览器中运行
B.Applet类必须继承java.applet.Applet
C.Applet可以访问本地文件
D.Applet是Object类的子类
10、character流和byte流的区别不包括(ABD)
A.每次读入的字节数不同
B.前者带有缓冲,后者没有。
C.前者是字符读入&