黑马程序员技术交流社区
标题:
一道有趣的java题
[打印本页]
作者:
xiangzi2008006
时间:
2013-8-31 14:59
标题:
一道有趣的java题
如何输出hello world?
public static void main(String[] args) {
try{
if(){
System.out.print("Hello ");
}else{
System.out.println("world!");
}
}catch (Exception e) {
e.printStackTrace();
}
}
复制代码
以上程序,在不新建类和方法的情况下,在if()里面加代码,使程序编译运行通过,输出Hello world!
如何实现?
作者:
★忙碌★
时间:
2013-8-31 16:11
<P>public static void main(String[] args) {
try{
if(args==null || new Test() {{Test.main(null);}}.equals(null)){
System.out.print("Hello ");
}else{
System.out.println("world!");
}
}catch (Exception e) {
e.printStackTrace();
}
}</P>
复制代码
试过了,亲
作者:
肖博
时间:
2013-8-31 16:12
if .. else 是判断语句,只能输出一个,建议非要输出直接把输出语句移到 if 里面,或用两个 if ,如果是多个判断,可用 switch 语句,
如果哪位大侠会,俺也学习下
作者:
xiangzi2008006
时间:
2013-8-31 20:37
★忙碌★ 发表于 2013-8-31 16:11
试过了,亲
嗯,你的方法可行,但是我不知道原理
作者:
神之梦
时间:
2013-9-2 00:03
xiangzi2008006 发表于 2013-8-31 20:37
嗯,你的方法可行,但是我不知道原理
那位兄弟用了匿名内部类,不知道那样算不算不符合题意要求。
这是我根据那位兄弟的思路改的if
if(new Test(){{System.out.print("Hello");}}.equals(null))
用的思想是:利用匿名内部类加静态代码块,在静态代码块中加需要的语句,匿名内部类建立之后相当于也创建了对象
对象都具备equals方法,所以.equals(null),这里面你可以放任何对象,因为这个对象代表的是一个内存地址值
所以除非刚好匹配它对应的地址值放里面,否则基本不可能相等,这里为了方便放null即可,这样返回的就是false
作者:
Development...
时间:
2013-9-4 19:46
if(true){}不就行了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2