前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java练习题】Java程序的输出 | 第一套(含解析)

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

作者头像
海拥
发布2021-08-23 17:44:15
2980
发布2021-08-23 17:44:15
举报
文章被收录于专栏:全栈技术全栈技术
在这里插入图片描述
在这里插入图片描述

难度等级:菜鸟

预测以下 Java 程序的输出。

考虑到如果将答案紧接着问题贴出来,同学们可能还没思考就不小心看到了结果,所以我把问题和答案分开放,中间还用东西挡了一下,希望不会给大家带来阅读上的困难

问题

问题一

代码语言:javascript
复制
// 文件名称 Main.java
class Test {
	protected int x, y;
}

class Main {
	public static void main(String args[]) {
		Test t = new Test();
		System.out.println(t.x + " " + t.y);
	}
}

点此跳转到答案

问题二

代码语言:javascript
复制
// filename Test.java
class Test {
	public static void main(String[] args) {
		for(int i = 0; 1; i++) {
			System.out.println("Hello");
			break;
		}
	}
}

点此跳转到答案

问题三

代码语言:javascript
复制
// filename Main.java
class Main {
	public static void main(String args[]) {
		System.out.println(fun());
	}
	int fun() {
		return 20;
	}
}

点此跳转到答案

问题四

代码语言:javascript
复制
// filename Test.java
class Test {
public static void main(String args[]) {
	System.out.println(fun());
}
static int fun() {
	static int x= 0;
	return ++x;
}
}

点此跳转到答案


放张可爱妹子的图缓解一下眼睛疲劳,文章后半部分是程序的输出及解析

在这里插入图片描述
在这里插入图片描述

输出及解析

问题一答案

输出

代码语言:javascript
复制
0 0

在 Java 中,protected 的成员可以在同一包的所有类和其他包的继承类中访问。由于 Test 和 Main 在同一个包中,上述程序中没有访问相关的问题。此外,默认构造函数在 Java中将整数变量初始化为 0。这就是为什么我们得到输出为 0 0。

问题二答案

输出

代码语言:javascript
复制
Compiler Error

Compiler Error:编译器错误,for 循环的条件检查表达式中存在错误。Java 在这里不同于 C++(或 C)。C++ 将所有非零值视为真,将 0 视为假。与 C++ 不同,整数值表达式不能放置在 Java 中需要布尔值的位置。以下是修正后的程序。

代码语言:javascript
复制
// 文件名 Test.java
class Test {
	public static void main(String[] args) {
		for(int i = 0; true; i++) {
			System.out.println("Hello");
			break;
		}
	}
}
// 输出: Hello

问题三答案

输出

代码语言:javascript
复制
Compiler Error

Compiler Error:编译器错误,与 C++ 一样,在 Java 中,不能在静态方法中调用非静态方法。如果我们将 fun() 设为静态,那么程序可以正常编译而不会出现任何编译器错误。以下是修正后的程序。

代码语言:javascript
复制
// 文件名 Main.java
class Main {
	public static void main(String args[]) {
		System.out.println(fun());
	}
	static int fun() {
		return 20;
	}
}
// 输出: 20

问题四答案

输出

代码语言:javascript
复制
Compiler Error

Compiler Error:编译器错误,与 C++ 不同,Java 中不允许使用静态局部变量。有关详细信息,请参阅此GFact。我们可以使用类静态成员来计算 C++ 局部静态变量所服务的函数调用次数和其他目的。以下是修正后的程序。

代码语言:javascript
复制
class Test {
private static int x;
public static void main(String args[]) {
	System.out.println(fun());
}
static int fun() {
	return ++x;
}
}
// 输出: 1

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
    • 问题一
      • 问题二
        • 问题三
          • 问题四
          • 输出及解析
            • 问题一答案
              • 问题二答案
                • 问题三答案
                  • 问题四答案
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档