Skip to content

Java 非选择题整理


二、填空题

11. Java 编译器将 Java 程序编译成虚拟机能够识别的二进制代码,这种代码称为______。

答案:字节码(或 Bytecode)


12. 语句 System.out.println((20+2*9)/4%7); 的输出是______。

答案:2


13. if 语句中的条件表达式必须得到一个______类型的值。

答案:逻辑(或 boolean)


14. 对应于基本类型 char 的包装类是______。

答案:Character


15. 若有定义:int myArray[][]={{23},{46,20},{98,81,64},{54,43,55,76}};,则语句 System.out.println(myArray[1][1]); 将输出______。

答案:20


16. 接口中的数据成员变量在声明时一定要______。

答案:赋初值


17. 能够输入输出对象的流称为______。

答案:对象流


18. 对组件中文本的字体进行设定的方法是______。

答案:setFont()


19. 语句 JTextField = new JTextField(10); 中,函数参数 10 表示的是文本输入框的______。

答案:列数


20. 实现线程之间交互的方法是 notify()/notifyAll() 和______。

答案:wait()


11. 在 Windows 操作系统下安装 JDK 后,需要正确设置系统的环境变量______和 CLASSPATH。

答案:Path(不区分大小写)


12. 在 Java 类中定义的 double 型成员变量的默认初始值是______。

答案:0.0


13. 以下语句执行的结果是______。 for(int i=0, s=0; i<5; i++){ s+=++i; System.out.print(s); }

答案:149


14. 在 Java 语言中,调用类的______是生成实例对象的唯一途径。

答案:构造方法


15. System 类中提供了一个可以实现数组复制的方法,这个方法的名字是______。

答案:arraycopy


16. 当父类中原有的方法不能满足子类的要求时,在子类中修改父类已有的方法,这就是______。

答案:方法覆盖(或方法重写,或隐藏)


17. 在 Java 语言中,创建______类的对象后即可使用其中的方法来获取特定文件的路径信息。

答案:File


18. 在 Java 语言中,为每个事件类型提供了一个______,它规定了接收并处理该类事件的方法的规范。

答案:侦听程序接口


19. 在 Java 语言中,用于创建标准对话框的类是______。

答案:JOptionPane


20. 在 Java 语言中,能够释放所有等待线程的方法的名字是______。

答案:notifyAll


11. 若执行一个 Java 程序的命令是 java HelloWorldApp arg1,则保存 arg1 的数组元素的下标是______。

答案:0


12. 语句 System.out.println(45&20); 的输出是______。

答案:4


13. switch 语句中,switch 关键字之后的表达式必须是 int 类型或______类型。

答案:char(或字符)


14. 若类 C 中有一个成员变量 M,类 C 的子类可以访问 M,但与类 C 不在同一个包中的其他类不能访问 M,则 M 的修饰符应该是______。

答案:protected


15. 语句 System.out.println("ThisIsAString".substring(6)); 的输出是______。

答案:AString


16. 类中不能被覆盖的方法称为______。

答案:终极方法(或终态方法)


17. 把字节序列恢复为对象的过程称为对象的______。

答案:反序列化


18. 当要创建自定义图形时,需要由 JPanel 类派生一个新类,并重写父类的______方法。

答案:paintComponent()


19. 菜单项的构造方法 JMenuItem(String text, int mnemonic) 中,参数 mnemonic 表示的是______。

答案:快捷键


20. 强制终止线程执行的方法是______。

答案:yield()


11. 若公有类 Myapp 经过编译后生成字节码文件 Myapp.class,并且执行时需要传入两个参数 arg1 和 arg2,则在命令提示符后要键入的命令是______。

答案:java Myapp arg1 arg2


12. Java 类库中的每个异常都有一个存取方法,可返回抛出异常时创建的描述字符串,该方法的名字是______。

答案:getMessage()


13. 设有表示平面坐标系中一个点的类 Point,其中含有两个 float 类型的数据成员变量 x 和 y,分别表示一个点的横、纵坐标。为类 Point 添加一个构造方法,形参分别是 x1 和 y1,此构造方法是:______。

答案:Point(float x1, float y1) { x = x1; y = y1; }

