天堂向右,我依然向左

天下之大,虽离家千里,何处不可往!何事不可为!
生活之路,纵坎坷曲折,当奋斗不息,则精彩纷呈!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

     1.  第一个错误:
  今天看一个关于优化代码的帖子,发现有一段有问题,请看贴图:

实际上并非如此,直接看代码:

编译之前的代码:

class Test 
{
    
public static void main(String[] args) 
    {
        
new Test().test2();
        System.out.println(
"Hello World!");
    }

    
public void test2()
 {
      String tmp
="Hello!"+"some one.";
 }
}

 

 

反编译之后的代码:

import java.io.PrintStream;

class Test
{
  
public static void main(String[] paramArrayOfString)
  {
    
new Test().test2();
    System.out.println(
"Hello World!");
  }

  
public void test2()
  {
    String str 
= "Hello!some one.";
  }
}

 

 

很多东西编译的时候就帮你处理了,就好象C#中的get/set一样的语法糖。

 

 2. 第二个错误:

     这个是我前阵子面试时碰到的一个题目,

class A
{
    
public void test() {
        System.out.println(
"A");
    }
}

class B extends A
{
    
public void test() {
        System.out.println(
"B");
    }
    
public static void main(String[] args) 
    {
        A a 
= new B();
        a.test();
    }
}

 

       我当时写的输出结果为“B”, 当时面试官看我的答卷时,特意问我override和overload的区别,我还正纳闷中,然后他指着这个题目说,“你这里做错了,结果应该是'A'"。

       我当时惊呆了,回家又特意试了一下,结果让我常常的舒了一口气。

 

       其他的暂时还没想到,以后这个帖子慢慢补充。

 

posted on 2011-01-14 20:52  老舟  阅读(251)  评论(0编辑  收藏  举报