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

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

难度级别: 中级git

程序

程序一

预测如下 Java 程序的输出:github

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) 运行时错误markdown

点此跳转到答案svn


程序二

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) 7oop

点此跳转到答案post


程序三

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) 编译时错误flex

点此跳转到答案this


问题四

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

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

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

相关文章
相关标签/搜索