Java选择题(十三)

1.下面不是类及类成员的访问控制符的是( )。(不考虑内部类的情况)

正确答案: C 你的答案: C (正确)
A.public
B.private
C.static
D.protected

解释:类访问控制符只有三种:public ,private, protected
static和访问控制无关

2.下列不属于类及类成员的访问控制符是:( )

正确答案: C 你的答案: C (正确)
A.public
B.private
C.static
D.protected

解释:类访问控制符只有三种:public ,private, protected
static和访问控制无关

3.面代码的运行结果是()

public static void main(String[] args){
    String s;
    System.out.println("s="+s);
}

正确答案: C 你的答案: C (正确)
A.代码编程成功,并输出”s=”
B.代码编译成功,并输出”s=null”
C.由于String s没有初始化,代码不能编译通过。
D.代码编译成功,但捕获到NullPointException异常

解释:成员变量有初始值,而局部变量没有初始值得。本体中的s定义在方法中所以为局部变量-没有初始值。变量没有初始值就使用了,编译通不过

4.有如下代码:请写出程序的输出结果。

public class Test
{
    public static void main(String[] args)
    {
        int x = 0;
        int y = 0;
        int k = 0;
        for (int z = 0; z < 5; z++) {
            if ((++x > 2) && (++y > 2) && (k++ > 2))
            {
                x++;
                ++y;
                k++;
            }
        }
        System.out.println(x + ”” +y + ”” +k);
    }
}

正确答案: B 你的答案: B (正确)
A.432
B.531
C.421
D.523

解释:
z=0时候,执行++x > 2,不成立,&&后面就不执行了,此时 x=1,y=0,k=0;
z=1时候,执行++x > 2,还不成立 ,&&后面就不执行了,此时 x=2,y=0,k=0;
z=2时候, 执行++x > 2,成立,继续执行 ++y > 2, 不成立 , &&后面就不执行了, 此时 x=3,y=1,k=0;
z=3时候,执行++x > 2,成立,继续执行++y > 2,不成立 , &&后面就不执行了, 此时 x=4,y=2,k=0;
z=4 时候,执行++x > 2,成立,继续执行 ++y > 2, 成立 , 继续执行k++>2 ,不成立,此时仍没有进入for循环的语句中, 但此时 x=5,y=3,k=1;
z=5时候,不满足条件了,整个循环结束,所以最好打印时候: x=5,y=3,k=1;

5.以下关于集合类ArrayList、LinkedList、HashMap描述错误的是()

正确答案: C 你的答案: A (错误)
A.HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值
B.ArrayList和LinkedList均实现了List接口
C.添加和删除元素时,ArrayList的表现更佳
D.ArrayList的访问速度比LinkedList快

解释:

  1. List 是一个有序集合,可以存放重复的数据 (有序:存进是什么顺序,取出时还是什么顺序)
    (1).ArrayList 底层是数组适合查询,不适合增删元素。
    (2).LiskedList 底层是双向链表适合增删元素,不适合查询操作。
    (3).Vector 底层和ArrayList相同,但是Vector是线程安全的,效率较低很少使用
  2. Set 是一个无序集合,不允许放重复的数据 (无序不可重复,存进和取出的顺序不一样)
    (1).HashSet 底层是哈希表/散列表
    (2).TreeSet 继承sartedSet接口(无需不可重复,但存进去的元素可以按照元素的大小自动排序)
  3. Map 是一个无序集合,以键值对的方式存放数据,键对象不允许重复,值对象可以重复。
    (1).HashMap实现不同步,线程不安全。 HashTable线程安全
    (2).HashMap中的key-value都是存储在Entry中的。
    (3).HashMap可以存null键和null值,不保证元素的顺序恒久不变,它的底层使用的是数组和链表,通过hashCode()方法和equals方法保证键的唯一性

6.命令javac-d参数的用途是?()

正确答案: A 你的答案: A (正确)
A.指定编译后类层次的根目录
B.指定编译时需要依赖类的路径
C.指定编译时的编码
D.没有这一个参数

解释:
-d destination 目的地
-s source 起源地
javac -d 指定放置生成的类文件的位置
javac -s 指定放置生成的源文件的位置

7.关于Java中参数传递的说法,哪个是错误的?

正确答案: D 你的答案: C (错误)
A.在方法中,修改一个基础类型的参数不会影响原始参数值
B.在方法中,改变一个对象参数的引用不会影响到原始引用
C.在方法中,修改一个对象的属性会影响原始对象参数
D.在方法中,修改集合和Maps的元素不会影响原始集合参数

解释:
在Java里,只有值传递,因为引用本身就是一个地址值,我们说的”传递引用“本质上也是“值传递”,只不过传递的是地址值。
在方法中,改变一个对象参数的引用不会影响到原始引用。这是很自然的。

8.以下代码执行的结果显示是多少( )?

public class Demo {
  class Super {
 
    int flag = 1;
 
    Super() {
      test();
    }
 
    void test() {
      System.out.println("Super.test() flag=" + flag);
    }
  }
  class Sub extends Super {
 
    Sub(int i) {
      flag = i;
      System.out.println("Sub.Sub()flag=" + flag);
    }
    void test() {
      System.out.println("Sub.test()flag=" + flag);
    }
  }
  public static void main(String[] args) {
    new Demo().new Sub(5);
  }
}

正确答案: A 你的答案: B (错误)
A.Sub.test() flag=1
Sub.Sub() flag=5

B.Sub.Sub() flag=5
Sub.test() flag=5

C.Sub.test() flag=0
Sub.Sub() flag=5

D.Super.test() flag=1
Sub.Sub() flag=5

解释:
在继承中代码的执行顺序为:1.父类静态对象,父类静态代码块
2.子类静态对象,子类静态代码块
3.父类非静态对象,父类非静态代码块
4.父类构造函数
5.子类非静态对象,子类非静态代码块
6.子类构造函数
对于本题来说:在只想new Sub(5)的时候,父类先初始化了 int flag = 1,然后执行父类的构造函数Super(),父类构造函数中执行的test()方法,因子类是重写了test()方法的,因此父类构造函数中的test()方法实际执行的是子类的test()方法,所以输出为Sub.test() flag=1,接着执行子类构造函数Sub(5) 将flag赋值为5,因此输出结果Sub.Sub() flag=5。最终选择了A。

9.下面哪些Java中的流对象是字节流?

正确答案: A B C D 你的答案: B C (错误)
A.FileInputStream
B.BufferedInputStream
C.PushbackInputStream
D.ByteArrayInputStream

解释:stream结尾都是字节流,reader和writer结尾都是字符流 两者的区别就是读写的时候一个是按字节读写,一个是按字符。 实际使用通常差不多。 在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。 只是读写文件,和文件内容无关的,一般选择字节流。

10.关于身份证号,以下正确的正则表达式为( )

正确答案: A C 你的答案: A C (正确)

A.isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/; B.isIDCard=/^[1-9]\d{7}((9\d)|(1[0-2]))(([0|1|2]\d)|3[9-1])\d{3}$/; C.isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/; D.isIDCard=/^[1-9]\d{5}[1-9]\d{3}((9\d)|(1[9-2]))(([0|1|2]\d)|3[9-1])\d{4}$/;

解释:

^:起始符号,^x表示以x开头

$:结束符号,x$表示以x结尾

[n-m]:表示从n到m的数字

\d:表示数字,等同于[0-9]

X{m}:表示由m个X字符构成,
\d{4}表示4位数字

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

风儿吹吹吹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值