国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ Java &#&はじめる JavaでIOストリームを分類する方法

JavaでIOストリームを分類する方法

Nov 23, 2019 pm 06:14 PM
io java 分類

JavaでIOストリームを分類する方法

1. IO: アップロードとダウンロード、書(shū)き込みと書(shū)き込み

ストリーム: 先入れで流れる一連のデータの流れ先出し方式、パイプライン、プログラム中心、プログラムとネットワーク | ファイル | サーバー | 配列.. (関連コースの推奨事項(xiàng): Java ビデオ チュートリアル)

分類

1) 流れの方向による:

入力ストリーム、出力ストリーム

2) 演算単位の分類:

バイト ストリーム (ユニバーサル ストリーム):あらゆるコンテンツを転送可能 バイトであり、テキスト、畫像、音聲を送信可能; 文字ストリーム: プレーンテキストデータのみを操作可能

3) 関數(shù)によると:

ノードストリーム:基本的な機(jī)能を?qū)g現(xiàn)するためのソース; 関數(shù)ストリーム : ノードストリームのパフォーマンスを強(qiáng)化し、効率を向上させます

4) 各分類は補(bǔ)完的です

バイトストリーム

(1) バイト入力ストリーム: InputStream この抽象クラスは、バイト入力ストリームを表すすべてのクラスのスーパークラスです。FileInputStream は、ファイル システム

//字節(jié)流輸入 InputStream 
//導(dǎo)包	導(dǎo)包快捷鍵: ctrl+shift+o
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class Demo01 {
	public static void main(String[] args) throws IOException {
		//FileInputStream(String name) 
		通過(guò)打開(kāi)一個(gè)到實(shí)際文件的連接來(lái)創(chuàng)建一個(gè) FileInputStream,該文件通過(guò)文件系統(tǒng)中的路徑名 name 指定
		//FileInputStream(File file) 
		通過(guò)打開(kāi)一個(gè)到實(shí)際文件的連接來(lái)創(chuàng)建一個(gè) FileInputStream,
		該文件通過(guò)文件系統(tǒng)中的 File 對(duì)象 file 指定
		InputStream is=new FileInputStream(new File("D:/test.txt"));//創(chuàng)建D盤符的根目錄下的文件
		System.out.println(is);
		//方式1: int read() 讀入數(shù)據(jù) 一個(gè)字節(jié)一個(gè)字節(jié)讀入
		/*int num=is.read();
		System.out.println((char)num);
		num=is.read();
		System.out.println((char)num);
		System.out.println((char)(is.read()));*/
		//方式2:使用循環(huán),循環(huán)讀入,可以簡(jiǎn)化代碼,重復(fù)代碼只寫一次,但還是一個(gè)字節(jié)一個(gè)字節(jié)的讀入
		/*int num=-1;
		while((num=is.read())!=-1){
			System.out.println((char)num);
		}*/
		//方式3:int read(byte[] b) 一個(gè)字節(jié)數(shù)組一個(gè)字節(jié)數(shù)組的讀入
		//返回值: 返回讀入到字節(jié)數(shù)組中數(shù)據(jù)的個(gè)數(shù),沒(méi)有讀到返回-1
		byte[] car=new byte[1];
		//int len=is.read(car); 
		int len=-1;
		while((len=is.read(car))!=-1){
			System.out.println(new String(car,0,len));
		}
		//關(guān)閉
		is.close();
	}
}

內(nèi)のファイルから入力バイトを取得します (2) バイト出力ストリーム: OutputStream This抽象クラスは、出力バイト ストリームを表すすべてのクラスのスーパークラスです。 FileOutputStream ファイル出力ストリームは、データを File

