まず、ファイナルについて話しましょう。
最後のキーワードでは、変数、メソッド、クラスを変更できます。
最終変数:
必要:
1変更されないコンパイル時間定数が必要です
2実行時に初期化された値、変更を望まない
利点:コンパイル時に実行されたコンピューター、ランタイムの負担を減らす
拡張機能:
基本的なタイプと参照オブジェクトを変更できます。基本タイプを変更する場合、値が非常に一定であることを意味します。オブジェクト参照を変更すると、参照が初期化され、オブジェクトを指すと、別のオブジェクトに変更できません(オブジェクト自体を変更できます)
空白の決勝
最終的に変更されますが、初期値が与えられないドメインは、ドメイン定義またはコンストラクターの式を使用してファイナルに値を割り当てる必要があります(使用前にファイナルを初期化する必要があります)
知らせ:
オブジェクトが静的と最終的に同時に変更された場合(コンパイル期間定数)、一般に資本で表され、アンダースコアリンクワード変更パラメーターは次のとおりです。
最終的な変更パラメーターの場合、パラメーターが読み取り可能であるが変更できないことを意味します。
使用例:
プライベートランダムrand = new Random(); private static random = new Random();プライベートファイナルint n1 = 12;プライベート最終int番号= rand.nextint(30); private static final int number2 = random.nextint(40); @test public void finaldatatest(){system.out.println(n1); System.out.println( "------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ System.out.println(rand.nextint(30)); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * @param SK * @return */publicparam(final String sk){// sk = "jeyson";最終的な方法:
ファイナルはメソッドを変更することもでき、メソッドはサブクラスによって継承できないことを示します。
最終的な使用の利点:
1 JDK1.5の前に、効率は高くなり、JDK1.5の後、無視できます
2メソッドロックして、サブクラスのメソッドの意味が変化しないようにし、上書きできないことを確認します。使用例:
public final string finalMethod(){return "Hello World"; }最終クラス:
クラスに継承されたくない場合は、Finalを使用してクラスの使用例を変更できます。
パブリックファイナルクラスfinalclasstx {private int k; public void getmyword(){system。 out .println( "これは最終クラスであり、kの値は" +getk()); } public int getk(){return k;} public void setk(int k){this .k = k;}}}次に、一時的なキーワード:
Transientは変数のみを変更でき、変数をシリアル化できないことを示します。
一般に、シリアル化可能なインターフェイスクラスを継承し、シリアル化が自動的に実行されます。 Transientによって変更された変数がシリアル化されている場合、指定された宛先にシリアル化されません。
それで、
1トランジェントによって変更された変数は、オブジェクトの持続性の一部ではなくなり、変数の内容はシリアル化されており、アクセスできません。
2 Transientは変数のみを変更でき、メソッドとクラスは変更できます
3一時的に変更されているかどうかに関係なくシリアル化できない静的変数の使用の例:
public class transientex {public static void main(string [] args){user user = new user(); user.setUsername( "Jeyson"); user.setPassWord( "123456"); System.out.println( "シリアル化前:"); system.out.println( "username ="+user.getusername()); System.out.println( "password ="+user.getPassWord()); // serialization try {objectOutputStream os = new objectOutputStream(new FileOutputStream( "c://myresource//test1.txt")); os.writeobject(user); os.flush(); os.close(); } catch(Exception e){e.printstacktrace(); } // Deserialization try {objectInputStream is = new ObjectInputStream(new FileInputStream( "c://myresource//test1.txt")); user =(user)is.readobject(); is.close(); System.out.println( "序列化后:"); system.out.println( "username ="+user.getusername()); System.out.println( "password ="+user.getPassWord()); } catch(Exception e){e.printstacktrace(); } system.out.println( "--------------------------------"); }} classユーザーはSerializable {private static final long serialversionuid = 1l;プライベート文字列ユーザー名; //一時的なプライベートトランジェント文字列パスワードを使用します。 public string getUsername(){return username; } public void setUsername(string username){this.username = username; } public string getPassWord(){パスワードを返します。 } public void setPassword(string password){this.password = password; }}拡張機能:外部化可能
シリアル化可能なインターフェイスを実装するクラスが実装されるため、シリアル化は、外部iazbleインターフェイスを実装するクラスを自動的に実装します。自動的にシリアル化することはできません。また、Transientを使用するかどうかは、結果に影響を与えません。
シリアル化が必要な場合は、writeExternalメソッドでシリアル化する変数を手動で指定する必要があります。
使用例:
パブリッククラス外部化可能可能性は、外部化可能{private transient string name = "ssss"; @Override public void readExternal(objectInput in)throws ioException、classNotFoundException {name =(string)in.ReadObject(); } @Override public void writeExternal(objectOutput out)throws ioException {out.writeObject(name); } public string getname(){return name; } public void setName(string name){this.name = name; } public static void main(string [] args){externalizableEx ex = new externalizableEx(); ex.setname( "Jeyson"); System.out.println( "外部化可能なシリアル化:"); System.out.println(ex.getName()); // serialization try {objectOutputStream os = new objectOutputStream(new fileoutputStream(new file( "c://myresource//test2.txt"))); os.writeobject(ex); os.flush(); os.close(); } catch(Exception e){e.printstacktrace(); } // Deserialization try {objectInputStream is = new objectInputStream(new FileInputStream(new File( "c://myresource//test2.txt"))); ex =(externalizableex)is.readobject(); is.close(); System.out.println( "外部化可能なシリアル化:"); System.out.println(ex.getName()); } catch(Exception e){e.printstacktrace(); }}}声明:
決勝のほとんどは、「Javaプログラミング思考」の第4版から来ています
参照記事://www.vevb.com/article/86996.htm
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。