java刷题笔记1

1.以下哪些方法是Object类中的方法

A.clone()
B.toString()
C.wait()
D.finalize()

正确答案: A B C D 

2.阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有()

1

2

3

4

5

6

7

8

9

10

11

12

13

package NowCoder;

class Test {

    public static void hello() {

        System.out.println("hello");

    }

}

public class MyApplication {

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Test test=null;

        test.hello();

    }

}

A.能编译通过,并正确运行
B.因为使用了未初始化的变量,所以不能编译通过
C.以错误的方式访问了静态方法
D.能编译通过,但因变量为null,不能正常运行

正确答案: A 

分析:因为Test类的hello方法是静态的,所以是属于类的,当实例化该类的时候,静态会被优先加载而且只加载一次,所以不受实例化new Test();影响,只要是使用到了Test类,都会加载静态hello方法!

3.java中下面哪些是Object类的方法()

A.notify()
B.notifyAll()
C.sleep()
D.wait()

正确答案: A B D 

分析:在根类Object中包含一下方法: 
 

  1. clone();
  2. equals();
  3. finalize();
  4. getClass();[align=left][/align]
  5. notify(),notifyAll();
  6. hashCode();
  7. toString();
  8. wait();

4.哪个正确

A.abstract类只能用来派生子类,不能用来创建abstract类的对象。
B.final类不但可以用来派生子类,也可以用来创建final类的对象。
C.abstract不能与final同时修饰一个类。
D.abstract类定义中可以没有abstract方法。

正确答案: A C D   

分析:

A,抽象类和接口都不可以实例化。

B,final类不能被继承。

C,abstract不能和final共用修饰类。

D,抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类。

注意:abstract是用来修饰类和方法的:

    1. 修饰方法:abstract不能和private、final、static共用。

    2. 修饰外部类:abstract不能和final、static共用。(外部类的访问修饰符只能是默认和public)

    3. 修饰内部类:abstract不能和final共用。(内部类四种访问修饰符都可以修饰)

5.Hashtable 和 HashMap 的区别是:

A.Hashtable 是一个哈希表,该类继承了 AbstractMap,实现了 Map 接口
B.HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口
C.Hashtable 线程安全的,而 HashMap 是线程不安全的
D.Properties 类 继承了 Hashtable 类,而 Hashtable 类则继承Dictionary 类
E.HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。

正确答案: B C D E

分析:

Hashtable

(1)Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射。

(2)Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。

(3)HashTable直接使用对象的hashCode。

HashMap:

(1)由数组+链表组成的,基于哈希表的Map实现,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。

(2)不是线程安全的,HashMap可以接受为null的键(key)和值(value)。

(3)HashMap重新计算hash值

6.判断对错。List,Set,Map都继承自继承Collection接口。

A.对
B.错

正确答案: B  

分析:

List,Set等集合对象都继承自Collection接口

Map是一个顶层结果,不继承自Collection接口

7.下面哪个关键字可以用于Java的构造方法上?

A.final
B.static
C.synchronized
D.native
E.None of these.

正确答案: E  

分析:构造方法不能被子类继承,所以用final修饰没有意义。构造方法用于创建一个新的对象,不能作为类的静态方法,所以用static修饰没有意义。此外,Java语言不支持native或synchronized的构造方法。

8.表达式(short)10/10.2*2运算后结果类型是()

A.short
B.int
C.double
D.float

正确答案: C 

分析:强制类型转换的优先级高于+ - * /

9.建立Statement对象的作用是?

A.连接数据库
B.声明数据库
C.执行SQL语句
D.保存查询结果

正确答案: C   

分析:

1、Statement对象用于执行不带参数的简单SQL语句。 

2、Prepared Statement 对象用于执行预编译SQL语句。 

3、Callable Statement对象用于执行对存储过程的调用。

10.指出下列程序运行的结果()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

public class Example{

