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

3,228 阅读3分钟

「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!」

难度等级: 中等

预测以下 Java 程序的输出:

问题

问题一

class GfG
{
	public static void main(String args[])
	{
		String s1 = new String("geeksforgeeks");
		String s2 = new String("geeksforgeeks");
		if (s1 == s2)
			System.out.println("Equal");
		else
			System.out.println("Not equal");
	}
}

点此跳转到答案

问题二

class Person
{
	private void who()
	{
		System.out.println("Inside private method Person(who)");
	}

	public static void whoAmI()
	{
		System.out.println("Inside static method, Person(whoAmI)");
	}

	public void whoAreYou()
	{
		who();
		System.out.println("Inside virtual method, Person(whoAreYou)");
	}
}

class Kid extends Person
{
	private void who()
	{
		System.out.println("Kid(who)");
	}

	public static void whoAmI()
	{
		System.out.println("Kid(whoAmI)");
	}

	public void whoAreYou()
	{
		who();
		System.out.println("Kid(whoAreYou)");
	}
}
public class Gfg
{
	public static void main(String args[])
	{
		Person p = new Kid();
		p.whoAmI();
		p.whoAreYou();
	}
}

点此跳转到答案

问题三

class GfG
{
	public static void main(String args[])
	{
		try
		{
			System.out.println("First statement of try block");
			int num=45/3;
			System.out.println(num);
		}
		catch(Exception e)
		{
			System.out.println("Gfg caught Exception");
		}
		finally
		{
			System.out.println("finally block");
		}
		System.out.println("Main method");
	}
}

点此跳转到答案

问题四

class One implements Runnable
{
	public void run()
	{
		System.out.print(Thread.currentThread().getName());
	}
}
class Two implements Runnable
{
	public void run()
	{
		new One().run();
		new Thread(new One(),"gfg2").run();
		new Thread(new One(),"gfg3").start();
	}
}
class Three
{
	public static void main (String[] args)
	{
		new Thread(new Two(),"gfg1").start();
	}
}

点此跳转到答案


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

9992fc8fbcb7d37eac355b3c01f68bb3.jpg


输出及解析

问题一答案

输出

Not equal

解释

由于 s1 和 s2 是两个不同的对象,因此引用不相同,并且 == 运算符比较对象引用。所以它打印“不等于”,来比较字符串中的实际字符,必须使用 .equals() 方法。

问题二答案

输出

Inside static method, Person(whoAmI)
Kid(who)
Kid(whoAreYou)

说明

静态绑定(或编译时)发生在静态方法上。这里p.whoAmI()调用静态方法,因此它在编译时被调用,因此导致静态绑定并在 Person 类中打印该方法。 而p.whoAreYou()调用Kid类中的方法,因为默认情况下 Java 将其作为虚拟方法,即动态绑定。

问题三答案

输出

First statement of try block
15
finally block
Main method

解释

由于没有异常,所以不调用catch块,但不管异常是否处理,finally块总是在try块之后执行。

问题四答案

输出

gfg1gfg1gfg3

说明

最初新线程以名称gfg1启动,然后在类二中,第一个 run 方法运行名为gfg1的线程,然后创建一个新线程调用 run 方法,但由于只能通过调用 start 方法创建新线程所以以前的线程执行的行动,并再次gfg1是printed.Now一个新的线程是通过调用start方法使一个新的线程启动创建gfg3名称,因此打印gfg3。


相关文章:

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

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

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

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

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

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

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

我已经写了很长一段时间的技术博客,这是我的一篇技术文章/教程。希望你们会喜欢!这里汇总了我的全部原创及作品源码:GitHubGitee

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