final 필드 : 초기값이 저장되면 필드 값 수정 불가, 생성자의 매개값을 통해 여러 가지 값을 가질 수 있다.
상수(static final) : 변하지 않는 변수(?), 원주율이나 우주상수 같은 딱 정해진 값(불변의 값), static final 필드는 객체마다 저장되지 않고, 클래스에만 포함된다. 객체 없이 메모리에 박혀 준비되어 있는 놈. 초기값 변경(X)
상수 이름은 모두 대문자로 작성하는 것이 관례.  객체마다 저장할 필요가 없는 공용성
리터럴(literal) : 변수의 값이 변하지 않는 데이터, 소스 코드 내에서 직접 입력된 값을 리터럴.  리터럴은 값의 종류에 따라 정수,실수,문자,논리 리터럴로 구분.

아아.. 뭔가 알듯 하면서도 헷갈린다...

이해하기 쉽게 코드로 이해해보자

public class Person{  //Person 클래스의 final 필드 변수 선언 2개, 그냥 필드 변수 선언 한개
  final String nation = "korea";  // 선언과 동시에 초기화
  final String ssn;       
  String name;
 
   public Person(String ssn, String name){  // 생성자를 이용한 final필드, 필드변수 값을 받아 초기화.
        this.ssn=ssn;
        this.name=name;
      }
}
public class PersonExample{     // 실행
  public 
Person f1 = new Person("sssnnn","이름"); // 객체 생성 & 값 입력
f1.nation="jap";     // 에러
f1.ssn="sdfdsa";    // 초기화된 필드 변수 값 변경 시도 -> 에러
f1.name = "이름2";  // 계속 값을 변경할 수 있음
Person f2 = new Person("12124","이름4");  // 생성자 매개값을 통해 final 필드 값 초기화
∴ final 필드 초기화 후에 새로운 값을 넣을 수 없음. 새로운 객체 생성으로 여러번 초기화 가능

'JAVA' 카테고리의 다른 글

[소소한 설정] 자바 버전 변경에 따른 이클립스, 톰캣 설정  (0) 2021.10.06
cmd에서 javac가 먹통일 때  (0) 2021.10.06
==연산자와 equals 메서드  (0) 2021.10.02
네트워크 기초  (0) 2021.09.28
제네릭  (0) 2021.09.27

+ Recent posts