音乐网站制作源代码中天建设招标网站
参考资料:菜鸟教程
 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程序抛出的异常
 
