Java选择题(三十一)

1.能使程序块显示字符串 “good” 的 x 值的范围 是 。

if (x>0)
    System.out.println("excellent");
else if (x>-3)
    System.out.println("good");
else
    System.out.println("normal");

正确答案: D 你的答案: D (正确)
A.x > 0
B.x > -3
C.x <= -3
D.-3 < x <= 0

解释:
想要输出“good”的话必须得不满足x>0的条件同时还得满足x>-3的条件。
综合起来的话-3<x<=0

2.下面语句正确的是()

正确答案: D 你的答案: D (正确)
A.x+1=5
B.i++=1
C.a++b=1
D.x+=1

解释:
1-首先赋值运算符“=”右值可以是任何常数、变量或者表达式(只要能生成一个值就行)。但左值必须是一个明确的、已命名的变量。 2-常用的双元运算符:+=,-=,*=,/= 解析: A:x+1=5,赋值运算符左边是表达式,不对; B:i++=1,从左到右运算是i=i+1=1,赋值运算符左边是表达式,错误; C:a++b=1,赋值运算符左边为表达式,错误。 D:x+=1,既x=x+1,正确。 注意背一下各个运算符的先后顺序。

3.关于JDK1.8中Java的抽象类、接口,以下描述错误的是?

正确答案: C 你的答案: C (正确)
A.抽象类不一定含有抽象方法,接口中的方法都是抽象方法
B.一个类只能继承一个抽象类,但可以实现多个接口;一个接口可以继承多个接口
C.抽象类和接口中的方法都没有方法体
D.抽象类可以含有私有成员变量,接口不含有私有成员变量

解释:
A----------抽象类不一定含有抽象方法,接口中的方法都是抽象方法。
接口中的方法默认修饰符有public abstract。
B----------一个类只能继承一个一个抽象类,但可以实现多个接口;一个接口可以继承多个接口。
Java里类是单继承的,接口是可以多继承的,用关键字extends。
C----------抽象类和接口中的方法都没有方法体。
抽象类中的方法是可以有方法体的。JDK1.8之后,接口中的方法也可以有方法体,用default关键字修饰方法。
D----------抽象类可以含有私有成员变量,接口不含有私有成员变量。
接口中的成员变量都是public static final的,一般用作常量。

4.BufferedReader的父类是以下哪个?

正确答案: D 你的答案: D (正确)
A.FilterReader
B.InputStreamReader
C.PipedReader
D.Reader

解释:
java.io.Reader是一个读取字符流的抽象类,通过继承Reader类,可以很方便的读取字符流,比如,我们可以将一个字符串读取为一串串(字符)流,还可以读取一个文件里的内容为一串串的流。

Java(1.6.x)里提供了几种Reader的直接继承类,具体的有:BufferedReader, CharArrayReader, FileReader, InputStreamReader, PipedReader, StringReader等,子类须实现的方法只有 read(char[], int, int) 和 close()。

5.对于以下代码段,4个输出语句中输出true的个数是( )。

class A{}

class B extends A{}

class C extends A{}

class D extends B{}

A obj = new D();

System.out.println(obj instanceof B);

System.out.println(obj instanceof C);

System.out.println(obj instanceof D);

System.out.println(obj instanceof A);

正确答案: C 你的答案: C (正确)
A.1
B.2
C.3
D.4

解释:
a instanceof A;表示的是a是否是A类或者A的子类的实例。需要注意一样,a的类型看的不是静态类型,而是实际类型。

6.假设num已经被创建为一个ArrayList对象,并且最初包含以下整数值:[0,0,4,2,5,0,3,0]。 执行下面的方法numQuest(),最终的输出结果是什么?

private List<Integer> nums;
 
//precondition: nums.size() > 0
//nums contains Integer objects
public void numQuest() {
    int k = 0;
    Integer zero = new Integer(0);
    while (k < nums.size()) {
        if (nums.get(k).equals(zero))
            nums.remove(k);
        k++;
    }
}