//字節(jié)輸出流 OutputStream
//導(dǎo)包	導(dǎo)包快捷鍵: ctrl+shift+o
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class Demo02 {
	public static void main(String[] args) {
		//FileOutputStream(String name)創(chuàng)建一個(gè)向具有指定名稱的文件中寫入數(shù)據(jù)的輸出文件流
		//FileOutputStream(String name,boolean append)  
		創(chuàng)建一個(gè)向具有指定 name 的文件中寫入數(shù)據(jù)的輸出文件流
		//FileOutputStream(File file,boolean append) 
		創(chuàng)建一個(gè)向指定 File 對(duì)象表示的文件中寫入數(shù)據(jù)的文件輸出流
		//boolean append	返回值:true追加,false不追加(默認(rèn)false)
		OutputStream os=null;
		//try...catch(){}	捕捉異常,處理異常
		try {
			//1.選擇流
			os=new FileOutputStream("D:/hhh.txt",hhtrue); 
			//文件不存在,系統(tǒng)會(huì)自動(dòng)幫我們創(chuàng)建,但文件夾不會(huì)
			//2.準(zhǔn)備數(shù)據(jù)
			String str="要好好學(xué)習(xí),天天向上..."; 
			byte[] c和=str.getBytes();
			//3.寫出 void write(byte[] b)  
			os.write(ch);
			//4.刷出
			os.flush();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			//5.關(guān)閉
			try {//預(yù)防空指針異常
				if(os!=null){
					os.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

Character stream

# に書(shū)き込むために使用される出力ストリームです。プレーンテキストのみ操作可能

1) ノードストリーム:

(1)文字入力ストリーム: Reader は文字ストリームを読み取るための抽象クラス、FileReader は文字ファイルを読み取るための便利なクラス

//字符輸入流 Reader
//導(dǎo)包	導(dǎo)包快捷鍵: ctrl+shift+o
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class Demo03 {
	public static void main(String[] args) {
		//FileReader(String fileName) 
		Reader rd=null;
		try {
			//1.選擇流
			rd=new FileReader("D:/hehe.txt");//創(chuàng)建D盤符的根目錄下的文件
			//2.讀入
			//方法1:int read() 讀取單個(gè)字符。 
			/*System.out.println((char)rd.read());
			System.out.println((char)rd.read());
			System.out.println((char)rd.read());
			System.out.println((char)rd.read());*/
			int len=-1;  //存儲(chǔ)讀到的數(shù)據(jù)  如果為-1,證明已達(dá)到末尾
			//方法2:
			/*while(-1!=(len=rd.read())){
				System.out.println((char)len);
			}*/
			//方法3:int read(char[] cbuf)  將字符讀入數(shù)組。
			char[] car=new char[1024];
			while((len=rd.read(car))!=-1){
				System.out.println(new String(car,0,len));
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			if(rd!=null){
				try {
					//關(guān)閉功能
					rd.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}
}

(2)文字出力ストリーム: Writer は文字ストリームを記述するための抽象クラス、FileWriter は文字ファイルを記述するための便利なクラスです

//字符輸出流:Writer
//導(dǎo)包	導(dǎo)包快捷鍵: ctrl+shift+o
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
public class CharDemo02 {
	public static void main(String[] args) {
		//FileWriter(File file) 		//默認(rèn)不追加
		//FileWriter(File file, boolean append)  	
		//FileWriter(String file)  
		//FileWriter(String file, boolean append)  
		Writer rt=null;
		try {
			//1.選擇流
			rt=new FileWriter("D:/houhou.txt",true);
			//2.寫出
			/*	void write(char[] cbuf)  寫入字符數(shù)組 
				void write(char[] cbuf, int off, int len) 寫入字符數(shù)組的某一部分
				void write(int c) 寫入單個(gè)字符
				void write(String str)  寫入字符串 
				void write(String str, int off, int len) 寫入字符串的某一部分 
			*/
			rt.write(97);
			rt.write("\r\n");  		//換行
			rt.write("你真好看!!!!");
			rt.write("\r\n");
			rt.write("你真好看!!!!",2,2);
			rt.write("\r\n");
			char[] ch={'a','b','c','d','e'};
			rt.write(ch);
			rt.write("\r\n");
			rt.write(ch,2,3);
			//3.刷出
			rt.flush();		
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			//4.關(guān)閉
			if(null!=rt){
				try {
					rt.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

機(jī)能の流れ
# バッファリングされたストリーム: 強(qiáng)化された機(jī)能、向上したパフォーマンス、高速な読み取りと書(shū)き込みの効率

##1) バイト ストリーム:

BufferedInputStream バイト入力ストリーム バッファリングされたストリーム

BufferedOutputStream バイト出力ストリーム バッファリングされたストリーム

新しいメソッドはありません。ポリモーフィックな使用が発生する可能性があります

//導(dǎo)包
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class BufferedInputStream01 {
	public static void main(String[] args) throws IOException {
		//1.選擇流
		//BufferedInputStream(InputStream in) 
		InputStream is=new BufferedInputStream(new FileInputStream("D:/hehe.txt"));
		OutputStream os=new BufferedOutputStream(new FileOutputStream("E:/hengheng.txt") );
		//2.讀寫
		byte[] car=new byte[1024];
		int len=-1;
		while((len=is.read(car))!=-1){
			os.write(car,0,len);
		}
		//3.刷出
		os.flush();
		//4.關(guān)閉
		os.close();
		is.close();
	}
}

2) 文字ストリーム:

BufferedReader 文字入力ストリーム バッファリングされたストリーム

新しいメソッド: String readLine() はテキスト行を読み取ります

BufferedWriter 文字出力ストリーム バッファ ストリーム

新しいメソッド: void newLine() は行區(qū)切り文字を書(shū)き込みます

//導(dǎo)包
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedReader02 {
	public static void main(String[] args) throws IOException {
		//1.選擇流  導(dǎo)包快捷鍵: ctrl+shift+o
		BufferedReader br=new BufferedReader(new FileReader("D:/hehe.txt"));
		BufferedWriter bw=new BufferedWriter(new FileWriter("D:/ccc.txt"));
		//2.讀寫
		String msg=null;
		while((msg=br.readLine())!=null){
			bw.write(msg);
			bw.newLine();
		}
		//3.刷出
		bw.flush();
		//4.關(guān)閉
		bw.close();
		br.close();
	}
}

データストリーム(バイトノードストリーム)

データストリーム(バイトノードストリーム):

読み書(shū)き可能な基本データ型 文字列型データ、バイトストリーム関數(shù)ストリームの一種です

DataInputStream の新しいメソッド: readXxx()

DataOutputStream の新しいメソッド: writeXxx()

新しいメソッド狀態(tài)がある場(chǎng)合、複數(shù)の発生は発生しません。最初に書(shū)き込み、次に write

発生する可能性のある例外: EOFException ファイルには次の內(nèi)容があります。內(nèi)容を読み取ることができません。書(shū)き込まれたソース ファイルを読み取る必要があります。

//導(dǎo)包
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Data01 {
	public static void main(String[] args) throws IOException {
		//調(diào)用方法
		write("D:/data.txt");
		read("D:/data1.txt");
	}
	//讀入
	public static void read(String path) throws IOException{
		//1.輸入流 數(shù)據(jù)類型+數(shù)據(jù)
		DataInputStream in=new DataInputStream(new  BufferedInputStream(new FileInputStream(path)));
		//2.讀入
		int i=in.readInt();
		boolean b=in.readBoolean();
		String s=in.readUTF();
		System.out.println(i+"-->"+b+"-->"+s);
		//3.關(guān)閉
		in.close();
	}
	//寫出
	public static void write(String path) throws IOException{
		//1.輸出流
		DataOutputStream out=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(path)));
		//2.準(zhǔn)備數(shù)據(jù)
		int i=101;
		boolean f=false;
		String s="哈哈";
		//3.寫出  寫出和讀入的順序要保持一致
		out.writeInt(i);
		out.writeBoolean(f);
		out.writeUTF(s);
		//4.刷出
		out.flush();
		//5.關(guān)閉
		out.close();
	}
}

オブジェクト ストリーム

オブジェクトはデータを保存します。型データ

# バイト関數(shù)ストリーム: オブジェクト型データの読み取りおよび書(shū)き込みを送信する場(chǎng)合は、オブジェクト ストリームを使用できます

シリアル化: オブジェクト型データを保存可能な | 形式に変換するプロセス。送信可能狀態(tài)

ObjectInputStream() 逆シリアル化された入力ストリーム 新しいメソッド: readObject()

ObjectOutputStream( ) シリアル化された出力ストリーム 新しいメソッド: writeObject()

注:

1) 最初にシリアライズしてからデシリアライズ

2) シリアライズとデシリアライズの読み取りと書(shū)き込みの順序は一貫しています

3) すべてのクラスをシリアル化できるわけではありません java.io.Serializable 空のインターフェイス

4) すべてのプロパティを一時(shí)的にシリアル化する必要はありません

5) 靜的コンテンツはシリアル化されません

6) 親クラスが Serializable インターフェイスを?qū)g裝している場(chǎng)合、すべてのコンテンツはシリアル化できますサブクラス

サブクラスが Serializable インターフェイスを?qū)g裝しているが、親クラスがそれを?qū)g裝していない場(chǎng)合、サブクラスはサブクラスに固有のコンテンツのみをシリアル化できます

//導(dǎo)包
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Arrays;
public class ObjectDemo02 {
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		write("D:/object.txt");
		read("D:/object.txt");
	}
	//反序列化輸入
	public static void read(String path) throws IOException, ClassNotFoundException{
		//1.輸入流
		ObjectInputStream is=new ObjectInputStream(new BufferedInputStream(new FileInputStream(path)));
		//2.讀入
		Object p= is.readObject();
		int[] arr= (int[]) is.readObject();
		if(p instanceof Person){
			Person person=(Person)p;
			System.out.println(person.getName());
		}
		System.out.println(p);
		System.out.println(Arrays.toString(arr));
		//3,關(guān)閉
		is.close();
	}
	//序列化輸出
	public static void write(String path) throws IOException{
		//1.輸出對(duì)象信息
		ObjectOutputStream os=new ObjectOutputStream(new BufferedOutputStream(new 
		FileOutputStream(path)));
		//2.準(zhǔn)備數(shù)據(jù)
		Person p=new Person("aaa",18);
		int[] arr={1,2,3,4};
		//3.輸出
		os.writeObject(p);
		os.writeObject(arr);
		//4.刷出
		os.flush();
		//5.關(guān)閉
		os.close();
	}
}
//接口
class Person implements Serializable{
	private  String name;
	private static int age;
	public Person() {
	}
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
}

