java选择题

1.下列InputStream类中哪个方法可以用于关闭流?B
A.skip()
B.close()
C.mark()
D.reset()
解释
inputstream的close方法用来关闭流
skip()用来跳过一些字节
mark()用来标记流
reset()复位流

2.下面关于依赖注入(DI)的说法不正确的是(A)
A只有通过Spring才能实现依赖注入(DI)
B 依赖注入的主要目的是解耦合
C 常见的依赖注入方式有Setter和构造方法
解释
Spring依赖注入(DI)的三种方式,分别为:
1. 接口注入
2. Setter 方法注入
3. 构造方法注入

3.ArrayList和LinkList的描述,下面说法错误的是?D
A.LinkedeList和ArrayList都实现了List接口
B.ArrayList是可改变大小的数组,而LinkedList是双向链接串列
C.LinkedList不支持高效的随机元素访问
D.在LinkedList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在ArrayList的中间插入或删除一个元素的开销是固定的
解释
Arraylist的内存结构是数组,当超出数组大小时创建一个新的数组,吧原数组中元素拷贝过去。其本质是顺序存储的线性表,插入和删除操作会引发后续元素移动,效率低,但是随机访问效率高
LinkedList的内存结构是用双向链表存储的,链式存储结构插入和删除效率高,不需要移动。但是随机访问效率低,需要从头开始向后依次访问
4.以下代码执行后输出结果为(A )

public class Test {
    public static void main(String[] args) {
        System.out.println("return value of getValue(): " +
        getValue());
    }
     public static int getValue() {
         try {
             return 0;
         } finally {
             return 1;
         }
     }
 }

A。eturn value of getValue(): 1
B。return value of getValue(): 0
C。return value of getValue(): 0return value of getValue(): 1
D。return value of getValue(): 1return value of getValue(): 0

解释 根据官方的JVM规范:
如果try语句里有return,返回的是try语句块中变量值。
详细执行过程如下:
如果有返回值,就把返回值保存到局部变量中;
执行jsr指令跳到finally语句里执行;
执行完finally语句后,返回之前保存在局部变量表里的值。
如果try,finally语句里均有return,忽略try的return,而使用finally的return.

5.下面的方法,当输入为2的时候返回值是多少?
public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}

A.0
B.2
C.4
D.10
解析 当i=2时,执行程序
Case2:result=4;
Case3:result=4+6=10;
没有Break,就会顺序执行下去

6.指出下列程序运行的结果:B

public class Example{
    String str=new String("tarena");
    char[]ch={'a','b','c'};
    public static void main(String args[]){
        Example ex=new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str+" and ");
        System.out.print(ex.ch);
    }
    public void change(String str,char ch[]){
   //引用类型变量,传递的是地址,属于引用传递。
        str="test ok";
        ch[0]='g';
    }
}

A.tarena and abc
B.tarena and gbc
C.test ok and abc
D.test ok and gbc
解释
string和char数组都是引用类型,引用类型是传地址的,会影响原变量的值,但是string是特殊引用类型,为什么呢?因为string类型的值是不可变的,为了考虑一些内存,安全等综合原因,把它设置成不可变的; 不可变是怎么实现的?Java在内存中专门为string开辟了一个字符串常量池,用来锁定数据不被篡改,所以题目中函数中的str变量和原来的str已经不是一个东西了,它是一个局部引用,指向一个testok的字符串,随着函数结束,它也就什么都没了,但是char数组是会改变原值的

7.下列语句正确的是:: D
A.形式参数可被字段修饰符修饰
B.形式参数不可以是对象
C.形式参数为方法被调用时真正被传递的参数
D.形式参数可被视为local variable
解释A:形式参数只能被final修饰
B:形式参数可以是对象
C:形式参数被调用时被传递的是实际参数的拷贝
D:local variable:局部变量
8.假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是(D)
boolean isOdd = false;
for(int i=1;i<=2;++i)
{
if(i%2==1)isOdd = true;
else isOdd = false;
a+=i*(isOdd?1:-1);
}
A.1
B.-2
C.0
D.1

9.java8中,下面哪个类用到了解决哈希冲突的开放定址法
正确答案: C
A…LinkedHashSet
B.HashMap
C.ThreadLocal
D.TreeMap
解释 threadlocalmap使用开放定址法解决haah冲突,hashmap使用链地址法解决hash冲突
10.以下代码可以使用的修饰符是:(ABD)

