`

Java基础恶补——控制流、异常、断言

    博客分类:
  • Java
 
阅读更多

[SCJP Sun Certified Programmer for Java 6 Study Guide (Exam 310-065)]  chapter5

 

一. if switch
1. if 的 statements 只能使用布尔表达式(小心区分 == 和 =)。
2. if 块的 {} 是可选的,但推荐使用(即使只有1行语句)以增强可读性。

3. switch 的 statements 只能使用 enums,  byte, short, int, char.

4. case 常量必须是 literal 或 final 变量 或1个常量表达式(包括 enum),不能用非 final 变量 和1个值的范围。

5. switch case 语句的执行从第1个匹配的 case 块开始,直到遇到 break 则终止执行。case 的作用只是相当于1个入口,而不仅仅只执行这个 case 中的语句。

6. The default keyword should be used in a switch statement if you want to run some code when none of the case values match the conditional value.

7. default 块可以写在 switch 语句的任何位置,当没有 case 匹配时,default 块将执行,如果没有 break,default 块后面的语句都将被执行。

 

二. 循环

1. 基本的循环分3个部分:声明和/或初始化、布尔判断、循环体。

2. If a variable is incremented or evaluated within a basic for loop, it must be declared before the loop, or within the for loop declaration.

3. A variable declared (not just initialized) within the basic for loop declaration cannot be accessed outside the for loop (in other words, code below the for loop won't be able to use the variable).

4. for循环的声明中可以在第1部分初始化多个同类型的变量,变量之间用分号分隔。

5. 增强型的for循环(从Java 6开始)有2个部分:声明、表达式,通常用于数组或集合的循环。

6. With an enhanced for, the expression is the array or collection through which you want to loop.

7. With an enhanced for, the declaration is the block variable, whose type is compatible with the elements of the array or collection, and that variable contains the value of the element for the given iteration.

8. 条件判断表达式不能只有1个数字型变量,if (x) 的这种写法,仅当x是布尔类型时才是合法的。

9. do循环的循环体至少会执行1次,即使if条件不满足也是如此。

 

三. break 和 continue

1. 1个 unlabeled break 的结果是:终止当前循环,从紧跟着这个的循环的语句开始继续执行。

2. 1个 unlabeled continue 的结果是:终止当前循环的这一轮,继续执行这个的循环的下一轮。

3. 如果 break continue 是 labeled, 则与前面的区别是:终止的不是当前的循环,而是被标记的循环。

 

四. 异常处理

1. 异常有2种:checked 和 unchecked。

2. Checked exceptions 包括所有 Exception 的子类,不包括 RuntimeException 的子类。

3. Checked exceptions 主要用于处理或声明规则,任何方法可以抛出 a checked exception ,checked exception要么被抛出、要么被处理。

4. Error 或 RuntimeException 是 unchecked ,所以编译器不能强迫处理或声明它们。

5. If you use an optional finally block, it will always be invoked, regardless of whether an exception in the corresponding try is thrown or not, and regardless of whether a thrown exception is caught or not.

6. finally 块不会被执行的唯一例外是JVM停止了,比如 try 或 catch 中调用了 System.exit().

7. finally 被调用并不意味着它会完成,比如 finally 块中调用了 System.exit() 或 出现异常。

8. Uncaught exceptions propagate back through the call stack, starting from the method where the exception is thrown and ending with either the first method that has a corresponding catch for that exception type or a JVM shutdown (which happens if the exception gets to main(), and main() is "ducking" the exception by declaring it).

9. 可以自定义异常,继承 Exception 或它的子类即可,这个自定义异常将被作为 checked exception。

10. catch 块是有顺序的,子类型的异常必须写在前面,否则这个异常将被父类异常的 catch 块所捕捉,从而失去了其子类特性,编译器在1个异常被捕捉后就不会执行其他 catch 块了。

11. 一些异常是由程序员创建的,一些是由JVM创建的。

 

五. 断言

1. 断言提供了一种在开发和调试过程中测试你的设想的方法。

2. 断言通常用于测试阶段,部署阶段一般会被禁止。

3. Java1.4时,可以把 assert 作为关键字或标识符,只能选择其一,不能同时使用。 要把 assert 作为标识符使用时,编译时加上 -source 1.3 参数。

4. 运行时,断言默认是禁用的。若要启用,则在命令行加上 -ea 或 -enableassertions, 用 -da 或  -disableassertions 则表示禁用.

5. 不带参数 -ea 或 -da 表示对所有类有效,也可以只对某些包、某些类单独设置启用或禁用断言。

6. 不适合使用断言的情况:

1) 验证参数。

2) 断言表达式会影响效果时;断言是表示不希望遇到的情况,不能依赖断言来控制行为。

7. 适合使用断言的情况:验证一个从不会被到达的代码块。可以使用 assert false; 当执行到时会引发1个断言异常。

 

断言启用、禁用命令行举例:

Command-Line Example What It Means
java -ea
java -enableassertions
Enable assertions.
java -da
java -disableassertions
Disable assertions (the default behavior of Java 6).
java -ea:com.foo.Bar Enable assertions in class com.foo.Bar.
java -ea:com.foo... Enable assertions in package com.foo and any of its subpackages.
java -ea -dsa Enable assertions in general, but disable assertions in system classes.
java -ea -da:com.foo... Enable assertions in general, but disable assertions in package
com.foo and any of its subpackages.

 

附:

一篇不错的讲解Java异常的文章

java常见异常及一般原因

 

 

分享到:
评论

相关推荐

    尚硅谷Java基础实战——Bank项目下载地址

    这个项目以银行系统为背景,涵盖了诸多Java基础知识点,包括类与对象、数据类型、控制结构、异常处理、集合框架、IO流等。 1. 类与对象:在Bank项目中,你会遇到各种类,如Bank、Account、Customer等,这些都是模拟...

    Java语言程序设计——基础篇

    根据提供的信息,“Java语言程序设计——基础篇”这本书主要针对初学者介绍了Java编程的基础知识。虽然部分内容并未给出具体章节或细节信息,但基于书名、描述及常见的Java基础教程内容,我们可以推测书中涵盖的主要...

    java初学者适用——java实例大全

    总之,"Java初学者适用——Java实例大全"是一个全面的教程,它不仅包含了Java语言的基础,还深入到高级主题,让初学者通过实践来深化理解,逐步成长为熟练的Java程序员。这份大全的每个实例都是一个学习的机会,通过...

    java课程设计实例——java源代码

    在这个“java课程设计实例——java源代码”压缩包中,我们很可能会找到一系列的Java源码文件,这些文件可能涵盖了各种Java编程的基础到高级概念。 首先,"ch01"这个文件名可能是章节的标识,暗示了这个压缩包可能...

    JAVA_IO操作总结——节点流和处理流.pdf

    ### JAVA IO操作总结——节点流和处理流 #### 一、概述 在Java中,输入/输出(Input/Output,简称IO)操作是一项非常重要的功能,它涉及到如何从不同的源读取数据以及如何向不同的目的地写入数据。Java IO体系主要...

    微信小程序——瀑布流布局(截图+源码).zip

    微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+...

    Java笔试题————精华中的精华

    同时,深入理解Java内存模型、垃圾回收机制、线程并发编程、异常处理、集合框架(List、Set、Map等)以及IO流等核心特性也至关重要。 Oracle是广泛使用的数据库系统,Java开发人员需要熟悉SQL语句的编写,包括...

    Java基础知识——Java入门与加深

    Java的控制流程结构包括条件语句(if, if-else, switch)、循环语句(for, while, do-while)以及跳转语句(break, continue)。这些结构用于决定程序执行的顺序和条件。 异常处理是Java中的一个重要概念。当程序...

    清华大学JAVA教程——比较基础

    【清华大学JAVA教程——比较基础】是一套专门为初学者设计的JAVA编程学习资源,旨在帮助学习者从零开始逐步掌握这门流行的编程语言。这套教程以其深入浅出的方式,深受广大编程爱好者欢迎,尤其适合对JAVA感兴趣但...

    Java 笔试题————Java找工作的宝典

    - **自定义异常**:开发者可以创建自己的异常类,继承自Java的Exception类或其子类。 4. **集合框架** - **容器**:ArrayList、LinkedList、HashSet、HashMap等是Java集合框架中的常见容器,它们各自有不同的特点...

    Java图书管理系统(IO流版)(csdn)————程序.pdf

    本文总结了Java图书管理系统(IO流版)的主要知识点,涵盖了Java基础语法、流程控制、面向对象思想、封装、继承、多态、接口、异常、集合、IO流等多方面的知识。 一、Java基础语法 * 掌握Java的基本语法,包括变量...

    Java实验报告——用户登录系统

    【Java实验报告——用户登录系统】的实验主要围绕Java异常处理机制展开,旨在让学生深入理解和掌握Java中的异常处理。在用户登录系统这个实际场景中,实验者需要运用异常处理来确保程序的健壮性。 首先,实验的核心...

    2015级java期末项目代码————图书馆管理系统.zip

    【标题】"2015级java期末项目代码——图书馆管理系统.zip" 提供的是一个基于Java编程语言实现的图书馆管理系统的源代码。这个项目可能是针对大学计算机专业2015级学生的期末作业或课程设计,旨在让学生通过实际操作...

    范玉顺——工作流管理技术基础

    ### 工作流管理技术基础 ...综上所述,《范玉顺——工作流管理技术基础》不仅覆盖了工作流管理的基础知识和技术实现,还前瞻性地探讨了未来可能的发展趋势,对于想要深入了解这一领域的读者来说具有很高的参考价值。

    Java大学简明教程——实例程序设计

    Java大学简明教程——实例程序设计,这是一份专为初学者和进阶者准备的Java编程学习资源,尤其在实战应用方面具有很高的价值。它包含了一系列精心设计的实例,旨在帮助读者深入理解和掌握Java语言的核心概念以及...

    基于java的局域网通信——飞鸽传书源代码.zip

    本项目“基于Java的局域网通信——飞鸽传书源代码”提供了一种实现这一功能的方法,特别适用于学习和理解网络编程。通过分析这个项目的源代码,我们可以深入学习Java网络编程的基础知识,以及如何利用Java实现文件...

    soot生成java程序的控制流图例子

    在Java编程中,理解控制流图可以帮助我们更好地理解代码的结构和行为,特别是在进行静态分析、优化或者调试时。Soot是一个强大的Java中间表示(Intermediate Representation, IR)框架,它提供了生成控制流图的能力...

    《Java Web开发教程——入门与提高篇(JSP+Servlet)》附赠电子资料——框架基础及实例

    Java Web开发基础 #### 1.1 JSP (Java Server Pages) JSP 是一种基于Java的技术,用于创建动态网页。JSP 页面本质上是包含HTML代码和嵌入式Java代码的文件。这些文件被部署在服务器端,由服务器解释执行,并将...

    Java词法分析器——C语言实现

    Java词法分析器是编程语言编译器或解释器的关键组成部分,它负责将源代码转换成可供解析器处理的标记序列。在这个特定的案例中,我们讨论的是一个使用C语言手动实现的Java词法分析器,而非依赖于像LEX这样的自动化...

Global site tag (gtag.js) - Google Analytics