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

【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技术的前景&#xff0c;他相信即将在2025年迎来一场伟大的变化。AI将实现“永久记忆”&#xff0c;改变我们与科技的互动过程。施密特将现有的AI上下文窗口比作人类的短期记忆&#xff0c;难以持久保存信息。他的设想是…...

【视频笔记】基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil【持续更新】

视频链接: 基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil 从头编写一个视觉语言模型:PloyGamma,是谷歌的一个模型 1:原始图像 2:视觉编码器(本文是viT),通过对比学习进行训练。这个对比学习最开始是CLIP,后来被谷歌改成了SigLIP 3:线性投影层 4:如何将图…...

解决 C++ 中头文件相互引用和解耦问题

在 C 中&#xff0c;当多个 .h 文件相互引用时&#xff0c;可能会导致 循环依赖 或 头文件冗余 问题&#xff0c;进而引发编译时间延迟、代码复杂度增加等问题。为了有效地解耦和组织代码&#xff0c;可以采用以下几种策略和思想&#xff1a; 1. 前向声明&#xff08;Forward …...

河马剧场(短剧)APP的邀请码怎么填写

上篇给大家说到河马剧场免费看短剧还能领5.2元3天vip会员&#xff0c;本文就说一下河马剧场河马短剧APP的邀请码怎么填写。 河马短剧APP填写邀请码分三步&#xff1a; 1、安装登陆河马短剧APP 2、点击底部导航栏中间的“福利” 3、往下划会看到“填写邀请码领3天vip” 4、…...

01:C语言的本质

C语言的本质 1、ARM架构与汇编2、局部变量初始化与空间分配2.1、局部变量的初始化2.1、局部变量数组初始化 3、全局变量/静态变量初始化化与空间分配4、堆空间 1、ARM架构与汇编 ARM简要架构如下&#xff1a;CPU&#xff0c;ARM(能读能写)&#xff0c;Flash&#xff08;能读&a…...

第1章:数据库基础

第1章&#xff1a;数据库基础 1.1 数据库概述 1.1.1 什么是数据库 数据库的定义数据库的发展历程数据库的重要性 1.1.2 关系型数据库简介 关系型数据库模型常见的关系型数据库关系型数据库的特点 1.1.3 MySQL在企业中的应用 Web应用电商平台金融系统大数据存储 1.2 数据…...

C++教程 | string类的定义和初始化方法

在C中&#xff0c;string是标准库中用于处理字符串的类&#xff0c;定义在 头文件中&#xff0c;它提供了方便、灵活的字符串操作功能。以下是一些常见的定义和初始化string对象的方法&#xff1a; 1. 默认初始化 可以直接定义一个空的string对象&#xff0c;语法如下&#x…...

React中的合成事件

合成事件与原生事件 区别&#xff1a; 1. 命名不一样&#xff0c;原生用纯小写方式&#xff0c;react用小驼峰的方式 原生&#xff1a;onclick React的&#xff1a;onClick 2. 事件处理函数的写法不一样 原生的是传入一个字符串&#xff0c;react写法传入一个回调函数 3.…...

[SMARTFORMS] 创建FORM

输入事务码SMARTFORMS进入表单开发界面&#xff0c;选中表单&#xff0c;自定义表单名称ZFS_DEMO_2025 点击"创建"按钮&#xff0c;跳转至"SAP表格设计器"页面 在"表格属性"填写表单描述、指定页格式和样式 在"表格接口"可以填写SMART…...

成都和力九垠科技有限公司九垠赢系统Common存在任意文件上传漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

基于Python的考研学习系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

STM32--MPU内存保护单元实战:从原理到安全区域配置

1. 为什么嵌入式系统需要内存保护&#xff1f; 在嵌入式开发中&#xff0c;内存保护常常被初学者忽视&#xff0c;直到某天程序突然崩溃却找不到原因。我曾经在一个工业控制项目上吃过亏——某个任务意外改写了另一个任务的堆栈数据&#xff0c;导致系统随机死机&#xff0c;花…...

