Java学习day15--异常、Java中的常用类

一、异常

1、什么是异常 :

程序生病了,非正常可以执行完毕|编译期间就检测出的问题

异常一旦出现: 1)程序无法执行 2)终止程序的继续执行,抛出异常的信息展示给程序猿

2、异常的体系 :

Throwable : 类是Java语言中所有错误和异常的超类。

/ \

Error Exception

Error : 一般是由虚拟机生成并脱出的,不由程序猿控制

Exception : 异常

CheckedException检查时异常|编译时异常 : 发生在程序需编译期间,如果程序猿不处理程序无法运行 ---->通过异常的处理方案(2种)

RuntimeException运行时异常 : 发生在程序运行期间,不处理程序终止执行 --->通过异常的处理方案(2种) | 增强程序健壮性if (推荐)

//使用if增强程序健壮性
String str = null;
        if(str!=null){
            System.out.println(str.length());
        }

异常处理方案 : *****

1、 异常抛出 : throws 可以实现抛出多个异常,跑到上一层,由调用者解决处理

public class Class002_Exception {
    public static void main(String[] args) throws FileNotFoundException {
        test();
        System.out.println("main结束");//不会执行
    }
    public static void test() throws FileNotFoundException {
        InputStream is = new FileInputStream("D://test.txt");
    }
}

2、 异常捕获 :

       try{
           //有可能出现异常的代码段;
       }catch(异常类型 引用){
           //捕获了对应类型异常后执行的代码;
       }catch(异常类型 引用){
           //捕获了对应类型异常后执行的代码;
       }......
        finally{
           //无论是否出现异常都会执行的代码段...
           //一般定义资源的关闭等代码;
        }
  • 如果try中的代码从上到下执行没有遇到异常,catch不会执行

  • 如果try中代码一旦遇到异常,try后面的代码不再执行,从上到下执行catch判断哪一个catch所捕获的异常类型满足,执行对应的catch后的语句体

  • 一个try后面可以接1~n个catch

  • 接收异常类型范围较大的catch放在后面

3、自定义异常:

  • 异常也是类,需要继承自异常体系

  • 如果直接或者间接的继承自RuntimeException,当前异常类为运行时异常

  • 如果直接继承自Exception,或者没有继承RuntimeException,继承了Exception其他子类,这样异常为一个编译时异常

  • throw制造异常

二、常用类

1、Object :

  • Object是Java中所有类的父类,Java中所有的类都会直接或者间接的继承自Object

  • 如果显示的使用extends继承其他类,因为单继承机制,不会直接继承自Object,如果没有显示继承其他类,会默认继承自Object类

  • toString 方法: 返回对象的字符串表现形式

当输出一个对象的引用时,默认输出的是调用toString方法的返回值

Object类中的toString实现 :

        public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCod());
        }

需求 : 想要输出对象的字符串表现形式时|引用时,输出的是对象所有的属性值---->子类中进行重写toString

class Person{
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    //重写toString方法
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
  • equals : 比较两个对象是否相等,指示某个其他对象是否“等于”此对象。

equals与==之间的区别 :

共同点 : 比较两个数据是否相等

异同点 :

== 能够比较任意类型数据

equals 只能比较引用数据类型对象数据

比较规则 : == 基本数据类型比较数据值,引用数据类型对象数据比较地址值

equals :默认继承Object类比较为对象的地址值,默认通过==比较

重写equals->根据所有属性值进行比较是否相等

            public boolean equals(Object obj) {
                return (this == obj);
            }

tips :

  • 定义实现类,都要根据所有属性值进行重写toString与equals

  • 实体类规范 : javabean

1.类是公共的

2.至少 提供一个空构造,根据需求提供带参

3.私有的属性

4.公共的访问方式

5.重写toString与equals

4、String类

String是什么 :

String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例。

字符串:

String : 不可变的字符序列(内容,长度,顺序)

StringBuilder : 可变的字符序列,线程不安全|不同步,效率较高

StringBuffer : 可变的字符序列,线程安全|同步的,效率较低

string类中的构造方法:

  • String(String original) 初始化新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本。

String s2 = new String("abc");
    System.out.println(s2);
  • String(char[] value) 分配新的 String ,使其表示当前包含在字符数组参数中的字符序列。

    char[] chars = {'中','国','a','b','c'};
    String s3 = new String(chars);
    System.out.println(s3);
  • String(char[] value, int offset, int count) 分配一个新的 String ,其中包含字符数组参数的子数组中的字符。

String s4 = new String(chars,2,3);
System.out.println(s4);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值