异常处理
思维导图
异常简介系统中存在编译时错误,还有运行时错误,还有逻辑错误。
在Java中被整除时,如果被除数是0,有两种不同的情况。
123456double d1 = 10 / 0.0; // POSITIVE_INFINITY 正无穷大double d2 = 0.0 / 0; // NaN 非数字double d3 = -1f / 0.0;// NEGATIVE_INFINITY 负无穷大int i = 10 / 0; // 编译错误
整数被零除是违法的。
运行时错误,称之为异常。
异常和异常类所有异常类都派生自类Java.lang.Throwable;这个类其中有两个子类,其中java.lang.Error,表示系统错误。一般也称之为错误(Error),java.lang,Exception 表示可能从任何Java方法或运行期偶发事件中抛出的异常。
ExceptionException中的子类
异常类型
说明
java.lang.RuntimeException
那些可能在java虚拟机中正常运行期间抛出的异常的父类
java.io.IOException
发 ...
字符串类
思维导图
创建对象基本创建语句如下
12345char[] data = {'1'};String str1 = new String(str1);String str2 = new String("liudidi");String srt3 = 'liudidi'; //字符常量String str4 = 'liudidi';
在Java中String 类是不可变的,也就是固定。接下来使用的任何一种方法都只是引用其中的对象值而已,然后创建一个新的字符对象,与之前的对象没有任何关系。因为是对所有的字符串而言,包括字符常量字串在Java中都是对象,而不是一个值。
所以,在Java中,虽然str2 与 str3 的值是相等的,但是如果使用 str2 == str3 返回值是一个false.因为这是对象值而已。
但是同样,在Java系统中,为了减少内存空间的使用,默认将所有文字常量都是共享一个String对象,应该放在字符串池中,从而方便使用。
如str3 == str4 返回一个true的值。
对象操作对一个类的认识,关键两点在于除了关注如何创建以外,还应该是如何 ...
Object类
注明一点,这个地方我还是不太熟,纸上得来终觉浅,绝知此事要躬行。以后遇到之后再回来完善。这里只是给自己留个印象
Object 类Object类在直接或者及间接程度上是所有类的父类。所以基本所有类都会继承其中的方法。
里面的方法可以覆盖,覆盖之后自动调用覆盖后的方法。其中有三个比较重要的方法。分别是toString,equals, clone
equals这个方法主要是用于比较两个对象是否相等,更具体地说是这个是否引用的是同一个对象
toString调用此方法,将返回一个代表当前对象本省信息的字符串。默认返回情况是返回类名+ @ + 该对象哈希码的本身信息的无符号16进制表示组成。
如果覆盖,那么就会调用覆盖之后的方法。
clone具体语句
1newObject = oldObject.clone();
clone用来对象进行复制的。上面的语句就是将oldObject的值复制到一个新的内存地址,并将新对象引用值赋值给newObject。
这种方法只是浅复制,深复制则需要将目标对象中所有对象都进行clone复制
抽象和接口
抽象定义抽象类为了继承而定义,主要是为了方便子类继承。所以抽象类不能作为子类。不能使用关键字new创建对象。
抽象方法和抽象类的关系是,如果一个类用abstract定义为抽象类,这个类可以拥有自己的方法,不必要有抽象方法。但是如果一个抽象方法存在,那么这个抽象方法所在的类必定要用abstract定义为抽象类。
静态方法不可声明为抽象,因为可以用抽象类的类名直接进行访问。
同样,final类与继承的定义不符,所以也不能定义为抽象
1234abstract class A{ //抽象类 abstract void f(){ //抽象方法 } }
接口定义接口的目的就是为了方便继承不同类的多个方法或者数据成员。
接口编码定义使用关键字 interface 实现,接口是一个特殊的类,不能有自己的具体方法和变量。
1234interface A{ int NUM = 1; // 公用静态常量,关键字public final static 一般省略。 void fun(); // 公用抽象方法}
与抽象类相似,不可以用 ...
Java数组
Java 数组数组是一个用来进行数组存储的单位。有一维数组,二维数组,你乃至更高维的数组
数组声明12int[] arr; //正确int arr[] //也正确
声明arr为一个整形数组。以上只是声明了一个数组对象的引用值,并不直接创建存储空间。
数组初始化12arr = new int[2];int i = arr.length();
创建了两个int类型的空间,其中arr中有一个数据成员,length 是final 变量。所以这种长度是不可变的.创建存储空间的同时,会将空间里面的变量都赋予初值0.
其他类型的也一样。
声明并且初始化12int[] arr = new int[2];int[] arr = new int[]{1,2,3};
以上两者都可以。声明的同时进行初始化
多维数组多维数组是二维以上,创建方式和声明方式与之前的1维所差不多。
类似如此
1int[][] arr1 = new int[2][3];
这种是矩形的数组。也可以锯齿型的
比如
123int[][] arr2 = new int[2][];arr2[0] = a;arr2 ...