2. ファイル クラス

ファイル クラス: ファイルとディレクトリのパス名の抽象表現(xiàn)

提供される関數(shù): ファイルの外部で操作できるが、ファイル內(nèi)部のコンテンツは操作できない

実際のパス | ファイルを定義します。ファイルが存在しない場(chǎng)合でも定義できます。そのため、抽象式は

コンストラクター : File(Fileparent, String child) 親抽象に基づいて新しい File インスタンスを作成します。パス名と子のパス名文字列

File(String pathname) 指定されたパス名文字列を抽象パス名に変換して作成されます 新しい File インスタンス

File(Stringparent, String child) 新しい File インスタンスを作成します親パス名文字列と子パス名文字列に基づく

この記事は

Java 入門チュートリアル

列から引用したものです。ぜひ學(xué)習(xí)してください。

以上がJavaでIOストリームを分類する方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JDBCを使用してJavaのトランザクションを処理する方法は? JDBCを使用してJavaのトランザクションを処理する方法は? Aug 02, 2025 pm 12:29 PM

JDBCトランザクションを正しく処理するには、最初に自動(dòng)コミットモードをオフにし、次に複數(shù)の操作を?qū)g行し、結(jié)果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開(kāi)始します。 2。挿入や更新など、複數(shù)のSQL操作を?qū)g行します。 3。すべての操作が成功した場(chǎng)合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場(chǎng)合はconn.rollback()を呼び出します。同時(shí)に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設(shè)定して部分的なロールバックを達(dá)成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお?jiǎng)幛幛筏蓼埂?/p>