public interface Status {
 /*INSERT CODE HERE*/  int MY_VALUE=10;
 }

A.final
B.static
C.abstract
D.public
解释 ABD中的三个关键字在接口中的存在原因:
public:接口可以被其他接口继承,也可以被类实现,类与接口、接口与接口可能会形成多层级关系,采用public可以满足变量的访问范围;
static:如果变量不是static的,那么接口必须实例化才可以访问自己的变量,接口不能被实例化,故非static的变量是无效的;
final:如果变量不是final的,而方法是abstract的,因此接口中的方法又不可以修改变量值,虽然可以直接修改静态成员变量,但所有实现类对应的值都被修改了,此做法等同于抽象类,故需要final修饰成员变量
11.映射 (Map) 的key和value都不可重复。( B )
A正确
B错误
Map接口有两个金典的子类分别是 Hashtable 和 Hashmap。
Hashtable 线程安全,不支持key和value为空,key不能重复,但value可以重复,不支持key和value为null。
Hashmap 非线程安全,支持key和value为空,key不能重复,但value可以重复,支持key和value为null。
由于题目否定Map集合中的value都不可重复,这是错误的。
12.关于下列程序段的输出结果,说法正确的是:( D)

public class MyClass{
static int i;
public static void main(String argv[]){
System.out.println(i);
}
}

A.有错误,变量i没有初始化。
B.null
C.1
D.0
解释 成员变量在累加载或实例被创建时,系统自动分配内存空间,并在分配空间后自动为成员变量指定初始化值,初始化值为默认值,基本类型的默认值为0,复合类型的默认值为null。(被final修饰且没有static的必须显式赋值),局部变量在定义后必须经过显式初始化后才能使用,系统不会为局部变量执行初始化。
13.下面程序的运行结果是:( B )

public static void main(String args[]) {
 
    Thread t = new Thread() {
public void run() {
pong();
}
};
 
t.run();
System.out.print("ping");
 
    }
 
    static void pong() {
      System.out.print("pong");
}
}
 

A.pingpong
B.pongping
c.pingpong和pongping都有可能
D.都不输出
E.pong
F.ping
14在Java中,关于HashMap类的描述,以下错误的是(A)?
A.HashMap能够保证其中元素的顺序
B.HashMap允许将null用作值
C.HashMap允许将null用作键
D.HashMap使用键/值得形式保存数据
解释
HashMap的底层是由数组加链表实现的,对于每一个key值,都需要计算哈希值,然后通过哈希值来确定顺序,并不是按照加入顺序来存放的,因此可以认为是无序的,但不管是有序还是无序,它都一个自己的顺序。故A错。
最开始有Hashtable,Hashtable是不允许key和value的值为空的,但后来开发者认为有时候也会有key值为空的情况,因为可以允许null为空,通过查看HashMap的源代码就知道:if(key = null) {putForNullKey(value);};
Map底层都是用key/value键值对的形式存放的
15.建立Statement对象的作用是?正确答案: C
A.连接数据库
B.声明数据库
C.执行SQL语句
D.保存查询结果
解释
1、Statement对象用于执行不带参数的简单SQL语句。
2、Prepared Statement 对象用于执行预编译SQL语句。
3、Callable Statement对象用于执行对存储过程的调用。
16.TextField 的事件监听器接口是(A)
A. ActionListener
B.ChangeListener
C.ItemListener
D.WindowListener
17.下面哪些接口直接继承自Collection接口(AC)
A.List
B.Map
C.Set
D.Iterator
18.JAVA反射机制主要提供了以下哪些功能?
正确答案: A B C D
A在运行时判断一个对象所属的类
B在运行时构造一个类的对象
C在运行时判断一个类所具有的成员变量和方法
D在运行时调用一个对象的方法
19.hich are keywords in Java?
正确答案: D E
A.null
B.true
C.sizeof
D.implements
E.instanceof
20.以下可以正确获取结果集的有
正确答案: A D
A。Statement sta=con.createStatement();
ResultSet rst=sta.executeQuery(“select * from book”);
B。Statement sta=con.createStatement(“select * from book”); ResultSet rst=sta.executeQuery();
C。PreparedStatement pst=con.prepareStatement();
ResultSet rst=pst.executeQuery(“select * from book”);
D。PreparedStatement pst=con.prepareStatement(“select * from book”);
ResultSet rst=pst.executeQuery();
21.final方法等同于private方法。( X )
解释说白了private方法只可以在类的内部使用,在类外根本访问不到, 而final方法可以在类外访问,但是不可以重写该方法,就是说可以使用该方法的功能但是不可以改变其功能,这就是private方法和final方法的最大区别
22.以下程序执行的结果是:(YXYZ)

