2019年10月30日_java_2

考点1

下列叙述错误的是( )

  • A java提供了丰富的类库
  • B java很好的利用了网络资源
  • C java支持多线程
  • D java不支持TCP/IP协议

正确答案: D

解析

考点2

对于java类型变量char c,short s,float f,double d,表达式c*s+f+d的结果类型为()

  • A float
  • B char
  • C short
  • D double

正确答案: D

解析

自动类型转换遵循下面的规则:
1.若参与运算的数据类型不同,则先转换成同一类型,然后进行运算。
2.转换按数据长度增加的方向进行,以保证精度不降低。例如int型和long型运算时,先把int量转成long型后再进行运算。
3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
4.char型和short型参与运算时,必须先转换成int型。
5.在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。
byte->short->int
char -> int -> long
float -> double
int -> float->double
long -> double

考点3

以下程序的运行结果是()
public class Increment
{
public static void main(String args[])
{
int a;
a = 6;
System.out.print(a);
System.out.print(a++);
System.out.print(a);
}
}

  • A 666
  • B 667
  • C 677
  • D 676

正确答案: B

解析

a++表示先用后+,
而++a表示先+后用

考点4

BufferedReader的父类是以下哪个?

  • A FilterReader
  • B InputStreamReader
  • C PipedReader
  • D Reader

正确答案: D

解析

考点5

枚举(enum)属于原始数据类型(primitive type)。

  • A 正确
  • B 错误

正确答案: B

解析

这里的原始数据类型就是基本数据类型
byte,short,int,long,float,double,boolean,char.
枚举类是一种特殊对的类,既然是类。那他就不是原始数据类型了

考点6

public class contained in a Java program file must have the same name as the file, except for the extension “.java”.

  • A FALSE
  • B TRUE

正确答案: A

解析

1、java文件中类型为public的类有两种,一种是外部类,一种是内部类;
2、当外部类的类型为public时,文件名需要与其相同;
3、当内部类的类型为public时,而外部类不是public类型的,则文件名可随意,但需要满足命名规范(以字母或下划线开头)。

考点7

关于java编译和运行命令叙述不正确的是? ( )

  • A 运行“java Scut.class”
  • B 运行“java Scut”
  • C 运行“javac Scut.java”的输出文件是Scut.class
  • D java这个命令的运行对象是Scut.class

正确答案: A

解析

先编译:javac scut.java.产生字节码文件(scut.class).
再运行字节码文件:java scut.此时不需要加后缀

考点8

在java中重写方法应遵循规则的包括()

  • A 访问修饰符的限制一定要大于被重写方法的访问修饰符
  • B 可以有不同的访问修饰符
  • C 参数列表必须完全与被重写的方法相同
  • D 必须具有不同的参数列表

正确答案: BC

解析

两同两小一大原则:
两同:方法名和参数列表相同
两小:返回值或声明异常比父类小(或相同)
一大:访问修饰符比父类的大(或相同)
访问权限可以相同,所以A不对。
访问权限可以更大,则不同,所以B对

考点9

以下程序执行后,错误的结果是()
public class Test {
private String name = “abc”;
public static void main(String[] args) {
Test test = new Test();
Test testB = new Test();
String result = test.equals(testB) + “,”;
result += test.name.equals(testB.name) + “,”;
result += test.name == testB.name;
System.out.println(result);
}
}

  • A true,true,true
  • B true,false,false
  • C false,true,false
  • D false,true,true

正确答案: ABC

解析

Test重写equals方法。比较的是地址。所以test.equals(testB) 返回false。
String重写了equals方法,比较的是内容,所以,test.name.equals(testB.name)返回true。
String name = “abc”,name引用的是字符串直接量,字符串直接量放在常量区,只创建一次,所以是同一对象,所以test.name == testB.name返回true
也就是false,true,true

但是题目要你选错误的

考点10

下面有关java的引用类型,说法正确的有?

  • A 对于一个对象来说,只要有强引用的存在,它就会一直存在于内存中
  • B 如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
  • C 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存
  • D 一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的空间

正确答案: ABCD

解析

1、强引用:一个对象赋给一个引用就是强引用,比如new一个对象,一个对象被赋值一个对象。
2、软引用:用SoftReference类实现,一般不会轻易回收,只有内存不够才会回收。
3、弱引用:用WeekReference类实现,一旦垃圾回收已启动,就会回收。
4、虚引用:不能单独存在,必须和引用队列联合使用。主要作用是跟踪对象被回收的状态。