Javaでカレンダーを操作する方法は? Javaでカレンダーを操作する方法は? Aug 02, 2025 am 02:38 AM

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現(xiàn)在の日付と時(shí)刻を取得します。 3。of()メソッドを使用して特定の日付と時(shí)刻を作成します。 4.プラス/マイナスメソッドを使用して、時(shí)間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります?,F(xiàn)代のJavaでの日付処理は、java.timeapiを使用することを優(yōu)先する必要があります。

Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

ネットワークポートとファイアウォールの理解 ネットワークポートとファイアウォールの理解 Aug 01, 2025 am 06:40 AM

ネットワークポートアンドファイアワルクトグテルトエナブルコマニケーションwhiledensuringsecurity.1.networksarevirtualendpointsnumbered0–655 35、withwell-knownportslike80(http)、443(https)、22(ssh)、および25(smtp)識(shí)別pecificservices.2.portsoperateovertcp(信頼できる、c

Garbage CollectionはJavaでどのように機(jī)能しますか? Garbage CollectionはJavaでどのように機(jī)能しますか? Aug 02, 2025 pm 01:55 PM

JavaのGarbage Collection(GC)は、メモリを自動(dòng)的に管理するメカニズムであり、到達(dá)不可能なオブジェクトを取り戻すことでメモリ漏れのリスクを軽減します。 1.GCルートオブジェクトからのオブジェクトのアクセシビリティ(スタック変數(shù)、アクティブスレッド、靜的フィールドなど)、および到達(dá)不可能なオブジェクトはゴミとしてマークされています。 2。マーククリアリングアルゴリズムに基づいて、すべての到達(dá)可能なオブジェクトをマークし、マークのないオブジェクトをクリアします。 3.世代の収集戦略を採(cǎi)用する:新世代(Eden、S0、S1)は頻繁にMinorGCを?qū)g行します。高齢者のパフォーマンスは少なくなりますが、MajorGCを?qū)g行するのに時(shí)間がかかります。 Metaspaceはクラスメタデータを保存します。 4。JVMはさまざまなGCデバイスを提供します。SerialGCは小さなアプリケーションに適しています。 ParallelGCはスループットを改善します。 CMSが減少します

