`
abcxo
  • 浏览: 32340 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

thinking in java 学习笔记4 控制执行流程

阅读更多

第四章 控制执行流程

 

老师说得对,第十章以后的那些才是难啃的骨头,对我来说,日子真的过得很快,希望可以在剩下的一年里面得到些东西,不知道自己坚持的是否正确,但是相信没有耕耘就没有回报,坚持每天一章书.

 

 

这一章是应该是每种语言都必须具备的,java也不例外,对于我来说,java和c++这里是差不多的,java取消了那个万恶的goto语句,还有多了一个foreach,下面我们来慢慢分析

 

 

.for迭代

for(int i=0;i<100;i++){} 

这里的变量i是在测下用到它的地方定义的,也就是for循环控制里面,c的作用域就是for控制的表达式范围里面,这样的好处是形成良好的编程风格,让别人也易于理解你的程序,c语言是在这个块的开头定义的

 

 

.逗号操作符

,定义相同类型的变量,例如在for里面可以定义多个i,j,注意在其他选择与迭代语句中是不能这样使用的,只有for可以

 

 

.foreach语法

这个东西这是非常有用,特别是不知道这个数组的长度时,特别是在我写android程序是,使用foreach能够很方便的列出设备名之类的数组,foreach内部实现其实也是for

 

 

.return,break,continue

return有两个用途,一返回什么类型的值,第二使当前方法退出,特别是第二个作用,个人觉得很有用,特别是结合逻辑语句.

break强行退出循环,不执行循环剩余语句,而continue结束这一轮的,继续下一轮。

 

 

 

.goto语句

goto语句的历史源于汇编的程序控制,但是goto会导致程序混乱,所以个人不喜欢,goto是java的保留字,在java中可以使用break和continue达到goto的作用,下面就是讨论

使用方法很简单

hello:

break hello;

continue hello;

也就是说使用break,continue跳到hello:这个标签这里,然后在按顺序执行,那么break+标签的意思是中断迭代,而且不重复进入迭代,而continue+标签,还是会重新进入标签后的迭代

 

 

 

.switch

用法和c++的一样,需要注意的是switch(aa)

aa只能是int或者char,关于这个我个人不是特别喜欢,还有就是case后面一定要加break,否则会继续执行下面语句的,至于default,加不加break没有影响,不过为了编程风格,我个人还是喜欢加,书上说switch可以和enum一起用,这个enum的出现恰恰可以帮我们减轻类型限制的弱点,不过在性能优化里面,还是不建议多用enum.

 

 

这一章的内容不多,因为这本书更多讨论的不是java的一下语法基础,而是说java的机制什么的,良好的设计模式,还是那一句,希望来看贴的同志麻烦留一下言,让我开心一下,谢谢

 

 

 

注:关于jit讨论,即时编译技术

 

关于java的JIT知识(转)

什么是JIT

JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。下面,就对该技术做个简单的讲解。

首先,我们大家都知道,通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。

在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。下面我看看,JIT的工作过程。

 

 

JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码,下图展示了该过程。

什么是JIT

JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。下面,就对该技术做个简单的讲解。

首先,我们大家都知道,通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。

在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。下面我看看,JIT的工作过程。

JIT 编译过程

JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码,下图展示了该过程。


1.JIT的工作原理图 
 

 

 

通过上面的解释,我们了解了JIT的工作原理及过程,同样也发现了个问题,由于JIT对每条字节码都进行编译,造成了编译过程负担过重。为了避免这种情况,当前的JIT只对经常执行的字节码进行编译,如循环等。

需要说明的是,JIT并不总是奏效,不能期望JIT一定能够加速你代码执行的速度,更糟糕的是她有可能降低代码的执行速度。这取决于你的代码结构,当然很多情况下我们还是能够如愿以偿的。

 

 

java 美女4

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics