1.スイッチは、パラメーターとして文字列をサポートします
/*** * Switchサポート文字列パラメーターjdk7 * @author huangjiawei */public class switchtest {public static void switchtest(string arg){switch(arg){case "lisa":system.err.println( "i am lisa!");壊す;ケース「マイク」:System.err.println(「私はマイクです!」);壊す;デフォルト:system.err.println( "私はあなたの唯一の!");壊す; }} public static void main(string [] args){switchtest( "lisa"); // i am lisa! switchtest( "mike"); //私はマイクです! switchtest( ""); //私はあなたの唯一のものです! }}列挙サポートを切り替えます
/** * Switch EnumerationはJDK5 * @Author huangjiawei * */public class switchMonthtest {public static void swithmonthtest(month){switch(month){case 1月:System.err.println( "これは1月です");壊す;ケース2月:system.err.println( "これは2月です");壊す;ケースマーチ:System.err.println( "これは3月です");壊す; }} public static void main(string [] args){swithmonthtest(month.january); //これは1月のswithmonthtest(month.february);2。数値リテラルの改善
2.1。 Java7の前に、小数(1234)、Octal(01234)、およびHexadecimal(0x1234)をサポートします
Java 8はバイナリ(0B11110001)をサポートしています
2.2。 underscore_によって分離できます
public class binarytest {private static int a = 16; // decimal private static int b = 020; // octal private static int c = 0x10; // hexadecimal private static int d = 0b0001_0000; // binaryを使用して、デリミターを使用して、static void main [] {system.er.println(a); System.err.println(b); // 16 System.err.println(c); // 16 System.err.println(d); // 16}}}3。リソースは自動的に閉じられます
Javaでは、使用後に閉鎖する必要がある多くのリソースがあります。 Java 7の前に、栗、入力ストリーム、ライター、ソケット、接続などを取ります。通常、close()メソッドを表示します。 Java 7では、閉じられていないかどうかを無視できます。リソース付きのトライコードコードブロックを使用できます。
java.io.bufferedreader;インポートjava.io.filereader; public class trytest { /** Java 7の前にファイルへのパスを受け入れる* / public static string trytest(string path){bufferedreader br = null; try {br = new BufferedReader(new FileReader(PATH)); return br.readline(); } catch(Exception e){System.err.println( "BufferedReader例外" + e); }最後に{if(br!= null){try {br.close(); br.ready(); //ストリームが閉じられており、例外がここにスローされます} catch(例外e){system.err.println( "bufferedreader close例外" + e); } } } 戻る ""; } / * *ファイルを受け入れるパスJava7 * /public static string trytest1(string path){ / * * tryステートメントブロックが実行されると、fileinputStreamは自動的に閉じられます。これは、FileInputStreamがJavaのjava.lang.autoclosableインターフェイスを実装するためです。 *このインターフェイスを実装するすべてのクラスは、リソース付きのTry-Resources構造で使用できます。 */ try(bufferedReader br = new BufferedReader(new FileReader(PATH))){return br.readline(); } catch(Exception e){System.err.println( "BufferedReader例外" + e); } 戻る ""; } public static void main(string [] args){trytest( "c://users//huangjiawei//desktop//my-release-key.keystore"); trytest1( "c://users//huangjiawei//desktop//my-release-key.keystore"); }}4.複数の例外をキャッチします
Java 7の前に、複数の例外をキャッチするために複数のキャッチ条項を含める必要があります。 Java 7では、このように書くことができます。
java.util.date;/***複数のキャッチステートメントをインポートすると、一致する最初のキャッチ例外が実行されます。何回キャッチがあっても、それらは無視されます * @author huangjiawei * */public class catchtest {/ * * java 7 */public static void catchtest(){int a = 100; int b = 0;日付date = null; try {system.err.println(date.getTime()); //例外がここにスローされます。次のステートメントは実行されません! int result = a/b; // system.err.println(result); // exected} catch(nullpointerexception e){system.err.println(e); // java.lang.nullpointerexception} catch(arithmeticexception e){system.err.err.errn(e); } catch(Exception e){System.err.println(e); }} / * * java 7 * / public static void catchtest1(){int a = 100; int b = 0;日付date = null; try {int result = a/b; System.err.println(result); System.err.println(date.getTime()); } catch(arithmeticexception | nullpointerexception e){system.err.println(e); // java.lang.arithmeticexception:/by zero}} public static void main(string [] args){catchtest(); catchtest1(); }}5.インスタンス作成タイプ推論
Import java.util.arraylist; import java.util.list; public class typetest { /** Java 7の前後に、両方のタイプを宣言する必要があります* / list <string> list = new ArrayList <String>(); /** Java 7、<>後の型を宣言する必要はありません。そのタイプは、前の<>*/ list <string> list1 = new arraylist <>();}に基づいて自動的に推測されます。6。ファイルシステムの拡張
Java7は、ファイル管理に対する不便を変更するために新しいNIO2.0 APIを起動しました。これにより、PATH、PATHS、ファイル、ウォッチサービス、ファイルシステム、その他の製品などの一般的に使用されるタイプを使用すると、ファイル管理の開発者のコーディング作業を大幅に簡素化できます。
6.1パスインターフェイスとパスクラス
パスインターフェイスの一部の関数は、実際にはjava.ioパッケージの下のファイルクラスに相当する場合があります。もちろん、これらの機能は読み取り専用操作に限定されています。実際の開発では、開発者はPATHインターフェイスとPATHSクラスを使用して、ファイルの一連のコンテキスト情報を取得できます。
パスインターフェイスとパスタイプを使用して、ファイル情報を取得します。
Import java.nio.file.path; Import java.nio.file.paths; public class pathpathStest {public static void main(string [] args){path path = paths.get( "c:////users///huangjiawei///desktop/////my-release-key.keystore"); System.out.println( "ファイルノードの数:" + path.getNameCount()); //ファイルノードの数:4 System.out.println( "ファイル名:" + path.getFileName()); //ファイル名:my-release-key.keystore system.out.println( "ファイルルートディレクトリ:" + path.getRoot()); //ファイルルートディレクトリ:c:/system.out.println( "ファイルSuperior Association Directory:" + path.getParent()); //優れた協会ディレクトリ:C:/users/huangjiawei/desktop}}6.2。ファイルクラス
PATHインターフェイスとPATHSクラスを使用すると、ターゲットファイルのコンテキスト情報に簡単にアクセスできます。もちろん、これらの操作はすべて読み取り専用です。開発者が、作成、変更、削除など、ファイルで他の非読み取り専用操作を実行したい場合、ファイルタイプを使用して動作させることができます。
ファイルの一般的な方法は次のとおりです。
ファイルを使用してファイルをコピーして貼り付けている例タイプ:
files.copy(paths.get( "/test/src.xml")、paths.get( "/test/target.xml"));
ファイルタイプを使用してファイルを管理することは、従来のI/Oメソッドよりも便利でシンプルです。特定の操作の実装はNIO2.0 APIに引き渡されるため、開発者は注意を払う必要はありません。
6.3。 WatchService
Java7は、開発者に新しいファイルシステム機能のセット、つまりファイル監視も提供します。ここには、ファイル監視の重要性と目的が何であるかを知らない多くの友人がいるかもしれません。そのため、ホットリリース機能にデバッグされたWebコンテナを思い出してください。プロジェクトが反復され、再配置された場合、開発者はファイルが変更されることを検出すると、これらの「変更」に自動的に適応し、内部でリロードするため、開発者は手動で再起動する必要はありません。 Webコンテナのホットパブリッシング機能もファイル監視機能に基づいているため、ファイル監視機能の出現はJavaファイルシステムにとって非常に重要であることを認めなければなりません。
ファイルの監視はイベント駆動型であり、イベントトリガーは監視の前提条件です。開発者は、java.nio.fileパッケージの下にあるstandardwatcheventkindsタイプによって提供される3つのリテラル定数を使用して、監視イベントタイプを定義できます。監視イベントをWatchServiceインスタンスに登録する必要があることは注目に値します。
StandardWatchEventKindsタイプが提供する監視イベント:
WatchServiceクラスを使用してファイル監視を実装する完全な例:
java.nio.file.fileSystems; Import java.nio.file.path; Import java.nio.file.paths; Import java.nio.nio.standardwatcheventkinds; Import java.nio.file.watchevent; Import Java.nio.file.watchkekkey;* file.file.File.ファイル監視システム* @author huangjiawei*/public class watchviewtest {public static void testwatch(){/*ターゲットパス*/パスパス= paths.get( "c:// users // huangjiawei // desktop"); { /*ファイル監視オブジェクトを作成してください。 */ WatchService WatchService = filesystems.getDefault()。newWatchService(); /*ファイル監視のためにすべてのイベントタイプを登録します。 */ path.register(WatchService、StandardWatchEventKinds.Entry_Create、StandardWatchEventKinds.Entry_Delete、StandardWatchEventKinds.Entry_Modify); /*ループ監視ファイル。 */ while(true){watchkey watchkey = watchservice.take(); /*イベントをトリガーするすべてのファイルを反復します*/ for(watchevent <? } if(!watchkey.reset()){return; }}} catch(例外e){e.printstacktrace(); }} public static void main(string [] args){testwatch(); }}上記のプログラムの例を通じて、ファイル監視のためにWatchServiceインターフェイスを使用することは非常にシンプルで便利であることがわかります。まず、ターゲット監視パスを定義し、newWatchService()ファイルシステムのメソッドを呼び出して、WatchServiceオブジェクトを作成する必要があります。次に、PATHインターフェイスのレジスタ()メソッドを使用して、WatchServiceインスタンスを登録し、イベントを監視する必要があります。これらすべての基本的な作業層の準備ができたら、周辺のリアルタイム監視サイクルを書きます。最後に、監視キーを繰り返して、監視イベントをトリガーするすべてのファイルを取得します。
今、私はついに、Spring BootのいわゆるDev-Tools Hotアップデートの基本原理を知っています! JDKがそのようなAPIを提供することがわかります。
要約します
上記は、JDK 7の新機能のコード分析です。編集者による簡単な紹介です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!