Java选择题(五)

1.若在某一个类定义中定义有如下的方法: abstract void performDial( ); 该方法属于()
正确答案: D 你的答案: D (正确)
A.本地方法
B.最终方法
C.解态方法
D.抽象方法

解释:
本地方法:简单地讲,一个native Method就是一个java调用非java代码的接口;native方法表示该方法要用另外一种依赖平台的编程语言实现。
最终方法:finalvoidB(){},这样定义的方法就是最终方法,最终方法在子类中不可以被重写,也就是说,如果有个子类继承了这个最终方法所在的类,那么这个子类中不能出现voidB(){}这样的方法。
最终类:final class A {},这样定义的类就是最终类,最终类不能被继承。 abstract修饰抽象类

2.为初始化其成员变量,每个类都定义的方法是()
正确答案: C 你的答案: D (错误)
A.方法
B.main
C.构造方法
D.对象

解释: 构造方法用于对象属性的实例化

3.WT 中用来表示文本框的类是 ( )
正确答案: A 你的答案: A (正确)
A.TextField
B.Menu
C.Label
D.List

解释:本题主要考查对AWT基本组件的了解。
B、Menu表示下拉菜单
C、Label表示标签
D、List表示列表框

4.在 JAVA 编程中, Java 编译器会将 Java 程序转换为( )

正确答案: A 你的答案: C (错误)
A.字节码
B.可执行代码
C.机器代码
D.以上都不对

解释: 编译器将Java源代码编译成字节码class文件
类加载到JVM里面后,执行引擎把字节码转为可执行代码
执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行。

5.已知表达式int m[]={0,1,2,3,4,5,6};下面哪个表达式的值与数组下标量最大值相等?
正确答案: B 你的答案: B (正确)
A.m. length()
B,m. length-1
C.m. length()+1
D.m. length+1

6.以下说法错误的是()

正确答案: C 你的答案: C (正确)
A.数组是一个对象
B.数组不是一种原生类
C.数组的大小可以任意改变
D.在Java中,数组存储在堆中连续内存空间里

解释:
数组长度在创建时就确定了,要改变数组长度只能重新创建新的数组,将原有数组复制到新的数组之中。这也是ArrayList扩容时候的效率低于LinkedList的原因。

7.在异常处理中,如释放资源,关闭数据库、关闭文件应由( )语句来完成。
正确答案: C 你的答案: D (错误)
A.try子句
B.catch子句
C.finally子句
D.throw子句

解释:
try:可能发生异常的语句
catch:捕获,并处理异常(printStackTrace()用来跟踪异常事件发生时执行堆栈的内容)
throw:方法内部抛异常
throws:声明方法异常
finaly:代码中无论是否有异常都会执行,清除资源

8.以下代码在编译和运行过程中会出现什么情况

public class TestDemo{
    private int count;
    public static void main(String[] args) {
        TestDemo test=new TestDemo(88);
        System.out.println(test.count);
    }
     TestDemo(int a) {
         count=a;
    }
}

正确答案: A 你的答案: A (正确)
A.编译运行通过,输出结果是88
B.编译时错误,count变量定义的是私有变量
C.编译时错误,System.out.println方法被调用时test没有被初始化
D.编译和执行时没有输出结果

9.Java 的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点。
正确答案: B 你的答案: B (正确)
A.正确
B.错误

10.以下是java concurrent包下的4个类,选出差别最大的一个
正确答案: C 你的答案: B (错误)
A.Semaphore
B.ReentrantLock
C.Future
D.CountDownLatch

解释:
A、Semaphore:类,控制某个资源可被同时访问的个数;
B、ReentrantLock:类,具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大;
C、 Future:接口,表示异步计算的结果;
D、 CountDownLatch: 类,可以用来在一个线程中等待多个线程完成任务的类。

11.有以下类定义:

abstract class Animal{
    abstract void say();
}
public class Cat extends Animal{
    public Cat(){
        System.out.printf("I am a cat");
    }
    public static void main(String[] args) {
        Cat cat=new Cat();
    }
}

运行后:
正确答案: B 你的答案: C (错误)
A.I am a cat
B.Animal能编译,Cat不能编译
C.Animal不能编译,Cat能编译
D.编译能通过,但是没有输出结果

解释:
包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:

1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

2)抽象类不能用来创建对象;

3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

在其他方面,抽象类和普通的类并没有区别。

12.Java中下面哪个能创建并启动线程()

public class MyRunnable implements Runnable          { 
     public void run()             { 
         //some code here 
     } 
 }

正确答案: C 你的答案: A (错误)
A.new Runnable(MyRunnable).start()
B.new Thread(MyRunnable).run()
C.new Thread(new MyRunnable()).start()
D.new MyRunnable().start()

解释:

