所在位置:首页 → 编程语言 → Java → Java基础五:数组、正则表达式、异常处理

Java基础五:数组、正则表达式、异常处理

发布: 更新时间:2022-10-15 23:34:02

一、创建数组

# 数组声明
dataType[] arrayRefVar;   # 首选的方法
或
dataType arrayRefVar[];   # 效果相同,但不是首选方法。风格是来自 C/C++ 语言
# 方法一、先声明后再创建数组
arrayRefVar = new dataType[arraySize];

# 方法二、同时声明和创建
dataType[] arrayRefVar = new dataType[arraySize];

# 方法三、声明时通过赋值来创建
dataType[] arrayRefVar = {value0, value1, ..., valuek};

数据操作

1.遍历、for 或for..each

2.数组作为参数、返回值 public static int[] reverse(int[] list)

3.多维数组 String[][] str = new String[3][4];

二、正则表达式

java.util.regex 包主要包括以下三个类:

  • Pattern 类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
  • Matcher 类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
  • PatternSyntaxException:PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组

import java.util.regex.Matcher;
import java.util.regex.Pattern;

# 按指定模式在字符串查找
String line = "This order was placed for QT3000! OK?";
String pattern = "(\\D*)(\\d+)(.*)";
boolean isMatch = Pattern.matches(pattern, content);    #匹配一个Pattern.matches()

# 创建 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.lang.Exception 类继承的子类。

try{
  // 程序代码
}catch(异常类型1 异常的变量名1){   //异常的变量名.可以查看方法,比如异常变量名.toString()可以打印异常信息
  // throws/throw关键字 抛出异常
}catch(异常类型2 异常的变量名2){
  // 程序代码
}finally{
  // 程序代码
}

如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。

异常实例:

public class ExcepTest{
  public static void main(String args[]){
    int a[] = new int[2];
    try{
       System.out.println("Access element three :" + a[3]);
    }catch(ArrayIndexOutOfBoundsException e){
       System.out.println("Exception thrown  :" + e);
    }
    finally{
       a[0] = 6;
       System.out.println("First element value: " +a[0]);
       System.out.println("The finally statement is executed");
    }
  }
}

try-with-resources

DK7 之后,Java 新增的 try-with-resource 语法糖来打开资源,并且可以在语句执行完毕后确保每个资源都被自动关闭 。

JDK7 之前所有被打开的系统资源,比如流、文件或者 Socket 连接等,都需要被开发者手动关闭,否则将会造成资源泄露。

try (resource declaration) {
  // 使用的资源
} catch (ExceptionType e1) {
  // 异常块
}

处理多个资源:

import java.io.*;
import java.util.*;
class RunoobTest {
    public static void main(String[] args) throws IOException{
        try (Scanner scanner = new Scanner(new File("testRead.txt"));
            PrintWriter writer = new PrintWriter(new File("testWrite.txt"))) {
            while (scanner.hasNext()) {
                writer.print(scanner.nextLine());
            }
        }
    }
}

声明自定义异常

在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。

  • 所有异常都必须是 Throwable 的子类。
  • 如果希望写一个检查性异常类,则需要继承 Exception 类。
  • 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

可以像下面这样定义自己的异常类:

class MyException extends Exception{ }

实例:

// 文件名InsufficientFundsException.java
import java.io.*;
 
//自定义异常类,继承Exception类
public class InsufficientFundsException extends Exception
{
  //此处的amount用来储存当出现异常(取出钱多于余额时)所缺乏的钱
  private double amount;
  public InsufficientFundsException(double amount)
  {
    this.amount = amount;
  } 
  public double getAmount()
  {
    return amount;
  }
}
标签:, , ,
文章排行