第四章 控制执行流程
老师说得对,第十章以后的那些才是难啃的骨头,对我来说,日子真的过得很快,希望可以在剩下的一年里面得到些东西,不知道自己坚持的是否正确,但是相信没有耕耘就没有回报,坚持每天一章书.
这一章是应该是每种语言都必须具备的,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讨论,即时编译技术
什么是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
分享到:
相关推荐
这是我经过半年的认真研读《thinking in java》这本书的读书笔记,涉及到从容器一章开始的所有后续章节的内容,只有把握我笔记中的内容我想你就差不多弄懂了<thinking in java>这本书的精华
Thinking in Java 自学笔记——第二章 一切皆对象 个人原创,不喜勿喷。
本人在自学Thinking in Java这本书时所总结归纳的一些重点,希望能帮助大家更好地理解此书
Thinking in Java 4th Edition Annotated Solutions Guide!
这是我看Thinking in java 做的笔记,和大家分享下,如有不明白的的地方可与我私信,或者直接问度娘。
英文版Thinking in java Thinking in Java Fourth Edition Bruce Eckel President, MindView, Inc.
Thinking in Java 自学笔记——第一章 对象导论 个人原创,不喜勿喷。
Thinking in java第三版中文版,第四版英文版以及对应的习题答案! 博文链接:https://easonfans.iteye.com/blog/456901
Thinking in Java 4Edition 练习题答案
Thinking in Java(java编程思想) 第三版+第四版(完整中文版电子书+配套习题答案) ...4、Thinking in Java 4th Edition答案.zip是由xiaotingdu分章整理,该部分下载者可自己调试再次整理发布,以求更好。
Thinking In Java学习之50问 Thinking In Java学习之50问 Thinking In Java学习之50问
Thinking in java 电子书,经典java书籍
thinking in java 4th edition)
java ,thinking in java ,源码,thinking in java 第四版源码。。欢迎使用
王者归来之--Java编程思想读书笔记 Think in java4th
thinking in java thinking in java thinking in java thinking in java thinking in java
Thinking in java 4th 源代码
Thinking in Java 4th Edition 英文文字版,带书签 Annotated Solution Guide 有代码
thinking in java 文档
Thinking in Java 习题答案, 源代码