(1)数组

因为数组在定义的时候会有一个默认的初始化值,依据数组类型而定(int类型的数据初始化为0,对象类型初始化为null,。

private int a[5]; 错误的命名方式。

(2)

java语言中,数组提供了length属性来获取数组的长度。

length()方法是针对字符串而言的。

size()方法是针对泛型而言的。

(3)

try...finally结构中finally中的代码先于try中的return代码执行。当finally中也含有return的时候,那么finally中的return将覆盖try or catch 中的return. 因为return语句意味着函数(方法)的结束。

关于当try中返回变量在finally中被修改时,当此变量是基本类型时,这是改变不会影响最后的返回结果,当变量是引用类型的时候,这时候就会改变此结果。

原因:当中执行finally中的语句的时候,返回的变量值已经被存储到了栈中,此时在finally中修改后,try中return的所取得值依旧是之前存储在栈中的值,当变量类型是引用类型的时候,这时候就会改变栈中元素的值,毕竟引用变量指向了内存。

(4)在java语句中finally语句不一定一定会被执行。<1>在执行try之前出现异常,代码不在向后继续执行。<2>在执行try语句的时候强制性退出,System.exit(0);

 

(5)java语言中把异常当做一种对象来处理。并定义了一个基类 java.lang.Throwable,作为所有异常的父类。(异常分为错误和异常两大类)

(6)异常分为检查时异常和运行时异常

检查时异常时程序中最经常碰到的异常,所有继承自Exception的异常非运行时异常都是检查异常。eg:IO异常,SQL异常。这种异常发生在编译阶段

使用:异常发成并不会导致程序出错,进行处理后尅继续进行后续的操作,例如,数据库连接失败后,可以重新连接进行后续的操作。

程序依赖不可靠外部条件。例如系统IO

(7)运行时异常不同于检查时异常,编译器并没有对其进行捕获和处理。如果不对这种异常进行处理当出现这种异常的时候,JVM回来处理。常见的运行时异常有:

NullPointException(空指针),

ClassCastException(类型转换异常),

ArrayIndexOutOfBoundsException(数组越界异常)

ArrayStoreException(数组存储异常)

BufferOverflowException(缓冲区溢出异常)

ArithmeticException(算术异常0)

当系统出现运行时异常的时候,系统会把异常一直向上抛出。直到遇到处理代码为止,若没有处理块则抛到最上层。所以如果不对运行时异常进行处理的话,后果非常严重,一旦发生,要么线程终止,要么主线程终止。

(8)异常处理需要注意的问题

异常处理使用到了多肽的概念,在异常处理中如果先捕获了基类,再捕获子类,那么捕获子类的代码块中的代码将永远不会执行。