(或 Point(float x1, float y1) { x = y1; y = x1; }


14. 方法签名包括方法名称加上方法的______。

答案:参数列表


15. 已知有字符数组 char chars[] = {'a'},由 chars 创建字符串 s 的语句是______。

答案:String s = new String( chars );


16. 类 A 中包含了方法 method,该方法只有方法声明,但没有方法的实现,则类 A 是______。

答案:抽象类


17. 对于类 FileOutputStream 的实例对象,如果所指定的文件不存在,则______。

答案:系统创建一个新文件


18. Swing 中,创建一个初始时不可见、具有指定标题 title 的新框架窗体的构造方法是______。

答案:JFrame(String title)


19. 创建一个初始字符串为"Input Line"、列数为 20 的文本域 textF 的语句是______。

答案:JTextField textF = new JTextField("Input Line", 20);


20. 在 Java 语言中,为了实现不同线程对共享数据操作的同步,可以使用______。

答案:对象互斥锁(或监视器)


三、简答题

21. 说明嵌套的 if 语句中,if 与 else 的个数应满足的条件及 else 语句的对应规则。

答案:

(1) if 的个数等于或多于 else 的个数。(2分)

(2) else 子句属于逻辑上离它最近的 if 语句,即同一块中还没有匹配的 if。(2分)


22. 如果方法的形参是引用类型,则在调用方法时,实参传递的内容是什么?当从方法返回时,对实参有何影响?

答案:

(1) 在调用方法时,将实参的首地址传递给形参。(2分)

(2) 从方法返回时,对形参的修改也即修改了实参。(2分)


23. 若让数组 A 含有 "Java"、"program"、"My" 3个字符串,请写出创建数组并进行静态初始化的两种不同的语句形式。

答案:

(1) String A[] = {"Java", "program", "My"};(2分)

(2) String A[] = new String[3];(1分)
A[0]="Java"; A[1]="program"; A[2]="My";(1分)


24. 在同一个类中,同名的方法之间是什么关系?在不同的类中,同名的方法之间是什么关系?

答案:

(1) 同一个类中,具有不同签名的同名方法是重载方法。(1分)

(2) 具有继承关系的类之间,有相同参数表的同名方法是重写,子类方法覆盖了祖先类中的同名方法(1分);参数表不同的是重载方法(1分)。其他不同类中,同名方法没有关系(1分)。


25. 什么是轻量级组件?什么是重量级组件?在程序中同时使用轻量级组件和重量级组件时,会有什么显示效果?

答案:

(1) 不包含本地代码的组件称为轻量级组件。(1分)

(2) 包含本地代码的组件称为重量级组件。(1分)

(3) 当重量级组件与轻量级组件一同使用时,如果组件区域有重叠,重量级组件总是显示在上面。(2分)


26. 什么是数据流?java.io 包中提供了哪四个基本抽象类?

答案:

数据流:数据的传输和处理像水流一样,按照一定的顺序和方式进行输入输出。

java.io 包中四个基本抽象类:

  • 字节输入流:InputStream
  • 字节输出流:OutputStream
  • 字符输入流:Reader
  • 字符输出流:Writer

27. 简述 Java 语言的特点。

答案:

  • 简单性
  • 面向对象
  • 平台无关性
  • 安全性
  • 分布式
  • 多线程

28. 什么是接口?它与抽象类的相同点和差异是什么?

答案:

接口:接口是一种特殊的抽象类,用 interface 关键字定义。

相同点

  • 都可以包含抽象成员
  • 都不能直接被实例化

不同点

  • 继承限制:一个类可以实现多个接口,但只能继承一个抽象类
  • 成员变量:接口只能有常量(public static final),抽象类可以有普通成员变量
  • 普通方法:接口默认不能有普通方法(Java 8 前),抽象类可以有
  • 构造方法:接口不能有构造方法,抽象类可以有

29. 在什么情况下,执行 try 语句中的 finally 后面的代码段?finally 后面的代码段的作用是什么?

答案:

执行时机:不管 try 语句中代码是否发生异常,也不管 catch 语句是否捕捉到异常,finally 块中的代码始终都会执行。

作用:用于释放资源、清理操作(如关闭文件流、数据库连接等)。


30. 简述创建线程的方法。

答案:

方法一:继承 Thread

  1. 定义一个类继承 Thread
  2. 重写 run() 方法
  3. 创建该类的实例并调用 start() 启动线程

方法二:实现 Runnable 接口

  1. 定义一个类实现 Runnable 接口
  2. 实现 run() 方法
  3. 将该类实例传入 Thread 构造器并调用 start()

21. 请分别写出在类和方法中声明的变量的作用域。

答案:

类中声明的变量的作用域是整个类。(2分)方法中声明的变量的作用域是从该变量的声明处开始到包含该声明的语句块结束处。(2分)


22. 请分别写出类定义中使用 public、private、protected 和默认修饰符所修饰的成员的访问权限。

答案:

(1)用 public 修饰的成员可以被其他任何对象访问。(1分)

(2)用 private 修饰的成员只能在本类内访问。(1分)

(3)用 protected 修饰的成员只可以被同一包及其子类的实例对象访问。(1分)

(4)默认修饰符所修饰的成员可以被所在包中的各类访问。(1分)


23. 请写出对象转型的 2 条使用规则。

答案:

(1)沿类层次向"上"转型总是合法的,此种方式下不需要转型运算符。(2分)

(2)对于向"下"转型,只能是祖先类转型到后代类,且要使用显式转换,其他类之间是不允许的。(2分)


24. 请写出 Swing 中提供的 4 种顶层容器。

答案:

JFrame(1分)、JApplet(1分)、JDialog(1分)和 JWindow(1分)。


25. 请写出 Java 语言中线程的组成内容及其调度方式。

答案:

线程由 3 部分组成:虚拟 CPU(1分)、执行的代码(1分)、处理的数据(1分)。线程采用抢占式调度方式(1分)。

21. 写出 while 语句和 do 语句中循环体的执行情况。

答案:

(1)while 语句先判断条件表达式的真假,为真时执行循环体,为假时循环执行结束(1分)。如果初始时条件表达式为假,则循环体一次也不执行(1分)。

(2)do 语句在执行一次循环体后,再判断条件表达式的真假,为真时再次执行循环体,为假时循环执行结束(1分)。不论初始时条件表达式为何值,循环体都至少执行一次(1分)。


22. 重载方法的返回值类型是否一致?返回值类型是否可以作为区分重载方法的依据?请解释原因。

答案:

(1)重载方法的返回值类型可以相同也可以不同。(1分)

(2)返回值类型不可以作为区分重载方法的依据。(1分)

(3)选择调用哪个方法是在执行方法体之前进行的,此时尚不知道返回值是什么,所以不能确定返回值的类型,故不可以依据返回值类型来区分重载方法。(2分)


23. 分别写出对应于 int、char、void 和 byte 的包装类名。

答案:

Integer(1分);Character(1分);Void(1分);Byte(1分)。


24. 列出 JOptionPane 类中的 4 种标准对话框及对应的静态方法名。

答案:

(1)确认对话框,showConfirmDialog()。(1分)

(2)输入对话框,showInputDialog()。(1分)

(3)信息对话框,showMessageDialog()。(1分)

(4)选项对话框,showOptionDialog()。(1分)


25. 若有两个父类 P1 和 P2,一个子类 S,分别画出表示单重继承与多重继承的示意图。

答案:

(1)单重继承(2分)

P1 → S 或 P2 → S(一个父类指向一个子类)

(2)多重继承(2分)

P1 和 P2 同时 → S(两个父类共同指向一个子类)

21. Java 中的基本数据类型 byte、char、float、long 和 short 在参与表达式计算时,能够进行自动类型转换的类型顺序依次是什么?

答案:byte short char long float(4 分)


22. 简要叙述 try-catch 块的处理过程。

答案:

(1)如果 try 块内没有发生异常,则 try 块内的语句全部执行,然后执行 catch 块后的语句。(1 分)

(2)如果在 try 块内发生了某类异常,则执行立即转到对应的 catch 块,执行其中的语句去处理异常。(2 分)

(3)不论是否捕获到异常,总要执行 finally 后面的语句。(1 分)


23. 简要叙述包装类的用途。包装类定义在哪个包中?

答案:

(1)当想用处理对象一样的方式来处理基本类型的数据时,必须将基本类型值"包装"为一个对象。(2 分)

(2)所有的包装类都定义在 java.lang 包中。(2 分)


24. 什么是单重继承与多重继承?Java 中的继承是哪一种?

答案:

(1)单重继承是指一个类只能有一个父类。(1 分)

(2)多重继承是指从多个类共同派生一个子类,即一个类可以有多个父类。(1 分)

(3)Java 实现的是单重继承。(2 分)


25. 简要叙述线程死亡的两个原因。

答案:

线程死亡的原因有两个:一是 run() 方法中最后一个语句执行完毕(2 分),二是当线程遇到异常退出时便进入了死亡状态(2 分)。