保姆级教程:在Ubuntu 20.04上为全志T507构建Qt5.12.5交叉编译环境(含GPU加速配置)

全志T507 Qt5.12.5交叉编译实战&#xff1a;从环境搭建到GPU加速配置 在嵌入式开发领域&#xff0c;全志T507/T7处理器凭借其出色的性能和丰富的接口资源&#xff0c;成为工业控制、智能终端等场景的热门选择。而Qt框架作为跨平台应用开发的利器&#xff0c;其5.12.5 LTS版本在…...

从花瓶到咖啡杯:SolidWorks抽壳命令的两种高级用法,CaTICs 3D01-01与3D05_L02-B对比教学

从花瓶到咖啡杯&#xff1a;SolidWorks抽壳命令的两种高级用法实战解析 在工业设计领域&#xff0c;抽壳命令看似简单&#xff0c;却能直接影响建模效率与成品质量。今天我们就以CaTICs竞赛中的两个经典案例——轴对称花瓶&#xff08;3D01-01&#xff09;与带手柄斜口杯&#…...

Superpowers - 15 用 Git Worktrees 打造“无尘室”开发环境:从 Superpowers 实践谈起

文章目录Pre一、为什么需要 Git Worktrees&#xff1a;上下文切换是真正的杀手1.1 传统分支切换的痛点1.2 Worktree 的核心价值&#xff1a;隔离&#xff0c;而不是复制二、Superpowers 的视角&#xff1a;Worktree 是必选项而非锦上添花2.1 三个关键技能的前置条件2.2 生命周期…...

企业云盘文件预览技术深度剖析:从10种常见格式到渲染架构实战

引子&#xff1a;那个凌晨3点接到电话的IT主管 凌晨3点&#xff0c;某制造企业的IT主管老张被一阵急促的手机铃声惊醒。生产线的工人发现&#xff0c;投标用的3D工程图纸在手机上打不开——甲方要求在投标截止前2小时内补充技术方案&#xff0c;手机里的图纸格式是SolidWorks的…...

如何用LeRobot在3天内打造你的第一个智能机器人?

如何用LeRobot在3天内打造你的第一个智能机器人&#xff1f; 【免费下载链接】lerobot &#x1f917; LeRobot: Making AI for Robotics more accessible with end-to-end learning 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot 你是否曾经梦想过拥有自己…...

TI毫米波雷达选型指南:IWR6843 vs IWR1843性能对比与实战场景解析

TI毫米波雷达选型指南&#xff1a;IWR6843 vs IWR1843性能对比与实战场景解析 毫米波雷达技术正在重塑工业检测、智能交通和自动化控制领域的感知能力。作为该领域的核心器件&#xff0c;德州仪器&#xff08;TI&#xff09;的IWR系列毫米波雷达凭借其高集成度和卓越性能&…...

终极Blender插件实战指南:无缝连接虚幻引擎的PSK/PSA文件格式

终极Blender插件实战指南&#xff1a;无缝连接虚幻引擎的PSK/PSA文件格式 【免费下载链接】io_scene_psk_psa A Blender extension for importing and exporting Unreal PSK and PSA files 项目地址: https://gitcode.com/gh_mirrors/io/io_scene_psk_psa 在3D游戏开发工…...

Fortify扫描中Access Control: Database问题的3种实战绕过技巧(附代码)

Fortify扫描中Access Control: Database问题的3种实战绕过技巧&#xff08;附代码&#xff09; 在Java企业级应用开发中&#xff0c;安全扫描工具Fortify常常会将数据库访问控制标记为潜在风险点。特别是当系统采用微服务架构时&#xff0c;权限校验可能已在前置网关完成&…...

从词向量到大模型:NLP 技术是怎么一步步变强的

自然语言处理&#xff08;Natural Language Processing&#xff0c;简称 NLP&#xff09;是人工智能里一个特别重要的方向&#xff0c;它的发展过程其实就是人们想办法让机器从只会按规则做事&#xff0c;慢慢变成能真正理解人类说话意思的过程。这篇文章会带你简单看看&#x…...