ユーザーデータにHTML「入力」タイプを使用します ユーザーデータにHTML「入力」タイプを使用します Aug 03, 2025 am 11:07 AM

適切なHTMLinputタイプを選択すると、データの精度を向上させ、ユーザーエクスペリエンスを向上させ、使いやすさを向上させることができます。 1.テキスト、電子メール、電話、番號(hào)、日付など、データ型に従って対応する入力タイプを選択します。 2。HTML5を使用して、より直感的な相互作用方法を提供できるU(xiǎn)RL、色、範(fàn)囲、検索などの新しいタイプを追加します。 3.プレースホルダーと必要な屬性を使用して、フォームフィリングの効率と精度を改善しますが、プレースホルダーがラベルを置き換えることはできないことに注意してください。

Javaビルドツールの比較:Maven vs. Gradle Javaビルドツールの比較:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

gradleisthebetterchoiceformostnewprojectoitssuperorfficability、performance、andmoderntoolingsupport.1.gradle’sgroovy/kotlindslismoreconciseandexpressiveethanmaven’sverboseml.2.gradleorformsmavenbenbumebutedwitedwitedwitedspedexは

説明された延期聲明の例で進(jìn)みます 説明された延期聲明の例で進(jìn)みます Aug 02, 2025 am 06:26 AM

Deferは、クリーニングリソースなど、関數(shù)が戻る前に指定された操作を?qū)g行するために使用されます。パラメーターは、延期時(shí)にすぐに評(píng)価され、関數(shù)は最後のファーストアウト(LIFO)の順に実行されます。 1.複數(shù)の債務(wù)は、宣言の逆の順序で実行されます。 2.ファイルの閉鎖などの安全なクリーニングに一般的に使用されます。 3。指定された返品値を変更できます。 4.回復(fù)に適したパニックが発生した場(chǎng)合でも実行されます。 5。リソースの漏れを防ぐために、ループで延期の亂用を避けます。正しい使用により、コードのセキュリティと読みやすさが向上します。

See all articles