의미: final은 [한 번만 할당할 수 있음]을 의미합니다.
할당 위치: [선언 시간]에 할당, [생성자에서 할당]
예: #🎜🎜 ## 🎜🎜#package com.dada.data;
public class TestFinal {
// 1.声明时赋值
private final int i = 0;
private final int j;
public TestF() {
// 2.构造方法中赋值
j = 10;
}
}
참고: final은 한 번만 할당할 수 있다고 말하지만 Java에는 [두 가지 유형의 값], [기본 데이터 유형의 값] 및 [values of of 참조 데이터형] ], 기본 데이터형의 경우 할당은 [변수에 값을 직접 할당]을 의미하고, 참조 데이터형은 [변수에 참조를 할당]을 의미합니다.
따라서 값을 한 번만 지정할 수 있다는 의미는 두 가지 상황으로 나눌 수 있습니다. 1. 기본 데이터 유형인 경우 값 자체를 변경할 수 없습니다. 참조 데이터 유형의 값입니다. 즉, 참조는 변경할 수 없지만 참조되는 내용은 변경할 수 있습니다.
예:학생 수업 정의:
package com.dada.data;
public class Student {
private int id;
private String name;
private int score;
public Student(int id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "id: " + id + "\t name:" + name + "\tscore:" + score;
}
}
#🎜🎜 # 테스트 클래스 정의:
package com.dada.data; public class TestFinal { private final Student ss; public static void main(String[] args) { TestFinal tf = new TestFinal(); } public TestFinal() { Student student = new Student(1, "dada", 3); // 第一次赋值 ss = student; System.out.println(ss.toString()); // 修改引用所对应的对象的内容 student.setId(2); student.setName("hehe"); student.setScore(10); System.out.println(ss.toString()); } }출력 결과:
id: 1 name:dada score:3 id: 2 name:hehe score:10요약: #🎜 🎜#
위의 예를 보면 최종 변수가 참조된 변수의 내용이 여전히 수정될 수 있다는 것을 알 수 있습니다. 수정이 불가능하다고 느끼는 이유는 다음과 같습니다. #🎜 🎜#1 .보통 변수를 정의할 때 값을 할당합니다. 이때 기본 유형 데이터는 절대 변경할 수 없습니다.
2. 참조 유형 데이터의 경우 해당 참조를 얻을 수 없기 때문에 참조 유형 데이터도 수정할 수 없다고 느낍니다.위 내용은 Java Final의 본질에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!