C正确
首先:创建并启动线程的过程为:定义线程—》实例化线程—》启动线程。 一 、定义线程:
1、扩展java.lang.Thread类。
2、实现java.lang.Runnable接口。
二、实例化线程:
1、如果是扩展java.lang.Thread类的线程,则直接new即可。
2、如果是实现了java.lang.Runnable接口的类,则用Thread的构造方法:
Thread(Runnable target)
Thread(Runnable target, String name)
Thread(ThreadGroup group, Runnable target)
Thread(ThreadGroup group, Runnable target, String name)
Thread(ThreadGroup group, Runnable target, String name, long stackSize) 所以A、D的实例化线程错误。
三、启动线程:
在线程的Thread对象上调用start()方法,而不是run()或者别的方法。 所以B的启动线程方法错误。

13.指出下列程序运行的结果:
复制代码

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';
    }
}

正确答案: B 你的答案: C (错误)
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数组是会改变原值的

14.JVM内存不包含如下哪个部分( )
正确答案: D 你的答案: B (错误)
A.Stacks
B.PC寄存器
C.Heap
D.Heap Frame

15.下列在Java语言中关于数据类型和包装类的说法,正确的是()

正确答案: B 你的答案: B (正确)
A.基本(简单)数据类型是包装类的简写形式,可以用包装类替代基本(简单)数据类型
B.long和double都占了64位(64bit)的存储空间。
C.默认的整数数据类型是int,默认的浮点数据类型是float。
D.和包装类一样,基本(简单)数据类型声明的变量中也具有静态方法,用来完成进制转化等。

解释:
A,包装和基本类型不是同一个概念
B, long和double都占了64位(64bit)的存储空间
C,默认的浮点数据类型是double,如果要指明使用float,则需要在后面加f
D,基本数据类型是没有静态方法的,但是基本数据类型的包装类却有

16.对于子类的构造函数说明,下列叙述中错误的是( )。
正确答案: A 你的答案: B (错误)
A.子类可以继承父类的构造函数。
B.子类中调用父类构造函数不可以直接书写父类构造函数,而应该用super();。
C.用new创建子类的对象时,若子类没有带参构造函数,将先执行父类的无参构造函数,然后再执行自己的构造函数。
D.子类的构造函数中可以调用其他函数。

解释: 选A
A、构造器不是继承,方法不说继承的。方法说的最多的就是重载和重写
B、C子类构造器的第一行默认都是super(),但是一旦父类中没有无参构造,第一行必须显式的调用某一个有参构造
D、构造器中可以调用别的方法。

17.判断对错。在java的多态调用中,new的是哪一个类就是调用的哪个类的方法。
正确答案: B 你的答案: A (错误)
A.对
B.错

解释:B错
java多态有两种情况:重载和覆写
在覆写中,运用的是动态单分配,是根据new的类型确定对象,从而确定调用的方法;
在重载中,运用的是静态多分派,即根据静态类型确定对象,因此不是根据new的类型确定调用的方法

18.what is the result of the following code?

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);
    }
}

正确答案: C 你的答案: B (错误)
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

解释:
枚举类在后台实现时,实际上是转化为一个继承了java.lang.Enum类的实体类,原先的枚举类型变成对应的实体类型,上例中AccountType变成了个class AccountType,并且会生成一个新的构造函数,若原来有构造函数,则在此基础上添加两个参数,生成新的构造函数,如上例子中:

private AccountType(){ System.out.println(It is a account type”); }

会变成:

private AccountType(String s, int i){
    super(s,i); System.out.println(It is a account type”); }

而在这个类中,会添加若干字段来代表具体的枚举类型:

public static final AccountType SAVING;
public static final AccountType FIXED;
public static final AccountType CURRENT;

而且还会添加一段static代码段:

static{
    SAVING = new AccountType("SAVING", 0);
    ...  CURRENT = new AccountType("CURRENT", 0);
   $VALUES = new AccountType[]{
         SAVING, FIXED, CURRENT
    } }

以此来初始化枚举中的每个具体类型。(并将所有具体类型放到一个$VALUE数组中,以便用序号访问具体类型) 在初始化过程中new
AccountType构造函数被调用了三次,所以Enum中定义的构造函数中的打印代码被执行了3遍。

19.以下哪一个正则表达式不能与字符串“https://www.tensorflow.org/”(不含引号)匹配?()

正确答案: B 你的答案: B (正确)
A.[a-z]+://[a-z.]+/
B.https[😕/]www[.]tensorflow[.]org[/]
C.[htps]+://www.tensorflow.org/
D.[a-zA-Z.😕]+

20.面向对象程序设计方法的优点包含:
正确答案: A B C 你的答案: A B C (正确)
A.可重用性
B.可扩展性
C.易于管理和维护
D.简单易懂

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

风儿吹吹吹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值