자바[Java] 상수 final란

반응형

final 필드는 최종적인 값을 갖고 있고, 값을 변경할 수 없다.

final 필드는 한 번의 초기값을 지정할 수 있다.

public class examfinal{  
// 기본 필드에 final의 내용을 작성.  
final String nation = "Korean";  // 이미 korean이라는값을주고 선언 되었고  
finaln String ssn;  // ssn은 아직 값은 안준 상태로 선언 되었다.  
  
public examfinal(String ssn){  // ssn이라는 값을 주기 위해선 우선 this를 사용해 지정시킨다.  
  
this.ssn = ssn;  
  
}  
  
}
public class examfinaltest {  
  
public static void main(String []args){  
  
// examfinal을 사용하기 위해 선언한다.examfinal ef = new examfinal("8555");  // examfinal의 패키지에 있던 String ssn의 값을 선언한다.  
  
System.out.println(ef.nation);System.out.println(ef.ssn);  
  
}  
  
}

실행 결과 :  
korean  
8555가 출력된다.

( static final) 상수는 이름을 전부 대문자로 작성하는 것이 관례(안 해도 됨)이고 다른 단어가 결합될 시 _(언더바)를 추가하여 사용한다.

※ 공용 데이터로 사용하며 메소드 영역에 클래스 별로 관리되는 불변의 정적 필드이다.

public class examstatic{  
  
static final double TEST_T = 8888;  // TEST_T의 값은 8888  
static final double TEST_T_T;  
  
static {  
  
TEST_T_T = 9 * Math.PI * TEST_T * TEST_T;  // TEST_T_T의 값은 9 * pi * TEST_T * TEST_T이다.  
  
}  
  
}

public class examstatictest{  
  
public static void main(String [] args){  
  
System.out.println(examstatic.TEST_T);  
System.out.println(examstatic.TEST_T_T);  
  
}  
  
}

실행결과  
8888  
2.2335746606044455E9

패키지( package )는 클래스를 기능별로 묶어 그룹의 이름을 붙여 놓는 것. 다른 곳의 패키지 파일을 가져다 쓰기 위해 import문을 이용해 사용할 수 있다.

※ 같은 패키지 안에 클래스는 그냥 사용할 수 있다.

※ import는.*로 사용할 수 있고 ctrl + shift + o를 누르면 자동으로 추가할 수 있다.

[1번 패키지]  
class a{  
  
}

[1번 패키지]  
public class b{  
  
a A;  
  
}
[2번 패키지]  
  
import  **경로.***;  
  
public class c{  
  
// a A; 1번 패키지 안 a클래스는 public 가 붙어있지 않아 오류가 나타남.  
b B;  
  
}

접근 제한자. (Access Modifier)

클래스 및 클래스의 구성 멤버에 대한 접근을 제한하는 역할을 한다.

※ 다른 패키지에서 클래스를 사용하지 못하도록 특정 필드와 메소드를 숨긴다.(쉽게 말해 잠금장치 같은 것.)

※ public, protected, default, private 종류로 구분되며 가장 많이 쓰는 것은 , public(내.
외부 클래스에서 사용할 수 있게 허용)와 private(모든 외부 클래스에서 작업할 수 없게 차단)로 나뉜다.

[1번 패키지]  
public class A{  
  
A a1 = new A(true);  
A a2 = new A(1);  
A a3 = new A("문자");  
  
public A(boolean b){  
}  
A(int b){  
}  
private A(String s){  
}  
  
}

[1번 패키지]  
public class B{  
  
A a1 = new A(true);  
A a2 = new A(1);  // 같은 패키지 안에 있으면 여기까지 사용 가능하다.  
  
}
[2번 패키지]  
  
import  **경로.***;  
public class C{  
  
A a1 = new A(true);  // 다른 패키지 안에 있으면 여기까지 사용 가능하다.  
  
}
반응형