java练习_Java基础笔试练习(十五)

44d63b3100cba6532abf12370aa28830.png

Java基础笔试练习(十五)

1. 有以下代码片段,请问输出的结果是()?

String str1="hello";String str2="he"+ new String("llo");System.out.println(str1==str2);

A.true

B.都不对

C.null

D.false

答案:

D

解析:

String str1="hello"; 这样创建字符串是存在于常量池中

String str2=new String("hello"); str2存在于堆中,

==是验证两个对象是否是一个(内存地址是否相同)

用+拼接字符串时会创建一个新对象再返回。

2.在如下所示的类Test中,共有()个构造方法。

public class Test{ private int x; public Test(){ x = 35; } public void Test(double f){ this.x = (int)f; } public Test(double f){ this.x = (int)f; } public Test(String s) {}}

A.0

B.1

C.2

D.3

答案:

D

解析:

构造方法形式:

类名([形式参数表])

构造方法没有返回值,不能添加void,构造方法可以被重载

3.一个以”.java”为后缀的源文件

A.只能包含一个类,类名必须与文件名相同

B.只能包含与文件名相同的类以及其中的内部类

C.只能有一个与文件名相同的类,可以包含其他类

D.可以包含任意类

答案:

C

解析:

略,前面都做过的- -!

4.下面哪些不是Thread类的方法

A.start()

B.run()

C.exit()

D.getPriority()

答案:

C

解析:

线程常用方法:

start(): 使该线程开始执行;Java 虚拟机调用该线程的run方法。

run():如果该线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,该方法不执行任何操作并返回。

join():等待该线程终止。

getPriority():返回线程的优先级。

yield():暂停当前正在执行的线程对象,并执行其他线程

5.关于 JAVA 堆,下面说法错误的是()

A.所有类的实例和数组都是在堆上分配内存的

B.对象所占的堆内存是由自动内存管理系统回收

C.堆内存由存活和死亡的对象,空闲碎片区组成

D.数组是分配在栈中的

答案:

D

解析:

  1. 对象存储在堆区。
  2. 数组是一种对象。

6.一个文件中的字符要写到另一个文件中,首先需要( )。

A.使用标准输出流System.out.println()。

B.建立文件字符输出流。

C.建立文件字符输入流。

D.标准输入流System.in.read()。

答案:

C

解析:

一个文件中的字符要写到另一个文件中,首先需要读取这个文件,所以要先建立输入流,然后写到另一个文件,这时再建立输出流.所以要先建立输入流,再建立输出流.

7.尝试编译以下程序会产生怎么样的结果?()

