Java初学者笔记-04、异常与泛型

异常

异常代表程序出现的问题。
Error错误和Exception异常。
RuntimeException运行时异常。
编译时异常,提醒程序员这里的程序很容易出错。

异常的基础处理

  1. 抛出给上层调用者。
  2. 使用try-catch处理。

异常的处理方案

  1. 底层异常抛出,最外层捕获异常记录异常并响应合适信息。
  2. (少见)最外层捕获异常,并尝试重新修复。

异常的作用

  1. 异常是用来定位程序bug的关键信息。
  2. 可以作为方法内部的一种特殊返回值,以便通知上层调用者,方法的执行问题。

自定义异常

分为自定义运行时异常和自定义编译时异常。
自定义编译时异常提醒比较激进,编译时就报错,需要抛出。
自定义运行时异常提醒不激进。
开发中使用哪个异常:如果担心问题很容易出现,就定义成编译时异常;不想干扰别人,就定义成运行时异常。
现在的规范就是禁止大家使用编译时异常,尽量使用运行时异常

泛型

定义类、接口、方法时,同时声明了一个或多个类型变量。如<E>
泛型类、泛型接口、泛型方法,统称为泛型。

泛型的常用类型变量

一般用大写的ETKVE一般是元素类型,T是返回值类型,KV是键值类型。

泛型的作用

泛型提供了在编译阶段约束所能操作的数据类型,并自动进行类型检查。可以避免强制类型转换及其可能出现的异常。

泛型类和泛型接口

修饰符 class 类名<类型变量,类型变量...> {
}
修饰符 interface 接口名<类型变量,类型变量...> {
}

泛型方法

修饰符 <类型变量,类型变量...> 返回值类型 方法名(形参列表){
}

泛型的一些注意事项

  1. 自己通过<E>定义的才是泛型方法。使用E的不叫做泛型方法。
  2. 虽然Xiaomi和BYD是Car的子类,但是ArrayList<xiaomi>ArrayList<BYD>ArrayList<Car>没有半毛钱关系!

泛型的上下限

  1. 通配符是?,可以在使用泛型的时候代表一切类型。
  2. 泛型上限:? extends Car?能接收的必须是Car或者其子类。
  3. 泛型下限:? super Car?能接收的必须是Car或者其父类。

泛型支持的类型以及包装类

泛型不支持基本数据类型,只能支持对象类型(引用数据类型)。因为牵扯到泛型擦除。
泛型擦除:泛型工作在编译阶段,等编译后泛型就没用了,所以泛型在编译后都会被擦除。所有类型都会被恢复成Object类型。如果是Object o = 12; 很明显是不对的。

包装类

使用包装类,把基本数据类型包装成对象的类型。

基本数据类型 对应的包装类
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean

包装类如何包装基本数据类型

  1. 过时方法:public Integer(int value)
  2. 现有方法:public static Integer valueOf(int i)
  3. 推荐方法:自动装箱。

自动装箱,自动拆箱

基本数据类型可以直接转换为包装类型;包装类型可以自动转换为基本数据类型。

Integer it = 100;
int i = it;

包装类的其他功能

  1. 可以把基本类型的数据转换成字符串类型。
public static String toString(double d)
public String toString)

同样的功能可以通过用+拼接空字符串实现。

  1. 可以把字符串类型的数值转换成数值本身对应的真实数据类型(有用)
public static int parseInt(String s)
public static Integer valueOf(String s)
int i = Integer.valueOf("456");// 转换和自动拆箱

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/871158.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 11~12 月 做题记录(待更新)

普通和理所当然是什么呢CF2047D Move Back at a Cost 要使字典序最大,每次都要找到最小的数,把它前面的数都后移. 因为可以钦定后移的顺序使得后移的数按升序排列,所以每个数最多被移位一次. 定序后开两个队列模拟即可. CCPC2024 上海F 羁绊大师 将羁绊相同的英雄相连,因为…

看完这章你也会黑盒edu通杀

负责声明: 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用 信息收集: 在一个阳光明媚的中午一位刚吃完午饭的安服仔…

