Java学习笔记(Javase毕向东版视频)三.3

9、异常处理:Java中的异常处理对象就是将以前的if语句进行的判断进行抽象化,并形成的一套错误处理体系。最顶端是Throwable,接着是Error,Exception,其中Exception又明显分为两类:RunTimeException和其他。

 1 public class Exceptions {
 2     public static int function(int[] arr,int index) throws FuShuIndexException    //自定义错误类声明抛出
 3     {
 4         /*注意Java自带错误处理类不需要throws关键字进行声明抛出就可以使用,
 5          * 是因为这些类继承自RunTimeException,该异常及其子类编译时不被检测
 6          * 但是运行时会报错,并且直接中断程序运行
 7          */
 8         if(arr==null){
 9             throw new NullPointerException("传入数组为空指针!");
10         }
11         if(index>arr.length-1){
12             throw new ArrayIndexOutOfBoundsException("哥们,数组角标越界了!");
13         }
14         if(index<0){
15             throw new FuShuIndexException("不能使用负数角标");
16         }
17         return arr[index];
18     }
19     public static void main(String[] args) throws FuShuIndexException        //调用处抛出
20     {
21         int[] arr={1,2,3,4};
22         /*经过catch的处理就相当于解决异常,后续操作可以继续执行
23          * 并且如果一段代码可以检测多个异常,则需要多个catch语句,但是只能接受第一个错误
24          * catch语句如果接受Exception类型的对象,由于多态特性(子类可以替代父类使用)
25          * 此时,该语句可以接受任意类型的异常,所有如果有该句应该放在最后
26          */
27         try{
28             int a=function(null,2);
29             System.out.println(a);
30         }catch(FuShuIndexException F){
31             System.out.println("负数角标异常!");
32             System.out.println("message:"+F.getMessage());
33             //sop会将内容转换为字符串在输出,对象也不例外,所以会自动执行toString()操作
34             System.out.println("string:"+F.toString());
35             /*getStackTrace()方法可以获取错误的详细信息
36              * printStackTrace()是将错误信息打印到控制台上,这是jvm默认使用的方法
37              */
38             F.printStackTrace();
39         }catch(NullPointerException N){
40             System.out.println("传入数组为空指针!");
41         }catch(Exception E){
42             System.out.println("其他错误");
43         }
44         //finally语句总会执行,所有通常用于关闭/释放资源
45         finally{
46             System.out.println("over");
47         }
48         System.out.println("end");
49     }
50 }
51 /*Java中错误最顶端是Throwable类 ,所有的可用方法都在其中定义了,子类可以直接使用。
52  * 自定义错误类必须继承异常体系(通常是Exception/RuntimeExcetion),以便可以抛出,
53  * 并且按照规范应该以父类作为类名的结尾,提高阅读性
54  * 自定义的错误类如果想要被Java处理,必须使用两种操作:
55  * 1、声明抛出:就是在需要抛出错误的函数参数后用 throws关键字+自定义错误类名 作为声明抛出,注意可以多抛出
56  * ()
57  * !!!注意这里的抛出和Java处理机制中的抛出一样,调用处也需要抛出。
58  * 2、使用try{}catch(异常类型  变量){}finally{}结构处理
59  * 上面两种方式如果自己能处理就用2,不能处理就抛出
60  * !!!注意:错误处理类一般不用进行太多操作,而且超累已经进行了封装,所以可以直接调用就行,
61  * !!!创建自定义的错误处理类是方便将错误进一步分类
62  */
63 class FuShuIndexException extends Exception{
64     FuShuIndexException(){
65
66     }
67     FuShuIndexException(String msg){
68         super(msg);
69     }
70 }

异常

1、

2、

3、

4、

10、Object对象简介:这个对象是所有对象的父类,所包含的方法是所有对象抽象出来的,所以其中方法每个对象都可以使用

 1 public class ObjectSuper {
 2     public static void main(String[] args){
 3         ObjectSuperDemo o1=new ObjectSuperDemo();
 4         ObjectSuperDemo o2=new ObjectSuperDemo();
 5         System.out.println(o1==o2);
 6         //其实equals方法就是将o1==o2操作给封装了
 7         System.out.println(o1.equals(o2));
 8         /*Class对象:java中一切皆对象(类也一样,因为包含相同的内容被抽取为类对象)
 9          * 类/接口在加载后会生成一个class文件(即字节码文件),也会在内存中生成一个相应的字节码文件对象(Class对象)
10          * 注意:一个类在内存中只会存在一份字节码文件对象,new的时候是根据这个对象生成新对象的。
11          * 使用对象的getClass()可以获取这个对象,也叫运行时Class对象
12          */
13         /*toString():下面的println()的参数是字符串类型,所以所有类型都会进行转换
14          * 其中基本类型直接转换,而对象类型是调用toString()实现的。和equals()一样,
15          * Object对象对该方法进行了实现,但是子类可以对其进行覆盖
16          */
17         System.out.println(o1.getClass());
18     }
19 }
20 class ObjectSuperDemo{
21
22 }
23 class ObjectSuperDemo1{
24     ObjectSuperDemo1(int num){
25         setNum(num);
26     }
27     private int num;
28     public int getNum() {
29         return num;
30     }
31     public void setNum(int num) {
32         this.num = num;
33     }
34     /*覆盖Object的equals()的操作是常见操作,因为其是根据地址来进行判断
35      * 而在实际中往往需要判断对象特有内容是否相同,此时不必重建新方法,而是重写equals()
36      * 由于多态和类型转换问题,需要进行健壮性判断
37      * 总会被重写,而Object中仍有equals方法是因为它是所有对象的父类,如果没有实现(是抽象方法)
38      * 以后每个类中,不管是否有其他功能,都有先实现该功能,不方便
39      */
40     public boolean equals(Object obj){
41         if(!(obj instanceof ObjectSuperDemo1)){
42             //return false;
43             throw new ClassCastException("类型不匹配");
44         }
45         ObjectSuperDemo1 o=(ObjectSuperDemo1)obj;
46         return this.num==o.num;
47     }
48     public int hashCode(){
49         return num;
50     }
51 }