    String str = new String("good");

    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.good and  abc
B.good and gbc
C.test ok and abc
D.test ok and gbc

正确答案: B

分析:首先str="test ok" 使得change()中的str指向"test ok"这个常量字符串(也可以说这个字符串对象),根本的原因就是 由于java字符串对象是不能修改的,无法像数组一样可以在原来的地址上对数组的值进行修改。 但是原来的类中的str指向的还是 new String(" good" )这个对象,chs[0] = 'g',把原来chs[0]中的'a'改为'g'。

11.下面论述正确的是()?

A.如果两个对象的hashcode相同,那么它们作为同一个HashMap的key时,必然返回同样的值
B.如果a,b的hashcode相同,那么a.equals(b)必须返回true
C.对于一个类,其所有对象的hashcode必须不同
D.如果a.equals(b)返回true,那么a,b两个对象的hashcode必须相同

正确答案: D

分析:

equals()相等的两个对象hashCode()一定相等。

hashCode()相等的两个对象equal()不一定相等。

12.下列哪些操作会使线程释放锁资源?

A.sleep()
B.wait()
C.join()
D.yield()

正确答案: B C  

分析:

1.sleep会使当前线程睡眠指定时间,不释放锁

2.yield会使当前线程重回到可执行状态,等待cpu的调度,不释放锁

3.wait会使当前线程回到线程池中等待,释放锁,当被其他线程使用notify,notifyAll唤醒时进入可执行状态

4.当前线程调用 某线程.join()时会使当前线程等待某线程执行完毕再结束,底层调用了wait,释放锁

13.下面的switch语句中,x可以是哪些类型的数据:()

1

2

3

4

5

switch(x)

{

default:

System.out.println("Hello");

}

A.long
B.char
C.float
D.byte
E.double
F.String

正确答案: B D F 

分析:

jdk1.7之前byte,short ,int ,char

jdk1.7之后加入String 

14.final、finally和finalize的区别中,下述说法正确的有?

A.final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
B.finally是异常处理语句结构的一部分,表示总是执行。
C.finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。
D.引用变量被final修饰之后,不能再指向其他对象,它指向的对象的内容也是不可变的。

正确答案: A B C  

分析:看下面这个例子:

public class Test {
    public static void main(String[] args)  {
        final MyClass myClass = new MyClass();
        System.out.println(++myClass.i);
 
    }
}
 
class MyClass {
    public int i = 0;
}

这段代码可以顺利编译通过并且有输出结果,输出结果为1。这说明引用变量被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的。

public interface IService {String NAME="default";}

15.默认类型等价表示是哪一项:

A.public String NAME="default";
B.public static String NAME="default";
C.public static final String NAME="default";
D.private String NAME="default";

正确答案: C  

分析:接口中的变量默认是public static final 的,方法默认是public abstract 的

16.关于volatile关键字,下列描述不正确的是?

A.用volatile修饰的变量,每次更新对其他线程都是立即可见的。
B.对volatile变量的操作是原子性的。
C.对volatile变量的操作不会造成阻塞。
D.不依赖其他锁机制,多线程环境下的计数器可用volatile实现。

正确答案: B D

分析:所谓 volatile的措施,就是

1. 每次从内存中取值,不从缓存中什么的拿值。这就保证了用 volatile修饰的共享变量,每次的更新对于其他线程都是可见的。

2. volatile保证了其他线程的立即可见性,就没有保证原子性。

3.由于有些时候对 volatile的操作,不会被保存,说明不会造成阻塞。不可用与多线程环境下的计数器。

17.下列关于Java中类的构造方法的描述,正确的是()

A.构造方法的返回类型为void
B.可以定义一个类而在代码中不写构造方法。
C.在同一个类中定义的重载构造方法不可以相互调用。
D.子类不允许调用父类的构造方法。

正确答案: B

分析:

A、构造器没有返回值,这个没有返回值和返回值为void可不一样。

B、每个类在没有自己显式声明构造器的时候,都会有一个默认的无参构造。

C、构造器可以重载,而且可以使用super()、this()相互调用

D、每个构造器的默认第一行都是super(),但是一旦父类中没有无参构造,必须在子类的第一行显式的声明调用哪一个构造。

18.下面哪个Java语句声明了一个适合于创建50个字符串对象数组的变量?

A.char a[][];

分析:char[][] 定义了二位字符数组。在Java中,使用字符串对char数组赋值,必须使用toCharArray()方法进行转换。所以A错误。

19.以下有关构造方法的说法,正确的是:()

A.一个类的构造方法可以有多个
B.构造方法在类定义时被调用
C.构造方法只能由对象中的其他方法调用
D.构造方法可以和类同名,也可以和类名不同

正确答案: A  

分析:

A选项是函数重载的体现,一个类可以有多个参数列表不同的构造方法。A选项正确。

B选项,构造方法在对象被初始化时调用。B选项错误。

C选项,构造方法只能在对象被初始化时调用,不能由其他方法调用。

D选项,构造方法必须与类名相同。

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

1

2

3

4

5

6

public class Arraytest{

    int a[] = new int[6];

    public static void main ( String arg[] ) {

        System.out.println ( a[0] );

    }

}

A.null
B.0
C.编译出错
D.运行出错

正确答案: C   

分析:在static方法中是不能访问非静态变量 a 的,需要将 a 声明为static,答案才会是 0 ,否则是编译出错

21.有如下4条语句:()

1

2

3

4

Integer i01=59;

int i02=59;

Integer i03=Integer.valueOf(59);

Integer i04=new Integer(59);

以下输出结果为false的是:

A.System.out.println(i01==i02);
B.System.out.println(i01==i03);
C.System.out.println(i03==i04);
D.System.out.println(i02==i04);

正确答案: C 

分析:①无论如何,Integer与new Integer不会相等。不会经历拆箱过程,
  ②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false
  java在编译Integer i2 = 128的时候,被翻译成-> Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存
  ③两个都是new出来的,都为false
  ④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比

22.

正确答案:261345 

23.java中关于继承的描述正确的是()

  • A、

    一个子类只能继承一个父类

  • B、

    继承具有传递性

  • C、

    子类可以继承父类的构造方法

  • D、

    父类一般具有通用性,子类更具体

分析:子类无法继承父类的构造方法,但是可以调用父类的构造方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值