【Java回顾】Day2 正则表达式----异常处理
参考资料:菜鸟教程
https://www.runoob.com/java/java-exceptions.html
正则表达式 有一部分没看完
- 介绍
- 字符串的模式
- 搜索、编辑或处理文本
- java.util.regex包,包含了pattern和mathcer类,用于处理正则表达式的匹配操作。
- 捕获组
- 把多个字符当一个单独单元进行处理,堆括号内的字符分组来创建。从左到有看左括号来编号分组
- (A(B©))
- ((A)(B)©)
- (A)
- (B©)
- ©
-
import java.util.regex.Matcher;//查找,匹配,替换 import java.util.regex.Pattern;//编译正则表达式 public class RegexMatches {public static void main( String[] args ){// 按指定模式在字符串查找String line = "This order was placed for QT3000! OK?";String pattern = "(\\D*)(\\d+)(.*)";//(\D*)匹配0或多个非数字字符;(\d+)匹配1或多个数字字符;(.*)匹配0或多个任意字符// 创建 Pattern 对象,编译正则表达式Pattern r = Pattern.compile(pattern);// 现在创建 matcher 对象Matcher m = r.matcher(line);//if (m.find( )) {//查找下一个匹配项System.out.println("Found value: " + m.group(0) );//整个捕获System.out.println("Found value: " + m.group(1) );System.out.println("Found value: " + m.group(2) );System.out.println("Found value: " + m.group(3) );} else {System.out.println("NO MATCH");}} } - JAVA转义语法
- Java 的正则表达式中,两个 \ 代表其他语言中的一个 ****, \\d
- Matcher类的方法
Java 方法
-
System.out.println()
- println() 方法
- System 系统类
- out 标准输出对象
-
命名:以小写字母为首,后面的单词则用大写字母开头写,不使用连接符
-
组成
修饰符 返回值类型 方法名(参数类型 参数名){...方法体...return 返回值; } -
在一些其它语言中方法指过程和函数。一个返回非void类型返回值的方法称为函数;一个返回void类型返回值的方法叫做过程。
-
方法签名:返回类型、方法名和参数列表。方法重载,例如int方法换为double方法
-
变量作用域
- 方法内的参数是一个局部变量
-
构造方法(Constructor)
- 创建类的对象的特殊方法,当使用new,构造方法会自动调用。
- 方法名与类名相同
- 没有返回类型,也没有void
- 可以重载
- 用于在在创建对象时初始化对象的状态
-
可变参数,可以指定不定量的参数,必须是最后一个参数。
- typeName… parameterName
Java构造方法
-
作用
- 初始化对象的属性
- 保证对象初始化的完整性
-
特点
- 与类名相同
- 没有返回类型 也没有void
- 自动调用
- 不能直接调用 new
- 支持重载
- 默认构造方法
- this关键字使用
- 不能被继承,但可以被调用
- 对象初始化保障
-
构造方法的类型
- 无参构造方法
- 默认 public Person(){}
- 有参构造方法
- 在创建对象时为属性赋值
-
public class Person {String name;int age;public Person(String name, int age) {this.name = name;this.age = age;} } - Person p = new Person(“Alice”, 25);
- 无参构造方法
-
构造方法的重载
- 在同一个类中定义多个构造方法,只要参数列表不同即可
-
构造方法中的this关键字
-
引用当前对象的属性和方法
-
调用另一个构造方法
- 使用 this() 调用当前类的其他构造方法
public Person(String name) {
this(name, 0); // 调用另一个双参数的构造方法
}public Person(String name, int age) {
this.name = name;
this.age = age;
}
-
Java流(Stream)、文件(File)、IO
- 允许程序与外部数据(文件、网络、系统输入等)进行交互
- 核心包:java.io 处理数据流、文件读写、序列化以及数据格式化的工具
- 输入流从一个源读取数据,输出流标识向一个目标写数据
步骤
- 读取控制台输入
-
输入由System.in完成
-
获得一个绑定到控制台的字符流
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));- System.in 输入流
- InputStreamReader(System.in) 将字节流转换为字符流
- BufferedReader 缓冲字符输入流,它通过缓冲区提高了读取效率
-
- 从控制台读取多字符输入
- int read( ) throws IOException
- 每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。该方法抛出 IOException
- 从控制台读取字符串
- BufferedReader 的 readLine() 方法
- String readLine( ) throws IOException
- 控制台输出
- print()
- println()
- 由类PrintStream定义,其继承了OutputStream类,并且实现了方法write()。写操作。System.out是该类对象的一个引用。
- void write(int byteval) //将 byteval 的低八位字节写到流中
- 读写文件

