202105小白训练营-day05 异常+String
Posted 长安紫薯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了202105小白训练营-day05 异常+String相关的知识,希望对你有一定的参考价值。
java流程控制
1)顺序结构
2)分支结构:if、if-else、else-if(互斥)、switch-case-break-default
else-if和switch语句可以实现同样的业务,它们可以互换。else-if(a==b)switch(phone,number)
3)循环结构:while、do-while、for。while可以在外部程序中去定义,作为参数传入,业务更加灵活;for循环i值只为自身来使用。
4)死循环 ATM,while(true){}、for(;;)在实际代码中都有应用。
5)配合if语句进行判断,一定条件触发后跳出死循环。
break; 跳出,它会执行while后的代码、
continue;跳过本次方法、后面的代码继续执行
return返回; 不执行while后的代码,它结束当前方法
异常,不属于流程控制,专门门类,程序出现bug错误,可控错误。
错误:
1)致命错误:系统级别错误,蓝屏,磁盘坏了(不是程序员能解决的错误 Error)
2)程序BUG:一般逻辑错误。例如:扣钱 500(这些错误是程序员可控,这些错误叫异常 Exception)
常见的异常有什么呢?
1)10/0 a/b 被零除异常
2)数组下标越界 int[] a = new int[3],访问某个下标 a[30]
涉及到:try-catch,try-catch-finally,try-catch-throw,方法后main,单元测试方法后throws
try 试图
catch 捕获
finally 最终,释放资源
throw 抛出异常
throws 接收异常
package cn.tedu.exception;
import java.util.Scanner;
import org.junit.Test;
//演示异常处理,通过错误信息快速定位故障点
public class TestException {
@Test
public void tryCatch() {
//被零除异常
//try试图,尽量不要
try {
int a = 10/0; //把可能出错的代码放入
System.out.println(a);
}catch(Exception e) { //如果try中的代码出错,java会把错误信息封装到e对象实例中
//捕获异常
e.printStackTrace(); //把错误信息打印控制台上,用户是看不到
}
}
@Test
public void tryCatchFinally(){
//键盘录入,造成非法值,异常;释放复杂对象资源
//Resource leak: 'scan' is never closed 复杂变量是不自动释放空间,GC垃圾回收站
Scanner scan = new Scanner( System.in ); //监控键盘
//从键盘上获取输入转换整数
System.out.println("请输入数字:");
try {
int number = scan.nextInt(); //把键盘输入的内容,回车后,转换成整数
System.out.println(number);
}catch(Exception e) {
e.printStackTrace();
}finally { //死活都执行,程序正常执行,程序出错还执行
scan.close();
System.out.println("执行finally");
}
}
@Test //抛出异常,处理异常,数组越界
public void throwException() throws Exception {
try {
int[] n = {1,2,3};
System.out.println( n[3] ); //越界报错
}catch(Exception e) {
e.printStackTrace();
//对异常进行处理,抛出到调用者(本方法),同时改变错误信息(中文),让调用者方便识别
//Unhandled exception type Exception //没人处理这个异常
throw new Exception("数组越界"); //创建了一个新的异常,错误信息就变成参数的内容
//Unreachable code 不能到达的代码
//e.printStackTrace();
}
}
}
API的字符串String
java只所以强大,它有两个特点,jdk、平台生态链
1)jdk,java开发者工具包,它提供上万个基础类,方法,能方便调用计算机各个硬件处理
System.out 系统的输出设备(显示器);System.in 系统的输入设备(键盘)
开发效率就高,能实现各自业务需求
API application interface 应用程序接口(插排)。java怎么和计算机硬件通讯
2)平台生态链
JavaSE(jdk)、JavaEE(企业级开发、SSM、SpringCloud微服务)、JavaME(嵌入式)
API提供字符串String
package cn.tedu.string;
import org.junit.Test;
/*
* 身号:
* 1)前6位,地址码
* 2)中间8位,4年2月2日,生日日期
* 3)后3位,顺序码,最后一位奇数=男,偶数=女
* 4)校验位1位
*/
public class TestCardNo {
@Test //接收异常,抛出系统
public void cardNo() throws Exception {
String cardNo = "610113198009102113";
//判断长度如果不是18位,抛出异常 throw
if(cardNo.length()==18) {
//继续实现业务
String address = cardNo.substring(0,6);
System.out.println("地址码:" + address );
String birthday = cardNo.substring(6, 14);
String year = birthday.substring(0,4);
String month = birthday.substring(4,6);
String day = birthday.substring(6);
System.out.println("出生年月:"
+ year+"年"+month+"月"+day+"日");
String sn = cardNo.substring(cardNo.length()-2, cardNo.length()-1);
//怎么把字符串变成整数 api
int sno = Integer.parseInt(sn); //把字符串sn转换成sno整数
if(sno %2==1) {
System.out.println("性别:男");
}else {
System.out.println("性别:女");
}
}else {
//抛出异常
throw new Exception("您输入的身号不正确!");
}
}
}
以上是关于202105小白训练营-day05 异常+String的主要内容,如果未能解决你的问题,请参考以下文章