`
abcxo
  • 浏览: 33456 次
  • 性别: 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

分享到:
评论

相关推荐

    Thinking in Java 自学笔记——第二章 一切皆对象

    ### Thinking in Java 自学笔记——第二章 一切皆对象 #### 重要概念解析 ##### 2.1 用引用操纵对象 在Java中,一切都被视为对象,这意味着无论是字符串、数字还是其他数据类型都可以被视为对象来进行操作。当...

    Thinking in Java读书笔记

    ### Thinking in Java 读书笔记知识点总结 #### 一、万事万物皆对象 1. **对象存储位置** - **寄存器**:程序无法直接控制。 - **栈(Stack)**:存储基本类型数据和对象引用,但对象本身不在此处。 - **堆(Heap)...

    Thinking in Java 自学笔记——第一章 对象导论

    Thinking in Java 自学笔记——第一章 对象导论 本章节总结了面向对象程序设计(Object-oriented Programming, OOP)的基本概念和原则,以帮助读者更好地理解 Java 编程语言。以下是对标题、描述、标签和部分内容的...

    Thinking In java学习笔记

    ### Thinking In Java 学习笔记知识点总结 #### 面向对象编程(OOP)的重要性及其影响 面向对象编程(OOP)在软件开发领域产生了深远的影响。它不仅提高了开发效率和降低了维护成本,还简化了设计流程,使得编程任务...

    中文版Thinking in Java 4th编程思想(笔记)

    《中文版Thinking in Java 4th编程思想》是学习Java编程的重要参考资料,它深入浅出地介绍了面向对象编程的核心概念。下面将详细解读其中的主要知识点。 1. **对象导论** - **万物皆对象**:Java编程的核心是对象...

    Java JDK 6.0 学习笔记.pdf

    **Java JDK 6.0 学习笔记** Java JDK(Java Development Kit)是Java编程语言的核心组件,包含Java运行环境、编译器、类库以及各种工具,是开发者进行Java程序开发的基础。Java JDK 6.0是Oracle公司发布的一个重要...

    恒生电子JAVA笔试试题-Thinking-In-Java-Notes:ThinkinginJava学习笔记

    Java》学习笔记 [TOC] 阅读计划 章节列表 对象导论 一切都是对象 操作符 控制执行流程 初始化与清理 访问权限控制 复用类 多态 接口 内部类 持有对象 通过异常处理错误 字符串 类型信息 泛型 数组 容器深入研究 Java...

    JAVA语言入门资料

    【JAVA语言入门资料】 ...“Java学习.doc”则可能包含了一些学习笔记或实践案例。 总之,这份“JAVA语言入门资料”是全面了解和学习JAVA的好起点,通过阅读和实践,初学者可以逐步掌握JAVA编程,踏上编程之旅。

    常用文档Java4.rar

    "thinking-in-java.pdf"是Bruce Eckel的经典之作《Thinking in Java》,书中详尽介绍了Java语言的基本概念、语法和编程思想,是初学者入门和进阶的必备读物。 3. **Spring框架**: “Spring源码深度解析(第2版)...

    thinking-in-spring:春天学习笔记

    这份"thinking-in-spring"的学习笔记,旨在帮助读者全面理解Spring的核心概念、主要功能以及实际应用技巧。下面,我们将详细探讨Spring的主要模块和关键特性。 1. **依赖注入(Dependency Injection,DI)** ...

    thinkinjava源码-ThinkingInJava:《Java编程思想4th》学习笔记Notesandsourcecodesaboutt

    《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地介绍了Java编程语言的核心概念和技术。本资源包含了这本书第四版的学习笔记和源代码,旨在帮助读者更好地理解和掌握Java编程思想。以下是对这些知识点的...

    Java Object-Oriented Programming.ppt

    2. **基本元素**:第二周深入讨论Java语言的基础,如数据类型、变量、运算符以及流程控制语句(如if,for,while等),这些都是构建任何程序的基石。 3. **类和对象**:第三周,将详细讲解类的声明、构造器、析构...

    LearningProcessForJava:Java的学习过程

    1. **Java语法**:学习Java的语法结构,包括变量、数据类型、运算符、控制流程(如if语句、循环)以及方法定义。 2. **类与对象**:理解面向对象编程的核心概念,如封装、继承、多态,这是Java的基础。 3. **异常...

    thinkinginjava笔记[参照].pdf

    《Thinking in Java》是一本深度解析Java编程语言的权威书籍,笔记主要涵盖了Java的核心概念和技术。以下是基于笔记内容的关键知识点: 1. **类与对象**: - 类是对象的蓝图,它定义了一组相似对象的属性(数据...

    spring-in-thinking:在春天思考

    在"spring-in-thinking-master"这个压缩包中,很可能是包含了一个关于Spring学习的项目或者教程资源。可能包括了代码示例、笔记文档、配置文件等,帮助学习者深入了解和实践Spring框架的各个组件。通过研究这些资源...

    前辈的c++50个建议

    制定合理的学习计划,并按部就班地执行。这样既能确保覆盖所有重要知识点,又能避免遗漏某些细节。 ### 39. 同时学习C和C++ 虽然两种语言有很多相似之处,但也存在不少差异。通过同时学习二者,可以更好地理解它们...

Global site tag (gtag.js) - Google Analytics