「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,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();
}
}
放张可爱妹子的图缓解一下眼睛疲劳,文章后半部分是程序的输出及解析
输出及解析
问题一答案
输出:
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。
相关文章:
我已经写了很长一段时间的技术博客,这是我的一篇技术文章/教程。希望你们会喜欢!这里汇总了我的全部原创及作品源码:GitHub、Gitee
如果你真的从这篇文章中学到了一些新东西,喜欢它,收藏它并与你的小伙伴分享。🤗最后,不要忘了❤或📑支持一下哦