- 字节流(处理二进制数据,文本、图像、视频等)
- 字符流(处理文本数据)
- 辅助类(其他重要类)辅助类提供对文件、目录以及随机文件访问的支持。
两个重要流
- FileInputStream
- 从文件读取数据
- InputStream f=new FileInputStream(“C:/java/hello”)
- File f = new File(“C:/java/hello”);
InputStream in = new FileInputStream(f);
- FileOutputStream
- 创建一个文件并向文件中写数据,如果不存在就创建该文件
- OutputStream f=new FileOutputStream(“C:/java/hello”)
- File f = new File(“C:/java/hello”);
OutputStream fOut = new FileOutputStream(f);
Java的目录
-
File类创建文件夹
- mkdir() 创建文件夹,成功则返回true,失败则返回false
- mkdirs() 创建文件夹和它的所有父文件夹
-
读取目录
- if(f1.isDirectory()) 如果是目录,返回True
- 提取它包含的文件和文件夹的列表
- String s[] = f1.list();
-
删除目录或文件
- java.io.File.delete()
Java Scanner 类
- java.util.Scanner 获取用户的输入
- Scanner s=new Scanner(System.in);
- 获取输入的字符串:next() nextLine()
-
next() 和nextLine()区别
- next() 读到有效字符后才可以结束输入;不能得到带有空格的字符串;对输入有效字符之前的空白,next()自动去掉空格;输入有效后将后面的空格作为分隔符或者结束符
- nextLine() 以Enter为结束符,返回的是enter之前的所有字符;可以获得空白
-
- 判断是否还有输入的数据,hasNext和hasNextLine
Java异常处理
- 异常是程序中的一些错误,但并不是所有的错误都是异常。
- 异常发生的原因|用户、程序、物理错误
- 用户输入了非法数据。
- 要打开的文件不存在。
- 网络通信时连接中断,或者JVM内存溢出。
三种异常
- 检查性异常,用户错误或问题引起的异常,异常在编译时强制要求程序员处理。
-
try{ //可能会抛出异常的代码 }catch(IOException e){ //处理异常的代码 }
-
-
public void readFile() throws IOException{ //可能会抛出IOException } - 运行时异常 在编译时不强制要求处理,由程序中的错误引起的,例如NullPointerExcepton、ArrayIndexOut、OfBoundsException等
-
try{ //可能会抛出异常的代码 }catch(NullPointerException e){ //处理异常的代码 }
-
- 错误:错误不是异常,而是脱离程序员控制的问题,错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,他们在编译也检查不到的。
关键字和类【支持异常处理】
- try 包裹可能会抛出异常的代码块。
- catch 捕获异常并处理异常的代码块。
- finally 包含无论是否发生异常都需要执行的代码块
- throw 手动抛出异常
- throws 在方法声明中指定方法可能抛出的异常。
- Exception 所以异常类的父类,提供一些方法来获取异常信息,如getMessage() printStackTrace()等。
Exception类的层次

- 从java.lang.Exception类继承的子类。
- Error 用来指示运行时环境发生的错误。JAVA程序中,通常不捕获错误。
JAVA内置异常类
略
JAVA异常方法
略,有需要就查表
捕获异常
- try和catch关键字可以捕获异常,称为保护代码
-
try{ //程序代码 }catch(ExceptionName e1) { //catch块 }
多重捕获块 1个try多个catch
- 一个try代码块后面跟随多个catch代码块的情况,匹配不同的错误类型
-
try{// 程序代码 }catch(异常类型1 异常的变量名1){// 程序代码 }catch(异常类型2 异常的变量名2){// 程序代码 }catch(异常类型3 异常的变量名3){// 程序代码 }
throws/throw关键字
- throw 在代码中抛出异常
- throws 在方法声明中指定该方法可能抛出的异常。当方法内部抛出指定类型的异常时,会处理异常。
- 一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。
finally关键字
- 无论是否发生异常,finally代码块中的代码总会被执行。在finally代码块中,可以运行清理类型等收尾善后性质的语句。
-
try{// 程序代码 }catch(异常类型1 异常的变量名1){// 程序代码 }catch(异常类型2 异常的变量名2){// 程序代码 }finally{// 程序代码 } - catch不能独立于try存在,try也不能独立使用。
try-with-resources
- 自动管理资源,确保资源在使用后能够及时关闭,避免资源泄露。
- 自动关闭在try块中声明的资源,无需显式地在finally块中关闭。
-
try (resource declaration) {// 使用的资源 } catch (ExceptionType e1) {// 异常块 }
声明自定义异常
- 必须是Throwable的子类
- 检查性异常类,Exception类
- 运行时异常类,RuntimeException类
- class MyException extends Exception{
}
通用异常
- JVM(Java虚拟机)异常:JVM抛出的异常或错误
- 程序级异常:由程序或API程序抛出的异常
相关文章:
【Java回顾】Day2 正则表达式----异常处理
参考资料:菜鸟教程 https://www.runoob.com/java/java-exceptions.html 正则表达式 有一部分没看完 介绍 字符串的模式搜索、编辑或处理文本java.util.regex包,包含了pattern和mathcer类,用于处理正则表达式的匹配操作。 捕获组 把多个字符…...
【SpringBoot】当 @PathVariable 遇到 /,如何处理
1. 问题复现 在解析一个 URL 时,我们经常会使用 PathVariable 这个注解。例如我们会经常见到如下风格的代码: RestController Slf4j public class HelloWorldController {RequestMapping(path "/hi1/{name}", method RequestMethod.GET)publ…...
【FlutterDart】页面切换 PageView PageController(9 /100)
上效果: 有些不能理解官方例子里的动画为什么没有效果,有可能是我写法不对 后续如果有动画效果修复了,再更新这篇,没有动画效果,总觉得感受的丝滑效果差了很多 上代码: import package:flutter/material.…...
Backend - C# 的日志 NLog日志
目录 一、注入依赖和使用 logger 二、配置记录文件 1.安装插件 NLog 2.创建 nlog.config 配置文件 3. Programs配置日志信息 4. 设置 appsettings.json 的 LogLevel 5. 日志设定文件和日志级别的优先级 (1)常见的日志级别优先级 (2&…...
Flask是什么?深入解析 Flask 的设计与应用实践
文章目录 一、引言:从微框架到生态系统二、Flask 的核心设计理念三、Flask 的关键组件解析3.1 路由系统3.2 请求与响应对象3.3 模板引擎 Jinja23.4 扩展系统 四、Flask 的并发与性能优化4.1 默认的单线程模型4.2 提升并发性能的方法4.3 性能优化技巧 五、在企业级场…...
malloc函数和calloc函数的区别是什么?
malloc函数和calloc函数在动态内存管理中都起着分配内存空间的作用,但它们存在以下区别: 参数方面 - malloc函数:它只有一个参数,该参数表示要分配的字节数。例如, int *ptr (int *)malloc(10 * sizeof(int)); &#…...
Ansys Maxwell:3PH 变压器电感计算
各位变形金刚粉丝们,大家好: 在本博客中,我讨论了如何使用 Ansys Maxwell 计算三相变压器中的自感、互感和漏感。有多种方法和表达式可用于计算这些电感。 基本电感定义 电感的单位是亨利(H),其基本单位…...
【Go】Go文件操作详解
1. 前言 相信如果看过之前文章的朋友们一定知道我想讲什么了?灵魂三问:文件是什么?为什么需要文件?文件怎么操作?前面章节我们已经能够编写各种各样的功能代码了,但是一个很现实的问题就是我们没有任何 持…...
[react+ts] useRef获取自定义组件dom或方法声明
想用useRef获取自定义组件? 如果获取dom,直接写 const sonRef useRef<HTMLDivElement>(null); 然后子组件用forwardRef包一层,注意是HTMLDivElement,别写错, 写HTMLElement不行 const Son forwardRef<HTMLDivElement, IProps>((props, ref) > {}) 切记这…...
AI 将在今年获得“永久记忆”,2028美国会耗尽能源储备
AI的“永久记忆”时代即将来临 谷歌前CEO施密特揭示了AI技术的前景,他相信即将在2025年迎来一场伟大的变化。AI将实现“永久记忆”,改变我们与科技的互动过程。施密特将现有的AI上下文窗口比作人类的短期记忆,难以持久保存信息。他的设想是…...
【视频笔记】基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil【持续更新】
视频链接: 基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil 从头编写一个视觉语言模型:PloyGamma,是谷歌的一个模型 1:原始图像 2:视觉编码器(本文是viT),通过对比学习进行训练。这个对比学习最开始是CLIP,后来被谷歌改成了SigLIP 3:线性投影层 4:如何将图…...
解决 C++ 中头文件相互引用和解耦问题
在 C 中,当多个 .h 文件相互引用时,可能会导致 循环依赖 或 头文件冗余 问题,进而引发编译时间延迟、代码复杂度增加等问题。为了有效地解耦和组织代码,可以采用以下几种策略和思想: 1. 前向声明(Forward …...
河马剧场(短剧)APP的邀请码怎么填写
上篇给大家说到河马剧场免费看短剧还能领5.2元3天vip会员,本文就说一下河马剧场河马短剧APP的邀请码怎么填写。 河马短剧APP填写邀请码分三步: 1、安装登陆河马短剧APP 2、点击底部导航栏中间的“福利” 3、往下划会看到“填写邀请码领3天vip” 4、…...
01:C语言的本质
C语言的本质 1、ARM架构与汇编2、局部变量初始化与空间分配2.1、局部变量的初始化2.1、局部变量数组初始化 3、全局变量/静态变量初始化化与空间分配4、堆空间 1、ARM架构与汇编 ARM简要架构如下:CPU,ARM(能读能写),Flash(能读&a…...
第1章:数据库基础
第1章:数据库基础 1.1 数据库概述 1.1.1 什么是数据库 数据库的定义数据库的发展历程数据库的重要性 1.1.2 关系型数据库简介 关系型数据库模型常见的关系型数据库关系型数据库的特点 1.1.3 MySQL在企业中的应用 Web应用电商平台金融系统大数据存储 1.2 数据…...
C++教程 | string类的定义和初始化方法
在C中,string是标准库中用于处理字符串的类,定义在 头文件中,它提供了方便、灵活的字符串操作功能。以下是一些常见的定义和初始化string对象的方法: 1. 默认初始化 可以直接定义一个空的string对象,语法如下&#x…...
React中的合成事件
合成事件与原生事件 区别: 1. 命名不一样,原生用纯小写方式,react用小驼峰的方式 原生:onclick React的:onClick 2. 事件处理函数的写法不一样 原生的是传入一个字符串,react写法传入一个回调函数 3.…...
[SMARTFORMS] 创建FORM
输入事务码SMARTFORMS进入表单开发界面,选中表单,自定义表单名称ZFS_DEMO_2025 点击"创建"按钮,跳转至"SAP表格设计器"页面 在"表格属性"填写表单描述、指定页格式和样式 在"表格接口"可以填写SMART…...
成都和力九垠科技有限公司九垠赢系统Common存在任意文件上传漏洞
免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...
基于Python的考研学习系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...
