阅读 1987

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

这是我参与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复制,或者直接找我要。

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

文章分类
后端