第三篇,Java核心技术复习

第七十二个视频  异常(Exception)什么是异常

什么是异常?

比如程序运行时磁盘空间不足,网络连接中断,被装载的类不存在等等,针对这种情况,在java语言中,引入异常以异常类的形式对这些非正常情况进行封装,通过异常处理机制对程序运行时发生的各种问题进行处理

他先通过下面一个实例来表达异常的作用

代码如下:

5de278eeba9d4901bc15d09d52401c24.png

537944443daf4f9180b0c3e72a5118eb.png 

 如果将y的参数改为0的话 代码将会报错因为0不能作为除数 报错就是异常也就是本章我们主要学习的内容

代码如下

d88c02e65a22449296c6277cb0b42bc7.png

 异常中也是有着一个继承体系

如图Throwable类这个类是所有的错误异常的父类,

92b1f1954a15401d8dc0bffbb4bbfeef.png

 

通过图中可以看出 Throwable有两个直接子类Error和Exception,其中Error代表程序中的错误,Exception代表程序中产生的异常  

两个直接子类的详细讲解

1.Error类为错误类 他表示是java运行时产生的系统内部错误或者资源耗尽的错误,是一个仅靠修改程序本身是不能恢复执行的  只能重新改没有别的办法  如果出现了这个问题只能修改 改对了才能运行

2.Exception类称为异常类  这个异常类跟上面不一样的是上面的是出现问题了不能程序自己处理,只能程序员自己修改,异常类的不同点就是如果出现异常的话 程序会自己处理然后输出异常原因异常类的众多子类有一个特殊的RuntimeException类,该类以及子类用于运行时异常

方法声明功能描述
StringgetMessage()返回此throwable的详细消息字符串
voidprintStackTrace()将此throwable及其追踪输出至标准错误流
void printStackTrace(PrintStream s)将此thrpwable及其追踪输出到指定的输出流

第七十三个视频try...catch和finally

java提供了一种对异常进行处理的方式——异常捕获。异常捕获是通过使用try...catch语句 

其中在try代码块中编写可能发生异常的java语句catch代码块中编写针对异常进行处理的代码。当try代码,当程序中发生异常,系统会将这个异常信息封装成一个异常对象,并将这个对象传递给catch代码块,catch代码快需要一个参数指明它所能够接受异常类型,这个参数必是Exception类或他的子类   通过实例讲解以上内容

代码如下:

386ad94c9a9d4e3eaab8ad562bdbee3e.png

3381058d37f64b71a23f5df2e575036e.png 

 第七十四个视频throws关键字

上一节中由于调用自己写的divide()方法,因此很清楚该方法可能会发生异常,试想一下,如果去调用一个别人写的方法时,是否能知道别人写的方法是否会有异常呢?这很难判断所以针对这种情况 ,java中允许在方法的后面使用throws关键字对外声明该方法有可能发生的异常,这样调用者再调用方法时,就明确的知道该方法有异常,并且必须在程序中对异常进行处理

throws关键字声明抛出异常的语句格式如下

修饰符 返回值类型 方法名 ([参数1,参数2....])throws   ExceptionType1[,ExceptionType2.....]

 throws关键字需要卸载方法声明的后面throws后面需要声明方法中发生异常的类型,通过将这种做法称为方法声明抛出一个异常

092703202aea4245871bb407fc1774e7.png

5301117610ea4284a6b26f01cfea0b05.png 

 第七十五个视频运行时异常和编译时异常

在实际开发中 ,经常会在程序编译时产生一些异常,而这些异常必须要进行处理,这种异常被称为编译时异常,也成为checked异常,另外还有一种异常时在程序运行时产生的,这种异常即使不编写异常处理代码,依然可以通过编译因此被称为运行时异常,也称为unchecked异常,接下来分别对两种异常进行详细的讲解

1.编译时异常

在java中Exception类中RuntimeException类及其子类都是编译时异常,编译时异常的特点时java编译器会对其进行检查如果出现异常就必须对一场进行处理否则程序无法通过编译,处理编译时期的异常有两种方法
1.1使用try...catch语句对异常进行捕获

1.2使用throws关键字声明抛出异常,调用者对其处理

2.运行时异常

RuntimeException类及其子类的都是运行时异常。运行时异常的特点时java编译器不会对其进行检查,也就是说在程序中出现这类异常时,即使没有使用tyr...carch语句捕捉或者使用throws关键字抛出,程序也能通过编译,运行时异常一般是由程序中的逻辑出现错误引起的,在程序运行时无法恢复,比如通过数组的角标访问数组的元素时,如果超过了数组的最大角标,就会发生运行时异常,代码如下所示  

  1. int[]arr =new int[5];

  2. System.out.println(arrp[6]);

