2013년 10월 21일 월요일

자바강좌ㅑ, 자바교육, 자바변수, 자바 상수, Java Constant, final변수, final메소드, final클래스] 자바에서는 Final 변수가 상수이다.

자바강좌ㅑ, 자바교육, 자바변수, 자바 상수, Java Constant, final변수, final메소드, final클래스]   자바에서는 Final 변수가 상수이다.
 
자바에서는 Final 변수가 상수이다.
예)final static double PI = 3.1415;
 
final과 static을 같이 정의하는 경우 그 변수는 상수처럼 사용되면서 모든 객체에서 공유하는 전역변수가 된다.
 
만약 메소드를 final로 정의했다면 하위클래스에서 재정의 불가하다.
클래스를 final로 정의했다면 그 클래스를 상속할 수 없다.
 
비초기화 화이널 변수(final 변수 선언시 초기치 주어지지 않은 변수: blank constant)의 경우에는 프로그램 내에서 오직 한번 대입 가능
 
초기치를 간단한 초기화 수식만으로 계산 할 수 없거나(반복문 등이 필요한 경우)초기화 도중 예외 발생하여 예외 처리가 필요한 경우
이렇게 생성된 final 변수는 값을 변경 할 수 없고 변경하려 할 경우 에러가 발생한다.
 
클래스 상수로 주로 이용, 주로 대문자로 표시한다.
 
[예제]
 
package onj;
class FinalVarTest
{
 // final 클래스 변수, 모든 객체에서 공유가능
    static final double PI = 3.14;  
    static int count = 0;
    final int id;    // Non static 화이널  변수(final 인스턴스변수)
    //생성자
    FinalVarTest()    {
      // Non static 화이널  변수(final 인스턴스변수) 한번은 대입가능
      id = count++;  
    }
    public static void main( String[] args )    {
     //메소드 내부 ststic 선언 불가
     //static int i=0;
     
        System.out.println( "FinalVarTest.PI = " + FinalVarTest.PI );
        // FinalVarTest.PI = 3; // 오류난다, final변수의 내용은 수정할 수 없다.
        FinalVarTest obj1 = new FinalVarTest();
        FinalVarTest obj2 = new FinalVarTest();
        System.out.println( "obj1.id = " + obj1.id );
        System.out.println( "obj2.id = " + obj2.id );        
   // obj1.id = 1;  // 오류:화이널 변수의 내용을 수정불 가
   final int local;   // non static 지역 변수
         local = 3;        // non static  화이널 변수는 한번은 대입할 수 있다.한
         //local = 5;      //한번더 대입 불가
         
         m( 4 );
         
     }
     static void m( final int param )  // Final 매개 변수
     {
         System.out.println( "m(int): param = " + param ); 
         // param = 7;  // final 변수의 내용은 수정할 수 없다.
     }
 }       
 
 
[결과]
 

댓글 없음:

댓글 쓰기