记一次对某学校挖矿木马的应急响应

本来今天高高兴兴,期待着明天的疯狂星期四,但客户那边突然有一台主机需要应急,那就上去看一眼。 1、事件背景 这次设备上有报警,发现是挖矿木马,并且也捕捉到了外联 IOC,那这问题就不大了,直接上机开搞!恶意 IOC:217.160.36.1592、上机处置 首先对这台主机的外联情况查…

Prometheus +VictoriaMetrics+Granafa安装部署

测试环境 prometheus-2.54.1.linux-amd64.tar.gz 下载地址: https://www.prometheus.io/download/ https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz node_exporter-1.8.2.linux-amd64.tar.gz 下载地址: https://g…

服务器被攻击,为什么硬防不起作用?

当服务器遭受攻击时,即使配备了硬件防护设备(如 100G 硬防),仍然可能出现性能下降或无法访问的情况。以下是详细的解释和解决方案:理解硬件防护的作用:硬件防护设备主要用于抵御大流量攻击(如 DDoS 攻击),通过清洗恶意流量来保护服务器。然而,它并不能完全消除所有类…

【ESP 乐鑫相关】ESP32-S3启动流程

转载自:https://blog.itpub.net/70040860/viewspace-3053923/ ESP32-S3启动流程本文将会介绍ESP32-S3从上电到运行app_main函数中间所经历的步骤(即启动流程)。从宏观上,该启动流程可分为如下3个步骤。①:一级引导程序,它被固化在ESP32-S3内部的ROM中,它会从flash的0x00…

80端口对外网访问受限,如何解除限制?

您好!当您发现配置了80端口的Nginx服务虽然可以在本地正常访问,但从外部网络却无法访问时,这通常是由于防火墙规则、安全组策略或其他网络配置不当所造成的。以下是详细的排查步骤和解决方案,帮助您解除80端口的访问限制:检查服务器防火墙设置: 首先,确认服务器上的防火…

服务器升级后,CPU性能下降,网站响应缓慢,如何优化?

在服务器硬件升级后,如果出现CPU性能下降、网站响应速度变慢的情况,这可能是由多种因素共同作用的结果。以下是一些详细的排查步骤和优化建议,帮助您提升服务器的整体性能:确认硬件配置变更: 首先,确保服务器硬件确实按照预期进行了升级。有时候,尽管表面上看起来硬件规…

网站域名解析异常导致跳转到其他页面怎么办?

问题描述: 网站域名解析后出现异常,访问时跳转到其他无关页面。这是什么原因造成的?如何解决? 解决方案: 当您发现网站域名解析后出现异常,访问时跳转到其他无关页面时,这可能是由多种原因引起的。以下是详细的排查步骤和解决方案:检查程序挂马:首先,需要确认网站是否…

SSL证书配置导致二级域名覆盖主域名访问问题

问题描述: 在为二级域名申请SSL证书后,发现二级域名的访问覆盖了主域名,导致主域名无法正常访问。如何解决这个问题? 解决方案: 当您为二级域名申请SSL证书后,发现二级域名的访问覆盖了主域名,导致主域名无法正常访问时,这通常是因为Web服务器配置不当所致。以下是详细…

threejs 实现镜面反射,只反射指定物体,背景透明

一、背景 最近在做数字孪生项目,使用threejs渲染模型,UI要求地面反射建筑物,也就是模型要有倒影。 二、调研 在官网找到一个镜面反射的例子(https://threejs.org/examples/?q=refle#webgl_mirror) 如图:和UI要的功能类似,但有缺陷 1、反射出了地面上所有的元素,连天空…

3D-NAND 计算(下)

过去几年, 具有存算一体特性的 AI 芯片不断 涌现, 工艺节点涵盖了 14—180 nm, 计算架构包括 了近存计算、存内计算和神经形态计算, 应用场景 覆盖了边缘端到云端设备. 在各种硬件方案中, 基 于 3D-NAND 的神经形态芯片在芯片容量, CMOS 工艺兼容性和成本方面极具优势. 本文首先…