第三篇java核心技术复习博客

本次的复习博客的内容主要是围绕着第九,十,十一章这三章的一个复习博客 复习内容从bilibili第七十二个视频至八十八个视频

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

什么是异常?

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

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

代码

package 哔哩哔哩;
public class Example1 {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int result =divide(16,2);//调用divide()方法
		System.out.println("x除以y等于:"+result);
	}
	//下面的方法实现了两个整数相除
	public static int divide(int x,int y) {
		int result =x/y;//让整数相除
		return result;
	}
}

代码图

运行结果图 

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

代码如下

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

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

 通过图中可以看出 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{
//程序代码块
}catch(ExceptionType(Exception其他子类)e){
//对ExceptionType的处理
}

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

代码

package 哔哩哔哩;
 
public class Example2 {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//下面代码定义了一个try...catch语句捕捉依次
		try {
		int result = divide(4,0);//调用divide方法
		System.out.println(result);
		}catch (Exception e) {//对异常进行处理
			System.out.println("捕捉的异常为:"+e.getMessage());
		}
		System.out.println("程序继续向下执行");
	}
	//下面的方法实现了两个整数相除
	public static int divide(int x,int y) {
		int result = x/y;//定义变量result记录两个数相处的结果
		return result ;
	}
 
}

代码图

运行结果图 

 

 第七十四个视频throws关键字

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

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

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

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

代码

package 哔哩哔哩;
 
public class Example3 {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int result =divide(4,2);
		System.out.println(result);
	}
	//下面的方法实现了两个整数相除 并使用throws关键字声明抛出
	public static int divide(int x,int y) throws Exception {
		int result =x/y;
		return result;
	}
 
}

 代码图

 运行结果图

 

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

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

1.编译时异常

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

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

2.运行时异常

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

int[]arr =new int[5];
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访问控制修饰符,那么这个类或者类的成员被所有的类访问,不管访问类与被访问类是否在同有个包中

访问范围    private    default    protected    public
同一类中    1    1    1    1
同一包中        1    1    1
子类中            1    1
全局范围                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)

根据只当的字符数组对象
下面一个实例讲解初始化操作

代码
 

package bilibi;
 
public class Example01 {
//String类的初始化操作
//1字符串常量直接赋值
//2String类的构造方法
//String()空参数的构造方法,创建一个String类对象  内容为空
//String(String a)创建一个String类对象 ,指定一个字符串内容
//Strin(char[]chs)创建一个String类对象 ,指定一个字符串作为内容
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str1 ="abc";
		//String()空参数的构造方法,创建一个String类对象  内容为空
		String str2 =new String();
		//String(String a)创建一个String类对象 ,指定一个字符串内容
		String str3 =new String("abcd");
		//Strin(char[]chs)创建一个String类对象 ,指定一个字符串作为内容
		char[] charArray =new char[] {'e','f','c'};
		String str4 =new String (charArray);
		System.out.println(str1);
		System.out.println("a"+str2+"b");
		System.out.println(str3);
		System.out.println(str4);
	}
 
}

代码图

运行结果图

 

 

第七十九个视频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上太模糊了 所以可能有点模糊

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

代码

 运行结果图

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

代码

package bilibi;
 
public class Example02 {
//String的基本操作
	//在程序中,需要对字符串进行一些基本操作,如获得字符串长度,获取指定位置的字符等
	//public int length()获取字符串长度
	//public char  cahrAt(int  index)获取字符串中指定位置上的字符
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "abcdefghijkl";
		System.out.println("获取字符串长度:"+s.length());
		System.out.println("获取字符串中第一个字符:"+s.charAt(0));
		
	}
 
}

 代码图

 运行结果图

还有一些基本使用操作

代码

package bilibi;
 
public class Example02 {
//String的基本操作
	//在程序中,需要对字符串进行一些基本操作,如获得字符串长度,获取指定位置的字符等
	//public int length()获取字符串长度
	//public char  cahrAt(int  index)获取字符串中指定位置上的字符
	//public int indexOf(char ch )获取指定字符串在字符串中第一次出现的位置
	//public int lastIndexOf (char ch)获取指定字符串中最后一次出现的位置
	//public int indexOf(String str) 获取指定子字串中第一次出现的位置
	//public int lastIndexOf(String str)获取指定子串在字符串中最后一次出现的位置
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "abcdabcdkl";
		System.out.println("获取字符串长度:"+s.length());
		System.out.println("获取字符串中第一个字符:"+s.charAt(0));
		System.out.println("获取字符c第一次出现的位置"+s.indexOf('c'));
		System.out.println("获取字符c最后一次出现的位置"+s.lastIndexOf('c'));
		System.out.println("获取子串ab第一次出现的位置"+s.indexOf("ab"));
		System.out.println("获取子串ab最后一次出现的位置"+s.lastIndexOf("ab"));
	}
 
}

 代码图

 运行结果图

 

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

代码

package bilibi;
 
public class Example03 {
	//String类的转换操作
	//程序开发中,经常需要对字符串进行转换操作,例如将字符串转换为数组的形式,将字符串进行大小写的转换
	//public  char[]toChatArray()将此字符串转换成字符数组
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//声明一个字符串
		String s = "abcdefg";
		//将此字符串转换为字符数组
		char [] charArray =s.toCharArray();
		for(int i =0;i<charArray.length;i++) {
			if(i==charArray.length-1) {
				//数组最后一个元素直接打印元素值
				System.out.println(charArray[i]);
			}else {
				//打印逗号
				System.out.print(charArray[i]+",");
			}
		}
	}
 
}

代码图

运行结果图

 

 

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

代码

package bilibi;
 
public class Example03 {
	//String类的转换操作
	//程序开发中,经常需要对字符串进行转换操作,例如将字符串转换为数组的形式,将字符串进行大小写的转换
	//public  char[]toChatArray()将此字符串转换成字符数组
	//public static String valueOf(int n)将指定的int值转换成字符串类型
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//声明一个字符串
		String s = "abcdefg";
		//将此字符串转换为字符数组
		char [] charArray =s.toCharArray();
		for(int i =0;i<charArray.length;i++) {
			if(i==charArray.length-1) {
				//数组最后一个元素直接打印元素值
				System.out.println(charArray[i]);
			}else {
				//打印逗号
				System.out.print(charArray[i]+",");
			}
		}
		
		System.out.println("将int值转换成String类型后的结果"+String.valueOf(12));
	}
 
}

代码图

运行结果图

 

 将字符串全部转换成大写字母

代码

package bilibi;
 
public class Example03 {
	//String类的转换操作
	//程序开发中,经常需要对字符串进行转换操作,例如将字符串转换为数组的形式,将字符串进行大小写的转换
	//public  char[]toChatArray()将此字符串转换成字符数组
	//public static String valueOf(int n)将指定的int值转换成字符串类型
	//public String toUppercase()将此字符串的字符全部换成大写字母,会返回一个新的字符串
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//声明一个字符串
		String s = "abcdefg";
		//将此字符串转换为字符数组
		char [] charArray =s.toCharArray();
		for(int i =0;i<charArray.length;i++) {
			if(i==charArray.length-1) {
				//数组最后一个元素直接打印元素值
				System.out.println(charArray[i]);
			}else {
				//打印逗号
				System.out.print(charArray[i]+",");
			}
		}
		
		System.out.println("将int值转换成String类型后的结果"+String.valueOf(12));
		System.out.println("将字符串转换成大写字母后的结果"+s.toUpperCase());
	}
 
}

 代码图

运行结果图

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值