正确答案: D 你的答案: A (错误)
A.[3, 5, 2, 4, 0, 0, 0, 0]
B.[0, 0, 0, 0, 4, 2, 5, 3]
C.[0, 0, 4, 2, 5, 0, 3, 0]
D.[0, 4, 2, 5, 3]

解释:
zero= =0,如果get(k) = =0,执行remove(k); ;
size == 8 ; k == 0 , 因此第一次remove(0) ,删除索引为0的元素也就是第一个元素0,然后k++, size()–;

此时集合元素为 :[0,4,2,5,0,3,0]
size== 7; k == 1,因此get(1) == 4 != 0 , 不执行remove(); k++,因没有删除元素,size()不变,

此时集合元素为:[0,4,2,5,0,3,0]
size == 7;k == 2,k++;
size == 7;k == 3,k++;
size == 7;k == 4,get(4) == ,remove(4) ; k++, size()–;

此时集合元素为: [0,4,2,5,3,0]
size == 6;k == 5,get(5) == 0,remove(5);k++, size()–;

此时集合元素为: [0,4,2,5,3]
size == 5; k == 6 ;退出循环;最终输出此时集合元素为 [0,4,2,5,3] ;
一般更改删除集合元素,使用iterator()迭代器,不推荐使用这种;

7.java中将ISO8859-1字符串转成GB2312编码,语句为 ?

正确答案: A 你的答案: A (正确)
A.new String(“字符串”.getBytes(“ISO8859-1”),“GB2312”)
B.new String(String.getBytes(“GB2312”), ISO8859-1)
C.new String(String.getBytes(“ISO8859-1”))
D.new String(String.getBytes(“GB2312”))

解释:
注意这里"ISO8859-1"是一个普通字符串,不要被迷惑了
String.getBytes(“ISO8859-1”)表示获取这个字符串的byte数组,
然后new String(String.getBytes(“ISO8859-1”),GB2312)是上面的字符数组按照GB2312编码成新的字符串

8.Which lines of the following will produce an error?
(下面哪一行将产生错误)

byte a1 = 2, a2 = 4, a3;
short s = 16;
a2 = s;
a3 = a1 * a2;

正确答案: A 你的答案: A (正确)
A.Line 3 and Line 4
B.Line 1 only
C.Line 3 only
D.Line 4 only

解释:
short类型转为byte类型出错
a1*a2结果为int类型,转为byte类型出错

9.下列关于包(package)的描述,正确的是()

正确答案: D 你的答案: D (正确)
A.包(package)是Java中描述操作系统对多个源代码文件组织的一种方式。
B.import语句将所对应的Java源文件拷贝到此处执行。
C.包(package)是Eclipse组织Java项目特有的一种方式。
D.定义在同一个包(package)内的类可以不经过import而直接相互使用。

解释:
1、为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。Java中的包一般均包含相关的类,java是跨平台的,所以java中的包和操作系统没有任何关系,java的包是用来组织文件的一种虚拟文件系统。A错
2、import语句并没有将对应的java源文件拷贝到此处仅仅是引入,告诉编译器有使用外部文件,编译的时候要去读取这个外部文件。B错
3、Java提供的包机制与IDE没有关系。C错
4、定义在同一个包(package)内的类可以不经过import而直接相互使用。
3

10.以下代码将打印出

 public static void main (String[] args) { 
    String classFile = "com.jd.". replaceAll(".", "/") + "MyClass.class";
    System.out.println(classFile);
}

正确答案: C 你的答案: B (错误)
A.com. jd
B.com/jd/MyClass.class
C.///MyClass.class
D.com.jd.MyClass

解释:
C。由于replaceAll方法的第一个参数是一个正则表达式,而".“在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成”/"。如果想替换的只是".",那么久要写成"\.".

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风儿吹吹吹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值