【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项目源码、微信小程序源码 精品专栏:…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
接口 RESTful 中的超媒体:REST 架构的灵魂驱动
在 RESTful 架构中,** 超媒体(Hypermedia)** 是一个核心概念,它体现了 REST 的 “表述性状态转移(Representational State Transfer)” 的本质,也是区分 “真 RESTful API” 与 “伪 RESTful AP…...

河北对口计算机高考MySQL笔记(完结版)(2026高考)持续更新~~~~
MySQL 基础概念 数据(Data):文本,数字,图片,视频,音频等多种表现形式,能够被计算机存储和处理。 **数据库(Data Base—简称DB):**存储数据的仓库…...
Python打卡训练营学习记录Day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
win11部署suna
参考链接 项目链接 沙盒链接 数据库链接 本文介绍 本文只为项目的辅助,手把手太麻烦 执行步骤 1.下载代码 git clone https://github.com/kortix-ai/suna.git cd suna2.配置环境(在Anaconda Prompt上执行) python setup.py3.运行代码 …...
matlab实现DBR激光器计算
DBR激光器计算程序。非常值得参考的程序。DBR激光器程序 DBR计算/1.txt , 2056 DBR计算/4.asv , 22 DBR计算/4.txt , 32 DBR计算/GetDeviceEfficiency.asv , 2012 DBR计算/GetDeviceEfficiency.m , 2014 DBR计算/GetOneLayerArray.asv , 837 DBR计算/GetOneLayerArray.m , 836…...