Object对象

11、包package:使用编译器(如eclipse等)时,当建立一个类,会提示选择包对类进行管理,在windows系统中是以文件夹形式体现的。如果没有使用编译器手动建立Java文件,其中使用package时应该建立相应的文件夹(可以使用javac.exe中的命令/手动建立),并将class文件移入文件夹中才能运行。

使用包之后的注意点:

1、注意类名前应该加包名,

2、注意路径为包的路径,

3、想要被包外的类访问,必须将类的权限设置为public;并且其中的方法必须是public才能被其他包访问

使用包的一个问题就是写类时需要加上包名,不方便。Java中可以使用import关键字导入这个包.类文件,然后就可以直接使用类名访问。

jar包:是将Java中的包文件进行压缩形成的jar文件,jar文件不需要解压就可以被用来访问其中的包

时间: 2024-11-08 13:17:39

Java学习笔记(Javase毕向东版视频)三.3的相关文章

Java学习笔记(Javase毕向东版视频)三.2

5.继承 1 //Java中所有对象都显式/隐式的继承子Object类 2 class fu{ 3 fu(){ 4 System.out.println("fu..."+getNum()); 5 show(); 6 } 7 private int num=3; 8 public void setNum(int num){ 9 this.num=num; 10 } 11 public int getNum(){ 12 return num; 13 } 14 public void sho

Java学习笔记(Javase毕向东版视频)三

1.面向过程思想,强调的是过程(即动作,函数):面向对象思想,强调的是对象. 2.类与对象关系:类是对事物的描述(属性和行为-方法),对象是类的实例.对象通过new生成.属性也称成员变量;方法也称成员函数. 1 /*Java代码都是在类中的,以下是Java的两种不同类:区别在于是否有main方法. 2 * 有main函数的可以独立运行,且main函数是程序的入口 3 * 如果没有main函数,就像其他面向对象的语言一样,通过new一个实例来运行 4 */ 5 6 public class Obj

Java学习笔记(Javase毕向东版视频)七 常用API对象三

一.泛型:简单说就是对对象类型进行限定的技术 public class GenericDemo { public static void main(String[] args){ /*泛型作为1.5版之后的新技术,分两步使用 * 1.在类名之后用<类型参数>,这里就像函数中的普通参数一样命名即可 * 2.在生成对象和返回该对象参数时需要明确具体的类型,相当于传入实参 * 上面说的是泛型类,除此之外,泛型还可以用于类中方法和接口 */ GenericTest<Person> gt=n

Java学习笔记(Javase毕向东版视频)二.2

5.运算符:变量的意义就在于可以进行运算,运算需要用运算符来表示,分为以下几种 1 class test 2 { 3 public static void main(String[] args) 4 { 5 //赋值运算符 =(赋值) +=,-=,*=,/= 6 int a=1234,b; 7 8 /*算数运算符 +(加) -(减) *(乘) /(除) %(取余) ++(自增) --(自减) +(字符串连接) 9 *1.除法运算结果自动转换为int型. 10 *2.取余结果的正负取决于被除数 1

Java学习笔记(Javase毕向东版视频)十

网络编程: 一.osi和TCP协议对照: 二.通讯三要素: 三.InetAddress对象简述: 1 import java.net.InetAddress; 2 import java.net.UnknownHostException; 3 4 public class IpClassDemo 5 { 6 public static void main(String[] args) throws UnknownHostException{ 7 demo(); 8 } 9 10 public s

Java学习笔记(Javase毕向东版视频)九

GUI:图形用户界面,Java不常用于创建桌面应用,所以用的比较少 一.概述: 二.Frame演示: 三.事件监听机制 1 import java.awt.Button; 2 import java.awt.FlowLayout; 3 import java.awt.Frame; 4 import java.awt.TextField; 5 import java.awt.event.KeyAdapter; 6 import java.awt.event.KeyEvent; 7 import j

Java学习笔记(Javase毕向东版视频)八

IO流:就是input/output输入/输出流. 一.字节流操作文件的便捷类:FileWriter和FileReader 1 import java.io.FileWriter; 2 import java.io.IOException; 3 4 public class FileWriterDemo { 5 private static final String LINE_SEPARATOR=System.getProperty("line.separator"); 6 publi

Java学习笔记(Javase毕向东版视频)四

1.简介.进程和线程:简单的说就是进程负责为程序开辟内存空间,线程负责具体的执行单元(执行路径). 一个进程中可以有多个执行路径,称为多线程.CPU一次只能执行一个进程,但是一个进程内部可以有多个线程在执行. 最早的多进程,多线程效果其实是CPU进行快速切换的效果,由于切换速率很快用户不能发现.现在可以使用多CPU来实现. 参考:http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 2.线程状态图 3.线程的创建:进程

Java学习笔记(Javase毕向东版视频)六 常用API对象二

1.基本数据类型对象包装类:见下图 1 public class Test { 2 public static void main(String[] args){ 3 Demo(); 4 toStringDemo(); 5 jdkDemo(); 6 } 7 8 private static void jdkDemo() { 9 //注意:在1.5之后的版本中可以使用下面的形式 简化书写 ,这是版本升级的一个方面 10 Integer i=3; //自动装箱,jdk是Integer i = Int