上面代码中,由于数组arr的length为5,因为数组是从0开始的所以最大角标是4,当使用arr[6]访问数组中的元素就会发生数组角标越界的异常

第七十六个视频 自定义异常

JDK中定义了大量的异常类,虽然这些异常类可以描述编程出现的大部分异常情况,但是在程序开发终有时可能需要描述程序中特有的异常情况,例如之前的divide()方法不允许被除数为负数。为了解决的这个问题,在java中用户自定义异常。但自定义的异常类必须继承自Exception或其子类
在实际开发中,如果没有特殊的要求,自定义的异常类只需要继承Exception在构造方法中使用super()语句调用Exception的构造方法即可。

既然定义了异常没那么该如何使用呢,这时就需要用到throw关键字throw关键字用于方法中声明抛出异常的实例对象 语法如下

throw Exception 异常对象

第七十七个视频 访问控制

在java中,针对类、成员方法和属性提供了四个 访问级别,分别是 private、default、protected、public 下面通过一张图将这四种控制级别由小到大依次列出

上图中展示了java中的四种放控制级别,具体如下

private(类访问级别):如果类的成员被private访问控制符来修饰,则这成员只能被该类的其他成员,其他类无法直接访问,类的良好封装就是通过private关键字来实现的

default(包访问级别)如果一个类或者类的成员不适用任何访问控制符,则称它为默认访问控制级别,这个类或者类的成员只能被本包中的其他类访问

protected(子类访问级别):如果一个类的成员被protected访问控制修饰符,那么这个成员既能被同一个包下的其他类访问,也能被不同包下该类的子类访问

public(公共访问级别):这是一个最宽松的访问控制级别,如果一个类或者类的成员被public访问控制修饰符,那么这个类或者类的成员被所有的类访问,不管访问类与被访问类是否在同有个包中

访问范围privatedefaultprotectedpublic
同一类中1111
同一包中 111
子类中  11
全局范围   1

表中的勾号用1代替

第七十八个视频 第五章javaAPI

String类StringBuffer类   System类和Runtime类

Math类与 Random类      包装类

学习目标分为三个方面

1.掌握 String类和StringBuffer类的使用

2.熟悉包装类的使用

3.了解System类Runtime类Math类和Random类的使用

5.1String类和StringBuffer类

在应用程序中经常会用到字符串,所谓字符串就是指一连串的字符,他是有多个单个字符连接而成的,如多个应为字母所组成的一个英文单子。字符串中可以包含任意字符,这些字符必须包含在一堆双引号内 ""例如"abc"在java中定义了String和StringBuffer两个类来封装字符串,并提供了一系列操作字符串的方法他们都位于java.lang包中,因此不需要导报就可以直接使用,接下来将针对String类和StringBuffer类进行详细的讲解

在操作String类之前,首先需要对String进行初始化,在java中可以通过以下两种方式初始化对象

1.使用字符串常量直接初始化一个String对象,具体如下

String str1 ="dingguojun"

使用String构造方法初始化字符串对象,String的构造方法如下所示

方法声明功能描述
String()创建一个内容为空的字符串
String(String value)根据指定的字符串内容创建对象

String(char[] value)

根据只当的字符数组对象

下面一个实例讲解初始化操作

第七十九个视频String类的常见操作

String类的实际开发中的应用非常广泛,因此灵活的使用String类是非常中欧给要的接下来介绍String类的常用的一些方法如表所示

方法声明 功能描述
int indexOf(int ch)返回指定字符在此字符串中第一次出现的索引
int lastIndexOf(int ch)返回指定字符在次字符串中最后一次出现的索引

int indexOf(String str)

返回指定子字符串在此字符串中第一次出现的索引

intlastIndexOf(String str)

返回指定子字符串在此字符串中最后一次出现出索引的索引
char charAt(int index)返回字符串中index位置上的字符,其中index的取值范围是:o~(字符串缠绵高度-1)
boolean end With(String suffix)判断此字符串是否以指定的字符串结尾
int length()返回此字符串的长度
boolean equals(Object anObect)将此字符串与只当的字符串比较
boolean isEmpty()判断仅当字符串长度为0时返回的true
boolean statsWith (String prefix)判断此字符串是否以指定的字符串开始
boolean comains(CharSequence cs)判断此字符串中是否包含指定的字符序列
String toLowerCase使用默认语言环境的规划将String中的所有字符都转换为小写
String toUpperCase()使用默认语言环境的规划将String中的所有字符都转换为大写
static StringvalueOf(int i)返回int参数的字符串表达形式
char[]toCjarArray()将此字符串转换为一个字符数组
String replace(Char Squence oldstr CharSequence new str)返回一个新的字符出啊你,它是通过newstr替换此字符串中出现的所有oldstr得到的

