当前位置: 首页 > news >正文

Java基础加强12-异常、泛型

前言:

这个系列记录了我学习面向语言Java的完整过程,可以当作笔记使用。

每篇文章都包含可运行的代码示例和常见错误分析,尤其适合没有编程经验的读者。学习时建议先准备好安装JDK(Java Development Kit)和IDEA(IntelliJ IDEA集成开发环境),随时尝试修改示例代码。

一,异常

1,认识异常:

Java的异常体系:

2,异常的作用:

作用1:

点击后快速定位出错的代码位置

作用2:

RuntimeExceptio,运行时异常,提醒不强烈

public static void main(String[] args) {// 目标:搞清楚异常的作用。System.out.println("程序开始执行...");System.out.println(div(10, 0));System.out.println("程序结束执行...");
}// 需求:求2个数的除的结果,并返回这个结果。
public static int div(int a, int b) {if (b == 0) {System.out.println("除数不能为0,您的参数有问题!");// 可以返回一个异常给上层调用者,返回的异常还能告知上层底层是执行成功了还是执行失败了!throw new RuntimeException("除数不能为0,您的参数有问题!");}int result = a / b;return result;
}
throw new RuntimeException("除数不能为0,您的参数有问题!");

充当了方法div参数b的值为0时返回值,然后抛出异常

运行结果:

Exception,编译异常,提现强烈,需要进行处理

3,自定义异常:

缘由:

示例:

自定义编译时异常:

/*** 自定义的编译时异常* 1、继承Exception做爸爸。* 2、重写Exception的构造器。* 3、哪里需要用这个异常返回,哪里就throw*/
public class AgeIllegalException extends Exception {public AgeIllegalException(String message) {super(message);} // 有参构造器,调用了父类的有参构造器public AgeIllegalException() {super();} // 无参构造器,调了父类的无参构造器
}

自定义运行时异常:

public class AgellegalRuntimeException extends RuntimeException {public AgellegalRuntimeException(String message) {super(message);}public AgellegalRuntimeException() {super();}
}

show方法运用了自定义编译时异常,show2方法运用了自定义运行时异常.

public class Demo3Exception {public static void main(String[] args) {//目标:认识自定义异常try {show(100);} catch (AgellegalException e) {e.printStackTrace();//输出异常信息}System.out.println("程序继续执行");show2(1000);System.out.println("程序继续执行...");}//需求:我们公司的系统只要收到了年龄小于1岁或者大于200岁的就是一个年龄非法异常public static void show(int age) throws AgellegalException {if(age<1||age>200){//年龄非法,抛出一个异常返回throw new AgellegalException("年龄非法");}else{System.out.println("年龄合法");System.out.println("保存年龄:"+age);}}public static void show2(int age) {if (age < 1 || age > 200) {//年龄非法,抛出一个异常返回throw new AgellegalRuntimeException("年龄非法");} else {System.out.println("年龄合法");System.out.println("保存年龄:" + age);}}
}

注:

1,方法不需要返回值也可以抛出异常返回

2,示例的show2方法,虽然输入的参数不合法,但是如果要处理也可以用try{}catch{}处理。

3,只有对异常进行了处理从能继续执行代码,不然运行停止。

4,异常的处理方案:

方案2:

示例:

二,泛型

1,认识泛型:

2,泛型类:
package com.itheima.demo2genericity;
// 泛型类
public class MyArrayList<E> {//省略……
}

3,泛型接口:

示例:

4,泛型方法:

5,通配符和泛型的上下限:

示例:

import java.util.ArrayList;public class GenericDemo5 {public static void main(String[] args) {//目标:理解通配符和上下限,只是理解即可//需求开发一个极品飞车的游戏//集合小米ArrayList<Xiaomi> xiaomis = new ArrayList<>();xiaomis.add(new Xiaomi());xiaomis.add(new Xiaomi());go(xiaomis);//集合比亚迪ArrayList<BYD> byds = new ArrayList<>();byds.add(new BYD());byds.add(new BYD());go(byds);//集合狗ArrayList<Dog> dogs = new ArrayList<>();dogs.add(new Dog());dogs.add(new Dog());// go(dogs);//public static void go(ArrayList<?> cars){} //所有类型的集合都可以,但是狗和车比不合理,要进行限制}// 注:虽然 Xiaomi 和 BYD 是 Car 的子类,但是 // ArrayList<Xiaomi> ArrayList<BYD>和 ArrayList<Car>是没有半毛钱关系!// go方法的形参类型如果是是:ArrayList<?>(集合),任意类型集合都可以// go方法的形参类型是ArrayList<?extends Car>(集合),只能是Car或者Car的子类,运用了泛型的上限//?是通配符public static void go(ArrayList<?extends  Car> cars){}
}

6,泛型支持的类型:

可以通过包装类来间接实现基本数据类型:

包装类新增的功能:

示例:

//包装类新增的功能:
//1,把基本的类型数据转化为字符串
int j=23;
String s = Integer.toString(j);//"23"
System.out.println( s+1);//"231"Integer j2=j;//自动包装
String s2 = j2.toString();//"23"
System.out.println( s2+1);//"231"//2,把字符串转化为对应的基本数据类型(很有用)
String str = "98";
//int i3 = Integer.parseInt(str);
int i3 = Integer.valueOf( str);
System.out.println(i3+2);//100String str2 = "98.8";
//double d = Double.parseDouble(str2);
double d = Double.valueOf(str2);
System.out.println(d+2);//100.8

http://www.dtcms.com/a/449904.html

相关文章:

  • 用花生棒做网站快吗在线建站网站
  • 建网站中企动力网页设计推荐使用路径
  • 【机器学习】混淆矩阵(confusion matrix)TP TN FP FN
  • 一般集团公司交付类项目质量管理办法
  • 税务师资源合集
  • 浏览器中的隐藏IDE: Console (控制台) 面板
  • 福州网站建设咨询网站制作过程中常见的问题
  • 建设网站需要的步骤芜湖做网站找哪家好
  • 重庆石桥铺网站建设公司wordpress对搜索引擎的可见性
  • wordpress网站做成app6成都网站制作028net
  • mu建站工具商城小程序开发
  • 什么网站建设wordpress打开网页耗内存
  • 2025年--Lc167--H433.最小基因变化(广度优先搜索,需二刷)--Java版
  • 西宁网站建设的企业免费网站开发软件有哪些
  • TensorFlow2 Python深度学习 - TensorFlow2框架入门 - TensorFlow2环境安装
  • JavaScript 二维数组初始化
  • 手机网站建设制作教程wordpress二维码插件付费
  • 静态网站开发百科做58类网站需要多少钱
  • 【Ubuntu】清理空间的几种方法
  • 做网站必须有云虚拟主机公司画册
  • 网安面试题收集(1)
  • 深入理解操作系统:从管理思想到进程本质(7000字深入剖析,通俗易懂)
  • 基于汇编实现led点灯-51单片机-stc89c52rc
  • wordpress站点地址灰显视频教学网站开发需求分析
  • Docker进行达梦数据库部署
  • 怎么做才能发布网站洛克设计平台
  • 建网站一般最低多少钱永久免费域名注册网站
  • 室内设计师上网第一站ctoc的网站有哪些
  • 2025 年 AI + 编程工具实战:用新工具提升 50% 开发效率
  • TCP拥塞控制