class X{
    Y y=new Y();
    public X(){
        System.out.print("X");
    }
}
class Y{
    public Y(){
        System.out.print("Y");
    }
}
public class Z extends X{
    Y y=new Y();
    public Z(){
        System.out.print("Z");
    }
    public static void main(String[] args) {
        new Z();
    }
}

23.若有下列定义,下列哪个表达式返回false?(B)

String s = "hello";
String t = "hello";
char c[] = {'h','e','l','l','o'} ;

A。s.equals(t);
B。t.equals©;
c。s==t;
D。t.equals(new String(“hello”));
解释
A、D选项是对字符串内容的比较。JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池。代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回,否则新的字符串对象被创建,然后将这个引用放入字符串常量池,并返回该引用。所以返回true。
C选项是引用地址的比较,同上也属于常量池的同一个字符串地址,所以相等返回true。
24.下面代码的结果是什么?(C)

enum AccountType
{
    SAVING, FIXED, CURRENT;
    private AccountType()
    {
        System.out.println(“It is a account type”);
    }
}
class EnumOne
{
    public static void main(String[]args)
    {
        System.out.println(AccountType.FIXED);
    }
}

A.Compiles fine and output is prints”It is a account type”once followed by”FIXED”
B.Compiles fine and output is prints”It is a account type”twice followed by”FIXED”
C.Compiles fine and output is prints”It is a account type”thrice followed by”FIXED”
D.Compiles fine and output is prints”It is a account type”four times followed by”FIXED”
E.Compilation fails
25.Java对象的初始化方式有( ABC)
A初始化块
B构造器
C定义变量时指定初始化值
D其它各项都不对
解释 对象的初始化方式:
1.new时初始化 ;
2.静态工厂 newInstance;
3.反射Class.forName();
4.clone方式;
5.反序列化;
26.您有以下代码。哪些数字将导致打印“Test2”?(BCD)

switch (x)
{
    case 1: System.out.println("Test1");
    case 2:
    case 3:
        System.out.println("Test2");
        break;
    default:
    System.out.println("Test3");
    break;
}

A.0
B.1
C.2
D.3
E.4
解释
0——Test3
1——Test1 Test2
2——Test2
3——Test2
4——Test3
从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句。
27.常用的servlet包的名称是?
正确答案: B D
A.java.servlet
B.javax.servlet
C.servlet.http
D.javax.servlet.http
28.Hashtable 和 HashMap 的区别是:
正确答案: B C D E
A.Hashtable 是一个哈希表,该类继承了 AbstractMap,实现了 Map 接口
B.HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口
C.Hashtable 线程安全的,而 HashMap 是线程不安全的
D.Properties 类 继承了 Hashtable 类,而 Hashtable 类则继承Dictionary 类
E.HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
29.下那些代码段能正确执行
正确答案: C D
A.public static void main(String args[]) {
byte a = 3;
byte b = 2;
b = a + b;
System.out.println(b);
}
B.public static void main(String args[]) {
byte a = 127;
byte b = 126;
b = a + b;
System.out.println(b);
}
C.public static void main(String args[]) {
byte a = 3;
byte b = 2;
a+=b;
System.out.println(b);
}
Dublic static void main(String args[]) {
byte a = 127;
byte b = 127;
a+=b;
System.out.println(b);
}
解释
byte类型的变量在做运算时被会转换为int类型的值,故A、B左为byte,右为int,会报错;而C、D语句中用的是a+=b的语句,此语句会将被赋值的变量自动强制转化为相对应的类型。
30.面的Java赋值语句哪些是有错误的 ()
正确答案: B F
A.int i =1000;
B.float f = 45.0;
C.char s = ‘\u0639’;
D.Object o = ‘f’;
E.String s = “hello,world\0”;
F.Double d = 100;
解释
b:小数如果不加 f 后缀,默认是double类型。double转成float向下转换,意味着精度丢失,所以要进行强制类型转换。
c:是使用unicode表示的字符。
d:‘f’ 字符会自动装箱成包装类,就可以向上转型成Object了。
f:整数默认是int类型,int类型不能转型为Double,最多通过自动装箱变为Integer但是Integer与Double没有继承关系,也没法进行转型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zzsaixuexi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值