包和导入、权限(范围)修饰符、单例设计模式 singleton、异常—Day16

一、包和导入

关键字:package、import
包的概念:包的本质就是文件夹,是对项目中的类进行管理的。在代码中,用package明确当前类所在的包。
注:package必须出现在类的第一行

导入的概念:导入是指在一个类中,使用其他类,需要先将其他包中的类引入到本类中。
注:
1、只有其他包中的类需要导入,同包中的类不需要导入
2、java.lang包(即language语言包中的类)在使用时会自动导入,无需手动导入。
3、可以使用“*”通配符,来表示按需导入

包的命名:一般都是域名倒着写
规范:
1、全小写
2、多个单词间用.分隔

二、权限(范围)修饰符

概念:权限修饰符是用于设置成员对其他类的可见性的
public protected default private
本类 √ √ √ √
同包不同类 √ √ √ ×
其他包的子类 √ √ × ×
其他包的无关类 √ × × ×

怎么用?
1、public:工具类中的静态常量、方法都是public
2、protected:让子类可以任意访问父类成员时
3、[default]:一般包用于进行模块的划分,如果一个成员只与该模块有关,其他包(模块)没有访问它的必要和意义,那么就可以把该成员设置成[default]
4、private:属性的封装、父类的独有方法

三、单例设计模式 singleton

设计模式:套路、模板
单例设计模式:是指当前工程中的某个类的对象在内存中只有一份
使用单例的目的:
1、节省资源
2、全局共享数据的统一管理

代码编写的步骤:
1、构造函数私有化,防止其他类创建本类对象
2、在本类中创建本类对象
3、对外提供获取本类对象的方法

3.1 饿汉式

//私有化构造器
private Tools() {}
//2、创建本类对象
public static Tools tools = new Tools();
//3、对外提供访问本类对象的方法
public static Tools getInstace() {
return tools;
}
public int add(int a ,int b ) {
return a+b;
}
缺点:即使没有调用getInstance方法也进行了对象的创建

3.2 懒汉式

//1、私有化构造器
private Tools2() {}
//2.1、 定义本类对象
public static Tools2 tools2 = null;
//3、对外提供访问本类对象的方法
public static Tools2 getInstance() {
if (t == null) {
new Tools2();
}
return tools2;
}
缺点:不能保证线程安全

3.3 线程安全的懒汉式

//1、私有化构造器
private Tools2() {}
//2.1、 定义本类对象
public static Tools2 tools2 = null;
//3、对外提供访问本类对象的方法
public static Tools2 getInstance() {
synchronized (Tools2.class) {
if (tools2 == null) {
new Tools2();
}
}
return tools2;
}

异常

Throwable
Exception:异常类
Error:错误类
它用于指示合理的应用程序不应该试图捕获的严重问题。
当发生异常时,JVM会根据异常类型自动创建该类对象,并通过该类print方法,将错误信息以标准错误流打印到控制台上。一旦异常发生了,要么使用抛出的方式抛给调用者让调用者处理,要么使用捕获的方式对异常进行捕获,否则该异常会由JVM接受,并结束程序。

关于RuntimeException:
可以选择抛出或者捕获,如果抛出,那么异常就由JVM来接收,当JVM遇到异常时,会进行中断处理。如果捕获,那么异常就会由相应的catch代码段进行处理,那么JVM就不会接收到异常。
也可以选择不处理,但是当发生异常时,就会由JVM来接受并进行终端处理

关于非RuntimeException
必须进行处理,可以选择抛出或者捕获。

常见的异常:
1、ClassNotFoundException
2、IOException
3、ArithmeticException
4、ClassCastException
5、NullPointException
7、ArrayIndexOutOfBoundsException
8、StringIndexOutOfBoundsException

异常的处理

1、try-catch

格式:
try{
需要异常检测的代码(可能发生异常的代码)
}

catch(异常类 变量){
一旦try中的某条语句发生了异常,就回立即创建该异常类的对象
并进入catch代码段进行处理。
}
finally{
一定会执行的代码
}
异常捕获的处理方式:
1、多个异常,一次处理‘
不明确或者无须明确异常的种类,直接可以由Exception进行捕获。
2、多个异常,分别处理
当可以预见try中可能发生何种异常时,由多个对应的Exception的子类进行单独的处理。
好处是可以明确异常种类,有目的的对异常进行处理。这种做法一般最后会使用Exception来处理没有考虑到的异常。
多个异常:必须将范围大的异常放在后面
3、一个异常,多次处理

关于finally:
finally中的代码一定会执行,一般用于资源的是否
再释放资源方法被调用前,一般会资源的空指针进行判断
注:有返回类型的方法,如果finally中有返回值,那么返回的结果一定是finally中的结果,因此不要再finally中返回结果

2、throws

概念:throws表示当方法中发生异常时,本方法不做异常处理,而是将异常抛出给调用者,让调用者处理。调用者可以使用try-catch进行捕获或者继续使用throws抛出。
注:
1、throws用在方法声明(定义)上
2、throws后必须跟上Exception或它的子类
3、如果抛出的是RuntimeException及其子类,俺么调用者可以不进行处理,当发生异常时,程序终止
4、如果抛出的不是RuntimeException及其子类,那么调用者必须对异常进行处理,继续抛出或者捕获。

3、throw

概念:
当方法中发生异常时,在语句中使用throw抛出一个异常对象给调用者
调用者可以使用try-catch进行捕获或继续抛出。

注:
1、throw是方法中的语句
2、throw抛出 的是异常对象
3、可以在抛出异常对象时,传入自定义的异常信息
4、如果抛出的是RuntimeException及其子类,俺么调用者可以不进行处理,当发生异常时,程序终止
5、如果抛出的不是RuntimeException及其子类,那么调用者必须对异常进行处理,继续抛出或者捕获。

异常的方法

1、toString():提示异常类和错误原因
2、getMessage():提示错误原因
3、printStackTrace():提示异常类、错误原因、错误位置

继承关系中的异常

1、父类方法抛出异常,子类重写可以不抛出异常或者抛出与父类相同的异常或者抛出父类异常的子类
2、父类方法没有抛出异常,子类重写就不允许抛出异常,如果的确有异常子类重写只能针对RuntimeException进行捕获和抛出
3、子类重写可以抛出任意的RuntimeException及其子类

自定义异常类

概念:根据程序的特殊要求,将某些特定情况视为异常,自定义这个异常类来对异常信息进行获取和明确。
步骤:
1、创建自定义类继承Exception
2、写出空参构造函数和重载带有String构造函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值