`
zjx2388
  • 浏览: 1334163 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

第五章 流程控制、异常与断言

阅读更多

1.使用ifswitch语句编写代码

(1)       If语句的唯一合法表达式是布尔表达式。即:只能是可以被解析为布尔值或布尔变量的表达式

(2)       一定要注意布尔赋值(=),它可能被错认为布尔相等性(==)测试:boolean  x = false;if(x = true){}//an assignment, so x will always be true!

(3)       对于只有一个条件语句的if块来说,波形括号是可选的。但要注意缩进

(4)       Switch语句只能计算枚举或byteshortintchar数据类型.Notice:long类型,编译通不过

(5)       Case常量必须是字面值或final变量,或者是常量表达式,包括枚举。不能在case中包含非final变量或一个取值范围

(6)       如果switch语句中的条件与一个case常量相匹配,则将运行switch内在这一匹配的case语句后的所有代码,直至遇到break语句,或者到达switch语句的末尾为止。即:相匹配的case只是这个case块的入口点,但除非有break语句,否则将执行的case代码并不只是这个相匹配的case

(7)       如果想在没有一个case值匹配条件值时执行一些代码,则应该在switch语句内使用default关键字

(8)       Default块可以位于switch块内的任何地方,因此,如果没有case相匹配,则将进入default块。如果default不包含break,则代码将继续执行(直落)switch的末尾,或者直到遇到break语句为止

2.使用循环编写代码

(1)       基本for语句包含3个部分:声明和/或初始化、布尔计算以及迭代表达式

(2)       如果在基本for循环内计算或者递增变量,则它必须在该循环之前或在for循环声明内声明

(3)       在基本for循环声明内声明(不只是初始化)的变量不能在for循环之外访问,即:for循环后面的代码不能使用该变量

(4)       在基本for循环声明的第一部分内能够初始化多个同类型的变量,每个初始化变量必须用逗号分隔

(5)       增强型for循环(Java6)有两个部分:声明(块变量,其类型与数组或集合的元素兼容,并且该变量包含给定迭代的元素的值)和表达式(你希望循环遍历的数组或集合)。它只用于循环遍历数组或集合

(6)       不能将数字或其它不能计算为布尔值的任何内容作为if语句或循环结构的条件。例如:不能将if语句写成if(x),除非x是布尔变量

(7)       即使测试条件不满足,do循环也至少将进入循环体一次

3.使用breakcontinue语句

(1)       无标签的break语句将停止最内层循环构造的当前迭代,并执行该循环之后的下一行代码

(2)       无标签的continue语句将导致:最内层循环构造的当前迭代停止,检查该循环的条件,如果条件满足,则再次运行该循环

(3)       break/continue语句是带标签的,则它将在带标签的循环上引发类似的操作,而不是在最内层循环上

4.处理异常

(1)       异常有两种形式:检验异常和非检验异常

(2)       检验异常包括Exception的所有子类型,但不包括扩展RuntimeException的类

(3)       检验异常遵守处理或声明它的规则,任何可能抛出检验异常的方法(包括调用能够抛出检验异常方法的方法),都必须使用throws关键字声明异常,或用适当的try/catch处理异常

(4)       ErrorRuntimeException的子类型是非检验异常,因此,编译器不强迫要求处理或声明规则。你可以随意声明或处理它们,编译器对此不关心

(5)       若用可选的finally,则始终会调用它,不管在相应的try内是否有异常抛出,也不管抛出的异常是否被捕获

(6)       始终调用finally”这一规则的唯一例外是:如果JVM关闭,则不会调用finally块。如果从trycatch块调用System.exit(),则会发生这种情况

(7)       调用finally并不意味着它必然完成。Finally块内的代码本身能够引发异常或者触发方法System.exit()

(8)       未捕获的异常通过调用栈向后传播,它从抛出该异常的方法开始,到具有该异常类型相应catch的第一个方法为止,或者到JVM关闭为止[如果该异常到达main(),并且main()声明它躲避该异常时,JVM会关闭]

(9)       可创建自己的异常,通常通过扩展Exception或其子类型之一创建。这些异常将被看作检验异常,编译器将对这些异常强制执行处理或声明规则

(10)   所有的catch块都必须按照从最具体到最通用的顺序排列。如果对于IOExceptionException有一个catch子句,则必须把针对IOExceptioncatch放在代码的前面。否则,IOException将被catch(Exception e)捕获,因为catch变元能够捕获这一特定的异常或其任何子类型。编译器将禁止定义从来不能到达的catch子句

(11)   有些异常时有程序员创建的,有些则是由JVM创建的

5.使用断言机制

(1)       断言为在开发和调试期间测试假设提供了一种办法

(2)       断言通常在测试期间启用,在部署期间禁用

(3)       可以将assert用作关键字(Java1.4)或者标识符,但不能同时将它用作这两者。为了编译将assert用作标识符(例如,方法名称)的旧代码,应使用javac的命令行标志-source 1.3

(4)       默认情况下,断言在运行时是禁用的。要启用断言,应使用-ea-enableassertions命令行标志

(5)       可以使用-da-disableassertions标志有选择地禁用断言

(6)       可以使用不带任何变元的标识启用或禁用断言,则一般将启用或禁用断言。可以结合启用和禁用开关为某些类和/或包启用断言,而对其它类和/或包禁用

(7)       使用下面的方法能够以类为基础启用和禁用断言:java -ea -da:MyClass TestClass

(8)       可以以包为基础启用或禁用断言,指定的任何包也包含所有子包

(9)       不要使用断言验证公共方法的变元

(10)   不要使用可能产生副作用的断言表达式。

(11)   不要使用断言来验证某个代码快将永远不会到达。对于永远不应到达的代码,可以使用”assert false”,如果执行这条assert语句,则会立即抛出一个AssertionError.

分享到:
评论

相关推荐

    专题资料(2021-2022年)4 流程控制、异常和断言有关断言的题不用做.doc

    在编程语言中,流程控制是程序执行的基本构造块,它决定了程序如何按顺序或条件执行。本题涉及了两种主要的流程控制结构:`switch`语句和`if`语句,同时也涉及到常量、变量的使用以及逻辑运算符。 1. 题目中的第一...

    scjpPowerPoint课件

    第5章:数组 第6章:类设计 第7章:高积类特性 第8章:异常和断言 第9章:基于文本的应用程序 第10章:建立Java GUI 第11章:GUI事件处理 第12章:基于GUI的应用程序 第13章:多线程 第14章:高级I/O流 第15章:网络...

    JBuider第五章:异常.rar

    第五章的主题聚焦在“异常”处理,这是Java编程中至关重要的一部分,用于处理程序运行时可能出现的问题。 在Java编程中,异常是一种程序执行时的错误情况,它中断了正常的代码流程。Java使用了异常处理机制来处理...

    第三章java流程控制语句.pptx

    【Java流程控制语句详解】 Java编程语言中的流程控制语句是程序设计的核心部分,它们决定了程序中各语句的执行顺序,使得单一的语句能够组合成具有特定功能的逻辑块。本章将深入探讨Java流程控制语句,包括语句概述...

    Java第10章 异常处理含源代码

    本章重点讲解了Java中的异常处理,并提供了相关的源代码示例,以帮助开发者深入理解这一概念。 异常是程序运行过程中出现的非正常情况,如除以零、文件未找到、空指针引用等。Java使用异常处理来中断正常的代码流程...

    Go编程时光,一个零基础入门Golang的教程.zip

    else1.9 流程控制switch-case1.10 流程控制for 循环1.11 流程控制goto无条件跳转1.12 流程控制defer延迟语句1.13 流程控制理解 select 用法1.14异常机制panic和recover1.15 语法规则理解语句块与作用域第二章针对...

    Python基础教程-第9章-异常处理-.ppt

    5. **异常的传播与捕获** - 如果一个异常没有被捕获,它会向上冒泡,直到被更高层次的`try/except`块捕获,或者导致程序终止。 - 可以使用`except Exception as e`捕获所有类型的异常,但这种方法通常不推荐,因为...

    JavaJava%BEE软件工程师就业求职手册.doc

    ##### 第5章 声明和访问控制 - **5.1 数组** - **5.1.1 声明数组变量**:介绍了数组的声明方式以及如何初始化数组。 - **5.1.2 如何获得数组的长度**:解释了如何通过`.length`属性获取数组的大小。 - **5.1.3 ...

    完整版 Java初级教程 Java语言程序设计 第6章 内部类和异常类(共22页).ppt

    - 异常类的使用可以帮助程序员更好地控制程序流程,分离错误处理代码,并提高代码的可维护性。 6. **断言(Assertion)** - 断言是一种调试工具,用于检查代码中的假设是否正确。通过`assert`关键字,可以在代码...

    JAVA南邮大学珍藏资源

    6. **第06章_异常与断言.pptx**:异常处理是Java程序健壮性的重要组成部分,这章会介绍try-catch语句,异常的分类,以及断言的使用,帮助编写出更稳定的程序。 7. **第07章_图形与用户界面基础.pptx**:Java提供了...

    Core Java 8th Vol I

    5. **第5章:数组与集合框架** - 数组的基本操作 - 集合框架(List, Set, Map等) 6. **第6章:异常处理与断言** - 异常处理机制 - 断言的使用方法 7. **第7章:泛型与枚举** - 泛型类和接口 - 枚举类型...

    java第10章java-chapter10.rar

    学习如何编写和执行单元测试,以及断言和测试框架的使用,对于软件开发的持续集成和持续交付流程非常重要。 10. **文件和目录操作**:Java的File类和相关API允许对文件和目录进行操作,如创建、删除、重命名、读写...

    java第三章.pdf

    Java语言的第三章主要讲解了Java程序的基本构造单元——语句。语句是程序中执行特定任务的最小语法单位,通常包含表达式。本章详细介绍了多种类型的语句及其应用场景。 1. 空语句:仅包含一个分号,不执行任何操作...

    Ivor Horton’s Beginning Visual C++ 2010 (英文版)

    - **断言与异常处理**:assert宏的使用、try-catch-finally块的编写。 - **调试工具**:Visual Studio中调试工具的使用。 - **性能分析**:如何使用工具进行性能分析。 ##### 第12章 Windows编程概念 - **消息驱动...

    java程序设计实用教程第三章作业

    在第三章中,你可能会接触到变量、数据类型、运算符、流程控制语句(如if-else、switch、for、while循环)以及方法的定义与调用。这些都是编写任何Java程序的基础,它们帮助我们组织和执行逻辑。 Eclipse作为一款...

    Java2核心技术.part5

    第5章 分布式对象 5.1 客户与服务器的角色 5.2 远程方法调用 5.3 配置远程方法调用 5.4 远程方法中的参数传递 5.5 服务器对象激活 5.6 JavaIDL与CORBA 5.7 远程方法调用与SOAP 第6章 高级Swing 第7章 高级...

    谭浩强c程序设计ppt源码(第五版)

    《谭浩强C程序设计》是C语言学习的经典教材,第五版更是集合了前四版的精华,并在原有的基础上进行了更新和完善。这份压缩包包含了该书配套的PPT讲义和程序源码,为读者提供了丰富的学习资源。下面将详细阐述其中的...

Global site tag (gtag.js) - Google Analytics