[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基础恶补——控制流、异常、断言相关推荐

  1. Java基础恶补——内存泄露、内存溢出

     Java基础恶补--内存泄露.内存溢出 (2010-09-15 15:56:26) 转载 标签: 杂谈 要点 内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分 ...

  2. Java宣言的时候,Java基础恶补——宣言及访问控制

    Java基础恶补--声明及访问控制 [SCJP Sun Certified Programmer for Java 6 Study Guide (Exam 310-065)]  chapter 1 一 ...

  3. java基础恶补1(基础)(内容来自牛客网Java宝典)

    1.java代码为什么可以实现一次编写,到处运行 参考答案: JVM(java虚拟机)是java跨平台的关键. 在程序运行前,java源代码(.java)需要经过编译器编译成字节码(.class).在 ...

  4. Java基础(四)——异常、断言、日志

    文章目录 异常.断言.日志 1 异常 2 断言 3 日志 异常.断言.日志 在Java语言中,给出了3种处理系统错误的机制 抛出一个异常 使用断言 日志 1 异常 Error:程序无法处理的错误,无法 ...

  5. java基础:8.1 异常

    异常的根类是 java.lang.Throwable 异常处理的优点:它能使方法抛出一个异常给它的调用者,由调用者处理该异常. key word : try. catch . finally. thr ...

  6. 【Java基础】运行时异常和非运行时异常的区别

    非运行异常: 非运行时异常也叫作编译时异常,如果不对这种异常进行捕获则无法编译,Java编译器要求程序员必须对这种异常catch,Java认为这种异常都是可以被修复的异常,所以Java程序要求显式处理 ...

  7. thinkphp5,android混合开发基础恶补篇

    } 2.在route/route.php或者application\route.php添加路由规则,如下: <?php /*----------------------------------- ...

  8. 【基础恶补】JavaScript数组的一些方法,reduce,filter,reverse,map等

    reduce reduce方法会对数组中的每个元素按序执行由你提供的reducer函数,每一次运行reducer会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值. 用法,两个参数cal ...

  9. 【黑马】Java基础从入门到起飞目录合集

    视频链接: Java入门到起飞(上部):BV17F411T7Ao Java入门到起飞(下部):BV1yW4y1Y7Ms 学习时间: 2023/02/01 -- 2023/03/09 断断续续的学习,历 ...

  10. MySQL学习笔记-恶补基础篇

    目录 概述 1.初识数据库 1.1.DataBase 1.2.数据库分类 1.3.DBMS(数据库管理系统) 1.4.命令行操作数据库 2.操作数据库 2.1.操作数据库 2.2.数据库列类型 2.3 ...

最新文章

  1. boot sprint 项目结构_京淘项目03 08.28
  2. DJango-如何快速准备Python虚拟开发环境并快速定制一个项目
  3. python语言入门n-python面试题基础
  4. 打造vim的python编辑器
  5. jquery(ajax)+ashx简单开发框架(原创)
  6. 31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告
  7. 给员工授予svn相关权限
  8. 什么是hasLayout
  9. 【图像融合】基于matlab curvelet变换图像融合(评价指标)【含Matlab源码 781期】
  10. 雅黑PHP探针Light,雅黑php探针
  11. Failed creating java C:\Program Files\Java\jre6\bin\client\jvm.dll
  12. clustalX2使用以及相关的问题
  13. 计算机网络信息安全风险评估准则,计算机网络信息安全风险评估准则及方法研究.pdf...
  14. Ajax传参中文问题
  15. 华为交换机 查ip冲突_怎么查看华为交换机已绑定的ip与mac
  16. autoware.auto规划框架介绍
  17. 【SCIR Lab】事件表示学习简述
  18. Python去水印操作
  19. 北大核心,sci和核心期刊,文章几区,文章下载
  20. 百度ueditor富文本插件插入视频问题汇总【必须收藏】

热门文章

  1. JS验证邮箱格式、信用码、税号和注册号
  2. Fingerprint has already been taken
  3. 华为篇-嵌入式公司待遇盘点-第二期
  4. 嗖嗖移动业务大厅——功能分析
  5. TM32F103C8T6(晶振电路,复位电路,调试下载串口详解)
  6. 华为手机pc模式机型_哪些手机型号外接便携显示器能实现PC电脑模式
  7. 如何快速翻译医学类英文专业文献?
  8. 4.35V锂电充电IC
  9. 全能程序员系列(十二)--开发人员该怎么做PPT?
  10. 关于 Window 的 UWP 应用本地回环限制以及限制解除方案