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

3,449 阅读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程序的输出 | 第七套(含解析)

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

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