A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiangzi2008006 中级黑马   /  2013-8-31 14:59  /  1724 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

如何输出hello world?
  1. public static void main(String[] args) {
  2. try{
  3. if(){
  4. System.out.print("Hello ");
  5. }else{
  6. System.out.println("world!");
  7. }
  8. }catch (Exception e) {
  9. e.printStackTrace();
  10. }
  11. }
复制代码
以上程序,在不新建类和方法的情况下,在if()里面加代码,使程序编译运行通过,输出Hello world!
如何实现?

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

5 个回复

倒序浏览

  1. <P>public static void main(String[] args) {
  2. try{
  3. if(args==null || new Test() {{Test.main(null);}}.equals(null)){
  4. System.out.print("Hello ");
  5. }else{
  6. System.out.println("world!");
  7. }
  8. }catch (Exception e) {
  9. e.printStackTrace();
  10. }
  11. }</P>
复制代码
试过了,亲

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
if .. else  是判断语句,只能输出一个,建议非要输出直接把输出语句移到  if  里面,或用两个 if  ,如果是多个判断,可用 switch  语句,
如果哪位大侠会,俺也学习下
回复 使用道具 举报

嗯,你的方法可行,但是我不知道原理
回复 使用道具 举报
xiangzi2008006 发表于 2013-8-31 20:37
嗯,你的方法可行,但是我不知道原理

那位兄弟用了匿名内部类,不知道那样算不算不符合题意要求。
这是我根据那位兄弟的思路改的if
if(new Test(){{System.out.print("Hello");}}.equals(null))

用的思想是:利用匿名内部类加静态代码块,在静态代码块中加需要的语句,匿名内部类建立之后相当于也创建了对象
对象都具备equals方法,所以.equals(null),这里面你可以放任何对象,因为这个对象代表的是一个内存地址值
所以除非刚好匹配它对应的地址值放里面,否则基本不可能相等,这里为了方便放null即可,这样返回的就是false
回复 使用道具 举报
if(true){}不就行了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马