String[]split(String regex)

根据参数regex将原来的字符串分割为若干个子字符串
String substring(int beginIndex)返回一个新的字符串,它包含从指定的beginIndex初开始,直到此字符串末尾的所有字符
String syvstring (int beginIndex,int endIndex)返回一个新的字符串,它包含从指定的beginIndex出开始直到索引endIndex-1除的所有字符
String trim()返回一个新的字符串,他去错了源字符串的首尾空格

此表可能有误 ppt上太模糊了 所以可能有点模糊

下面例题讲解获取字符串长度

代码如下:

7c335780315945dc8827d30ef13587d3.png 

d8c56097999e4438ab2b7bb7aae44fdb.png 

例题: 获取字符串中指定位置上的字符

22a8ccba614b4c4b9c7c71e30b22586e.png

5c95589dd3aa4c1ea7722c1ddbe28d41.png 

 还有一些基本使用操作

36dc4d6400144d5387a47eebe37eefc9.png

eca217e53864458391f4ab94f2f06851.png 

 下面例题讲解的是将字符串转换为字符数组

c02e672594c841d58c825d9cd9e29927.png

55af5fba51d847afb47d94cd7dc68341.png 

例题: 将指定的int值转换成字符串类型

2927a7183e5f4950ab39822afd14e2f5.png

1268045b46a14b1191bd7c4856af77a8.png 

 

程序开发中,用户输入数据时经常会有一些错误和空格,这时可以使用String类的replace()和trim()方法进行字符串的替换和去除空格的操作,接下来通过一个实例来学习这两种方法

代码bcc9e8c3c35d41d7b8d04bddef0a8ce8.png

a0ed3d976bd949dc95c7b6fc70d0cac1.png 

 

操作字符串时,经常需要都字符串进行一些判断,如判断字符串是否以指定的字符串开始,结束,是否包含指定的字符串,字符串是否包含指定的字符串,字符串是否为空等等,在String类中针对字符串的判断提供操作提供很多方法

代码c61f7c3b530445b7bad0c13a7abe2d5b.png

5f1a4f99d4574f01aac989c753c8ce35.png  

在String类中针对字符串的截取和分割操作提供了两个方法,其中systring()方法用于截取字符串的一部分,split()方法可以将字符进行分割,通过以下案例讲解使用方法

代码5a44c4a51e4e44778392fd637d5d235f.png

b68e787a086d41f493064337c726037e.png 

 第八十个视频StringBuffer类 

由于字符串是常量,因此一旦创建,其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串,为了便于对字符串进行修改,在JDK中提供哦哦那个了一个StringBuffer类(也称字符串缓冲区)StringBuffer类喝String类最大的区别在于它的内容和长度都是可以改变的StringBuffer类似一个字符容器,当其中添加或删除字符时,并不会产生新的StringBuffer对象

下面通过一个实例来演示这个语句的使用方法

代码

0c288f23a9174aebabf09313f95a0a91.png

fdd8ace5340d4f0084784ac92278824c.png  

第八十一个视频 记录一个字串在整串中出现的次数

代码be79c17f32f948d9b104c52a978fc637.png

23e88fca16fd41f0b065c5cfa1a8956d.png 

 

第八十二个视频 System类

System类对于读者来说并不陌生应为在之前所学的知识中,需要打印结果时,使用的都是System.out.println()语句,这句代码就使用了System类System类定义了一些与系统相关属性的方法,他所提供的属性喝方法都是静态的,想要引用这些属性喝方法,直接使用System类即可

代码b5d48d31b9124d5d99cffbc02e91835c.png 

2.currentTimeMillis()

currentTimeMillis()方法返回一个long类型的值,该值表示当前时间与19701月1日0点0分0秒之间的时间差,单位十毫秒也通常也将改制称作为时间戳

代码、443607af32024b5bae6407fc5bf78ce2.png

4c20350a5a7647728759f84233c59221.png 

 

第八十三个视频 Runt ime类

Runtime类用于表示虚拟机运行时的状态 ,它用于封装JVM虚拟机进程,每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此该类采用单例模式进行设计,对象不可以直接实例化,若向在程序中获得一个Runtime实例,只能通过下列方式

Runtime ren = Runtime。getRuntime();

例题

9319423bb9fa4e01bcb94c0fc49c588f.png

bd411695ce1e4da6a820d6d2ac7597d1.png 

 

第八十四个视频Math类

Math类时数学操作类,提供了一个系列用于数学运算的静态方法,包括绝对值,三角函数。Math类中有两个静态常量PI和E,分别代表着常量Π和e

由于Math类比较简单因此初学者可以查看API文档学习

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值