public class MyClass { long var; public void MyClass(long param) { var = param; }//(1) public static void main(String[] args) { MyClass a, b; a =new MyClass();//(2) b =new MyClass(5);//(3) }}

A.编译错误将发生在(1),因为构造函数不能指定返回值

B.编译错误将发生在(2),因为该类没有默认构造函数

C.编译错误将在(3)处发生,因为该类没有构造函数,该构造函数接受一个int类型的参数

D.该程序将正确编译和执行

答案:

C

解析:

构造方法就是:public 类名, 没有方法修饰符,所以 (1) 处就是一个普通方法,所以该类没有带参数构造方法 ,编译报错

8.下面叙述那个是正确的?()

A.java中的集合类(如Vector)可以用来存储任何类型的对象,且大小可以自动调整。但需要事先知道所存储对象的类型,才能正常使用。

B.在java中,我们可以用违例(Exception)来抛出一些并非错误的消息,但这样比直接从函数返回一个结果要更大的系统开销。

C.java接口包含函数声明和变量声明。

D.java中,子类不可以访问父类的私有成员和受保护的成员。

答案:

B

解析:

A.vector是线程安全的ArrayList,在内存中占用连续的空间。初始时有一个初始大小,当数据条数大于这个初始大小后会重写分配一个更大的连续空间。如果Vector定义为保存Object则可以存放任意类型。

B.try{}catch{}会增加额外的开销

C.接口中声明的'变量'必须为public final static,所以为常量

D.子类可以访问父类受保护的成员

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

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

A.代码编程成功,并输出”s=”

B.代码编译成功,并输出”s=null”

C.由于String s没有初始化,代码不能编译通过。

D.代码编译成功,但捕获到NullPointException异常

答案:

C

解析:

局部变量没有默认值

10. 代码 的运行结果是()?

A.在控制台打印hello sunline!

B.报异常java.lang.NullPoninterException

C.编译报错

D.报异常java.lang.RuntimeExcception

答案:

C

解析:

1、Java 中单实现通过 implements 关键字,多实现通过 extends 关键字

2、Java 中单继承通过 extends 关键字,没有多继承

3、如果同时出现继承和实现,则必须先继承(extends)再实现(implements)

11.由3 个“1”和 5 个“0”组成的 8 位二进制补码,能表示的最小整数()

A.-126

B.-125

C.-32

D.-3

答案:

B

解析:

既然求最小整数,那肯定先想到负数,则最高位(符号位)一定为1,原码中肯定是1所在的位数越高,值越小,而补码是由原码取反加1得到的,则在补码中1所在的位数一定要越低,即补码为1000 0011;由补码求得原码:1111 1101=-(64+32+16+8+4+1)=-125;

12.运行代码,结果正确的是:()?

Boolean flag = false;if(flag = true){ System.out.println("true");}else{ System.out.println("false");}

A.编译错误

B.TRUE

C.FALSE

D.什么也没有输出

答案:

B

解析:

if(flag = true)的时候flag已经是true了,所以输出true;

要是为if(flag == true)输出才为false

13.下列哪个选项是合法的标识符?()

A.123

B._name

C.class

D.first

答案:

B D

解析:

Java标识符由 数字、字母、下划线(_)、美元符号($) 组成,首位不能是数字 。并且Java关键字不能作为标识符 。

14.Why would a responsible Java programmer want to use a nested class?

A.To keep the code for a very specialized class in close association with the class it works with.

B.To support a new user interface that generates custom events.

C.To impress the boss with his/her knowledge of Java by using nested classes all over the place.

答案:

A B

解析:

使用嵌套类,其中有几个令人信服的理由:

加强封装—考虑两个顶级类,A和B,如果B需要访问A的private成员,通过在A类隐藏B类,那么即使A的成员声明为private,那么B也可以访问它们。更多的是,B本身也可以隐藏于外部。跟可读性,可维护性的代码—在顶级类里嵌套小类,让代码更靠近使用的地方。

15.下面有关Java的说法正确的是( )

A.一个类可以实现多个接口

B.抽象类必须有抽象方法

C.protected成员在子类可见性可以修改

D.通过super可以调用父类构造函数

E.final的成员方法实现中只能读取类的成员变量

F.String是不可修改的,且java运行环境中对string对象有一个对象池保存

答案:

A C D F

解析:

A对:java类单继承,多实现

B错:被abstract修饰的类就是抽象类,有没有抽象方法无所谓

C错:这道题应该是要考察子类继承父类,并重写父类的protected成员方法,该方法的可见性可以修改,这是对的,因为子类继承父类的方法,访问权限可以相同或往大了改

D对。

E错:final修饰的方法只是不能重写,static修饰的方法只能访问类的成员变量

F对。

16.下列描述正确的是( )?

A.类不可以多继承而接口可以多实现

B.抽象类自身可以定义成员而接口不可以

C.抽象类和接口都不能被实例化

D.一个类可以有多个基类和多个基接口

答案:

A C

解析:

1.java支持单继承,却可以实现多个接口。a对d错

2.接口没有构造方法,所以不能实例化,抽象类有构造方法,但是不是用来实例化的,是用来初始化的。c对

3.抽象类可以定义普通成员变量而接口不可以,但是抽象类和接口都可以定义静态成员变量,只是接口的静态成员变量要用static final public 来修饰。b错

17.关于下面这段Java程序,哪些描述是正确的:( )

public class ThreadTest extends Thread { public void run() { System.out.println("In run"); yield(); System.out.println("Leaving run"); } public static void main(String []argv) { (new ThreadTest()).start(); }}

A.程序运行输出只有In run

B.程序运行输出只有Leaving run

C.程序运行输出先有In run后有Leaving run

D.程序运行输出先有Leaving run后有In run

E.程序没有任何输出就退出了

F.程序将被挂起,只能强制退出

答案:

C

解析:

yield()从未导致线程转到等待/睡眠/阻塞状态。在大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果。

18.哪个是不正确的字符常量?

A.””

B.”1”

C.”a”

D.”101”

答案:

A B C D

解析:

四个答案都采用的是双引号关闭,所以是字符串常量而不是字符常量。

忽略这个错误,那么这题就没有答案,因为无论是采用特殊字符的转移序列''还是采用八进制转义'101',都是满足Java语言规范中规定的字符常量格式。

19.JDK提供的用于并发编程的同步器有哪些?

A.Semaphore

B.CyclicBarrier

C.CountDownLatch

D.Counter

答案:

A B C

解析:

A,Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。

B,CyclicBarrier 主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此 CyclicBarrier 上面阻塞的线程开始运行。

C,直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门闩的意思顾名思义就是阻止前进。在这里就是指 CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程。

D,Counter不是并发编程的同步器

20.下面关于面向对象的一些理解哪些是错误的( )?

A.面向对象的最重要的特性是支持继承、封装和多态

B.系统设计应该遵循开闭原则,系统应该稳定不不可修改,但应支持通过继承、组合等方式进行扩展

C.函数式的语言必然是面向对象的语言

D.面向对象设计时,每个类的职责应该单一,不要再一个类中引入过多的接口

E.过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装

F.Java和C++都是静态类型的面向对象编程语言

答案:

C

解析:

动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

更多大厂笔试,可关注公众号后查看!

文末

欢迎关注个人微信公众号:Coder编程

欢迎关注Coder编程公众号,主要分享数据结构与算法、Java相关知识体系、框架知识及原理、Spring全家桶、微服务项目实战、DevOps实践之路、每日一篇互联网大厂面试或笔试题以及PMP项目管理知识等。更多精彩内容正在路上~

127edcba04db0b8dd8533ac9950b6715.png

微信公众号

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值