먼저 결승에 대해 이야기합시다.
최종 키워드는 변수, 메소드 및 클래스를 수정할 수 있습니다.
최종 변수 :
필요:
1은 변하지 않는 컴파일 타임 상수가 필요합니다
2 런타임에 초기화 된 값, 변경되기를 원하지 않습니다.
혜택 : 컴파일 시간에 실행 된 계산으로 런타임의 부담이 줄어 듭니다.
확장 :
기본 유형 및 기준 객체를 수정할 수 있습니다. 기본 유형을 수정할 때 값이 상당히 일정하다는 것을 의미합니다. 객체 참조를 수정하면 참조가 초기화되고 객체를 가리키면 다른 객체로 변경할 수 없습니다 (객체 자체를 수정할 수 있음).
공백 결승
최종에 의해 수정되었지만 초기 값을 제공하지 않는 도메인은 도메인 정의 또는 생성자의 표현식을 사용하여 최종 값을 할당해야합니다 (사용하기 전에 최종 최초화해야 함).
알아채다:
객체가 정적 및 최종에 의해 동시에 수정되면 (컴파일주기 상수) 일반적으로 자본으로 표현되며 밑줄 링크 단어 수정 매개 변수 :
최종 수정 매개 변수 인 경우 매개 변수를 읽을 수 있지만 수정할 수는 없습니다.
사용 예 :
개인 랜덤 랜드 = 새로운 랜덤 (); 개인 정적 임의 임의 = 새로운 랜덤 (); 개인 최종 INT N1 = 12; 개인 최종 int 번호 = rand.nextint (30); 개인 정적 최종 int 번호 2 = 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 */public string finalparam (final string sk) {// sk = "Jeyson"; 최종 방법 :
Final은 또한 메소드를 수정할 수 있으며,이 방법은 서브 클래스에 의해 상속 될 수 없음을 나타냅니다.
최종 사용의 이점 :
1 JDK1.5 이전에 효율이 높았으며 JDK1.5 이후에는 무시할 수 있습니다.
2 메소드 잠금 서브 클래스에서 메소드의 의미가 변경되지 않도록하고 덮어 쓸 수 없도록합니다. 사용의 예 :
공개 최종 문자열 FinalMethod () {return "Hello World"; } 최종 수업 :
클래스에서 상속받지 않으려면 Final을 사용하여 클래스의 사용 예를 수정할 수 있습니다.
공개 최종 클래스 FinalClasstx {private int k; public void getmyword () {시스템. out .println ( "이것은 최종 클래스이고 k의 값은" +getk ()); } public int getk () {return k;} public void setk (int k) {this .k = k;}} 그런 다음 과도 키워드 :
과도는 변수 만 수정할 수 있으므로 변수를 직렬화 할 수 없음을 나타냅니다.
일반적으로 직렬화 가능한 인터페이스 클래스를 상속하고 직렬화가 자동으로 수행됩니다. 과도로 수정 된 변수가 직렬화되면 지정된 대상으로 직렬화되지 않습니다.
그래서,
1 과도에 의해 수정 된 변수는 더 이상 객체 지속성의 일부가 아니며 변수의 내용이 직렬화되어 액세스 할 수 없습니다.
2 과도는 메소드와 클래스가 아닌 변수 만 수정할 수 있습니다.
3 과도에 의해 수정되었는지 여부에 관계없이 직렬화 할 수없는 정적 변수의 사용 예 :
public class trandientex {public static void main (String [] args) {user user = new user (); user.setusername ( "Jeyyson"); user.setpassword ( "123456"); System.out.println ( "직렬화 전 :"); System.out.println ( "username ="+user.getusername ()); System.out.println ( "password ="+user.getpassword ()); // Serialization try {ObjectOutputStream os = new ObjectOutputStream (새 FileOutputStream ( "C : //myresource//test1.txt")); os.writeobject (사용자); os.flush (); os.close (); } catch (예외 e) {e.printstacktrace (); } // deserialization try {objectInputStream은 = 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 (예외 e) {e.printstacktrace (); } system.out.println ( "---------------------------------------------- }} 클래스 사용자는 시리얼이 가능한 {private static final long serialversionuid = 1L; 개인 문자열 사용자 이름; // 과도 개인 과도 문자열 암호 사용; public String getUserName () {return username; } public void setusername (String username) {this.username = username; } public String getPassword () {return password; } public void setpassword (문자열 비밀번호) {this.password = password; }} 확장 : 외부화 가능
직렬화 가능한 인터페이스를 구현하는 클래스가 구현되므로 직렬화는 외부 시아즈블 인터페이스를 구현하는 클래스를 자동으로 구현합니다. 자동으로 직렬화 할 수있는 것은 없으며 과도를 사용하는 것이 결과에 영향을 미치지 않는지 여부.
직렬화가 필요한 경우 WriteExternal 메소드에서 직렬화 할 변수를 수동으로 지정해야합니다.
사용의 예 :
공개 클래스 외부화 가능환 외부화 가능 {개인 과도 문자열 이름 = "SSSS"; @override public void readexternal (objectinput in)은 ioexception, classNotFoundException {name = (string) in.readoBject (); } @override public void writeExternal (ObjectOutput out) IoException {out.writeObject (name); } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public static void main (string [] args) {외부화 가능한 ex = new externalizableEx (); ex.setName ( "Jeyson"); System.out.println ( "외부화 가능한 직렬화 :"); System.out.println (ex.getName ()); // Serialization try {ObjectOutputStream os = new ObjectOutputStream (new FileOutputStream (새 파일 ( "C : //myresource//test2.txt")); os.writeobject (ex); os.flush (); os.close (); } catch (예외 e) {e.printstacktrace (); } // deserialization try {objectInputStream은 = new ObjectInputStream (new FileInputStream (새 파일 ( "c : //myresource//test2.txt")); ex = (externalizableEx) is.ReadObject (); is.close (); System.out.println ( "외부화 가능한 직렬화 :"); System.out.println (ex.getName ()); } catch (예외 e) {e.printstacktrace (); }}} 성명:
결승의 대부분은 "Java 프로그래밍 사고"의 네 번째 판에서 나옵니다.
참조 기사 : //www.vevb.com/article/86996.htm
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.