关于编程中所遇到的问题的一些理解

1.比较下面两段程序

(1)第一段程序  

Checkbox check=(Checkbox)(e.getSource());

  if(e.getLabel()=="普通")

   show_style.setFont(new Font("TimesRoman",Font.PLAIN,size));

 else if(e.getLabel()=="黑体")

  show_style.setFont(new Font("TimesRoman",Font.BOLD,size));

else

show_style.setFont(new Font("TimesRoman",Font.ITALIC,size));

(2)第二段程序

Checkbox check=(Checkbox)(e.getSource());

  if(e.getLabel()=="普通")

   show_style.setFont(new Font("TimesRoman",Font.PLAIN,size));

  if(e.getLabel()=="黑体")

  show_style.setFont(new Font("TimesRoman",Font.BOLD,size));

  if(e.getLabel()=="斜体")

show_style.setFont(new Font("TimesRoman",Font.ITALIC,size));

以上两段程序实现的功能相同,但是效率却有差异。为了方便,简化一下,根据e.getLabel()的返回值,与各段程序if比较的次数,设为∑i。

先比较第一段程序,如果e.getLabel()=="普通",需比较1次;如果e.getLabel()=="黑体",需比较2次;如果是e.getLabel()=="斜体",需比较3次。从而得到∑i=1+2+3=6。

 再比较第二段程序,如果e.getLabel()=="普通",虽然第一次就匹配了,但是后面的if也要相比较,所以需比较3次;如果e.getLabel()=="黑体",需比较3次;如果是e.getLabel()=="斜体",需比较3次。此时∑i=3+3+3=9次。

 很显然,第一段程序的效率要高。

posted @ 2013-04-01 16:31  williamcai  阅读(188)  评论(0编辑  收藏  举报