如鹏网 大学生计算机学习社区

CowNew开源团队

http://www.cownew.com 邮件请联系 about521 at 163.com

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  363 随笔 :: 2 文章 :: 808 评论 :: 0 Trackbacks

源码:
public class Main
{
 public void main(String[] args)
 {
  int a = (int) 3.14;
  a++;
  a=a+1;
  a=a+2;
  System.out.println(3+4);
  List list = new ArrayList();
  list.add(1);
  
  List<String> list2 = new ArrayList<String>();
  list2.add("333");
 }
}

反编译以后:
public class Main
{
  public void main (String[] args)
  {
    int a = 3;
    a++;
    a++;
    a += 2;
    System.out.println (7);
    java.util.List list = new ArrayList ();
    list.add (Integer.valueOf (1));
    java.util.List list2 = new ArrayList ();
    list2.add ("333");
  }
}

posted on 2007-09-30 10:46 CowNew开源团队 阅读(1404) 评论(7)  编辑  收藏

评论

# re: JDT编译器对Java代码的编译优化一瞥 2007-09-30 10:54 BeanSoft
泛型是靠编译器实现的 一点不假 呵呵 内核还是 1.4  回复  更多评论
  

# re: JDT编译器对Java代码的编译优化一瞥 2007-09-30 12:49 sswhsz
这个...谈不上是优化吧

泛型只能编译成那样,JRE没有泛型的概念
3+4是个常量表达式,任何语言的编译器编译以后存放的都是7
只有a=a+1,变成a++,算是优化?  回复  更多评论
  

# re: JDT编译器对Java代码的编译优化一瞥 2007-09-30 13:52 千里冰封
泛型确实是靠编译器来实现的  回复  更多评论
  

# re: JDT编译器对Java代码的编译优化一瞥[未登录] 2007-10-01 09:19 temp
@sswhsz
“3+4是个常量表达式,任何语言的编译器编译以后存放的都是7”,这个是编译原理课程中代码优化的最经典的一个场景;“只有a=a+1,变成a++,算是优化?”,a++运算速度比a=a+1快很多。  回复  更多评论
  

# re: JDT编译器对Java代码的编译优化一瞥 2007-10-01 23:26 白色天堂
看不出任何优化
int a = (int) 3.14;
a++;
a=a+1;
a=a+2
这些完全可以优化为a=7  回复  更多评论
  

# re: JDT编译器对Java代码的编译优化一瞥 2007-10-03 09:14 Unmi
谈不上什么优化,如果编译器聪明一点就应该像楼上一样
int a = (int) 3.14;
a++;
a=a+1;
a=a+2
优化为 int a=7;
编译器常做简单优化比如
编译时计算
像上面,还有 String s="s"+"t"+"ing"; 就会优化成
String s = "string"
指令的优化
int i=2;
int j=i*8;
就会优化为 int j = i<<3   回复  更多评论
  

# re: JDT编译器对Java代码的编译优化一瞥 2007-10-04 15:30 ZelluX
这个优化也太简单了吧  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: