【Java练习题】Java 程序的输出 | 第十一套(含解析)

2,616 阅读4分钟

这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战

难度级别: 中级

程序

程序一

预测以下 Java 程序的输出:

public class Base{
	private int data;
	public Base(){
		data = 5;
	}
	public int getData(){
		return this.data;
	}
}

class Derived extends Base{
	private int data;
	public Derived(){
		data = 6;
	}
	private int getData(){
		return data;
	}
	public static void main(String[] args){
		Derived myData = new Derived();
		System.out.println(myData.getData());
	}
}

a) 6
b) 5
c) 编译时错误
d) 运行时错误

点此跳转到答案


程序二

public class Test{
	private int data = 5;
	public int getData()	{
		return this.data;
	}
	public int getData(int value)	{
		return (data+1);
	}
	public int getData(int... value)	{
		return (data+2);
	}
	public static void main(String[] args)	{
		Test temp = new Test();
		System.out.println(temp.getData(7, 8, 12));
	}
}

a) 编译时或运行时错误
b) 8
c) 10
d) 7

点此跳转到答案


程序三

public class Base{
	private int multiplier(int data){
		return data*5;
	}
}

class Derived extends Base{
	private static int data;
	public Derived(){
		data = 25;
	}
	public static void main(String[] args){
		Base temp = new Derived();
		System.out.println(temp.multiplier(data));
	}
}

a) 125
b) 25
c) 运行时错误
d) 编译时错误

点此跳转到答案


问题四

以下关于 finally 块的说法错误的是?

a) 对于每个 try 块,只能有 1 个 finally 块。
b) 如果程序通过调用 System.exit() 退出,则 finally 块将不会被执行;
c) 如果在 catch 语句中没有处理异常,在终止程序之前,JVM 会执行 finally 块
d) finally 块包含重要的代码段,因此 finally 块中的代码在 java 中存在/不存在 try 块的情况下执行代码。

点此跳转到答案


程序五

import java.io.IOException;
import java.util.EmptyStackException;

public class newclass{
	public static void main(String[] args){
		try{
			System.out.printf("%d", 1);
			throw(new Exception());
		}
		catch(IOException e){
			System.out.printf("%d", 2);
		}
		catch(EmptyStackException e){
			System.out.printf("%d", 3);
		}
		catch(Exception e){
			System.out.printf("%d", 4);
		}
		finally{
			System.out.printf("%d", 5);
		}
	}
}

a) 12345
b) 15
c) 135
d) 145

点此跳转到答案


程序六

public class javaclass{
	static{
		System.out.printf("%d", 1);
	}
	static{
		System.out.printf("%d", 2);
	}
	static{
		System.out.printf("%d", 3);
	}
	private static int myMethod(){
		return 4;
	}
	private int function(){
		return 5;
	}

	public static void main(String[] args){
		System.out.printf("%d", (new javaclass()).function() + myMethod());
	}
}

a) 123
b) 45
c) 12345
d) 1239

点此跳转到答案


文章后半部分是程序的输出及解析

9ae3f2f42415ec425ac3df6d87dfc531.jpg


输出及解析

程序一输出

答案

(c)

说明

当覆盖超类的方法时,子类中的方法声明不能比超类中声明的方法更严格。

程序二输出

答案

(d)

说明

当您不知道输入参数的数量但知道参数的类型(在本例中为 int)时,(int... values) 作为参数传递给方法。当在 main 方法中创建一个新对象时,变量数据被初始化为 5。对具有属性 (7, 8 ,12) 的 getData() 方法的调用会调用第三个 getData() 方法,该方法会增加值数据变量乘以 2 并返回 7。

程序三输出

答案

(d)

说明

由于方法乘数被标记为私有,因此它不是继承的,因此对派生者不可见。

程序四答案

回答 :

(d)

说明

语句(d) 是错误的,因为finally 块只有在try 或catch 块成功时才能存在。使用没有 try 块的 finally 块会产生编译时错误。

程序五答案

回答 :

(d)

说明:

catch 语句的编写顺序是:更具体到更一般。在上面的代码中,抛出了一个 Exception 类型的新异常。首先,代码跳转到第一个 catch 块以查找异常处理程序。但是由于 IOException 不是同一类型,它向下移动到第二个 catch 块,最后移动到第三个,在那里捕获异常并打印 4。因此,答案是 145,因为按照块的执行顺序是:try->catch->finally。

程序六答案

回答 :

(d)

说明:

Java 中的静态块甚至在编译器调用 main 之前就已执行。在main方法中,新建一个javaclass对象,调用它的function()方法返回5,静态方法myMethod()返回4,即4+5=9。因此,程序的输出为1239,因为 123 甚至在 main 方法执行之前就被打印在控制台上,并且 main 方法在执行时返回 9。


以上就是本篇文章的所有内容了

相关文章:

【Java练习题】Java程序的输出 | 第一套(含解析)
【Java练习题】Java程序的输出 | 第二套(含解析)
【Java练习题】Java程序的输出 | 第三套(含解析)
【Java练习题】Java程序的输出 | 第四套(含解析)
【Java练习题】Java程序的输出 | 第五套(含解析)
【Java练习题】Java程序的输出 | 第六套(含解析)
【Java练习题】Java程序的输出 | 第七套(含解析)
【Java练习题】Java程序的输出 | 第八套(含解析)
【Java练习题】Java程序的输出 | 第九套(含解析)
【Java练习题】Java 程序的输出 | 第十套(垃圾回收)

我已经写了很长一段时间的技术博客,这是我的一篇技术文章/教程。希望你们会喜欢!这里汇总了我的全部原创及作品源码:GitHub,还有这是我最近刚搭建的博客:haiyong.site,里面还没啥内容,放了一些HTML小游戏,有兴趣的可以尝试一下,源码可以自己F12复制,或者直接找我要。

如果你真的从这篇文章中学到了一些新东西,喜欢它,收藏它并与你的小伙伴分享。🤗最后,不要忘了❤或📑支持一下哦