Java의 final 변수 사용 요약
final double PI = 3.14;
프로그램에서 PI라는 상수를 사용할 때, 그 값은 3.14입니다. 만약에 프로그램에서final로 정의된 상수에 다시 값을 부여하면 컴파일러는 받아들일 수 없습니다.final 키워드에 정의된 변수는 설명할 때 값을 부여해야 합니다.final은 기본 데이터 형식의 상수를 수식할 수 있을 뿐만 아니라 대상 인용도 수식할 수 있습니다.수조도 하나의 대상 인용으로 사용할 수 있기 때문에final은 수조를 수식할 수 있습니다.일단 하나의 대상 인용이final로 수식되면, 하나의 대상만 가리킬 수 있고, 다른 대상으로 바꿀 수 없습니다.static이자final의 필드는 변경할 수 없는 저장 공간만 차지합니다.다음 예제:
import static java.lang.System.out;
import java.util.Random;
class Test{
int i = 0;
}
public class FinalData {
static Random rand = new Random();
private final int VALUE_1 = 9;//final
private static final int VALUE_2 = 10;// ;
private final Test test = new Test();
private Test test2 = new Test();
private final int[] a = {1,2,3,4,5,6};
private final int i4 = rand.nextInt(20);
private static final int i5 = rand.nextInt(20);
public String toString()
{
return i4 + "" + i5 + "";
}
public static void main(String[] args) {
FinalData data = new FinalData();
//data.test = new Test();
//data.VALUE_2++;
data.test2 = new Test();
for(int i=0; i<data.a.length; i++)
{
//a[i] = 9;
}
out.println(data);
out.println("data2");
out.println(new FinalData());
out.println(data);
}
}
final로 정의된 대상은 유일한 대상만 가리킬 수 있고 다른 대상을 가리킬 수 없지만 대상 자체의 값은 확실히 바꿀 수 있다. 그러면 상수가 진정으로 변경할 수 없도록 하기 위해 상수를staticfinal로 설명할 수 있다.다음 예제:
import static java.lang.System.out;
import java.util.Random;
public class FinalStaticData {
private static Random rand = new Random();
private final int a1 = rand.nextInt(10);
private static final int a2 = rand.nextInt(10);
public static void main(String[] args) {
FinalStaticData fdata = new FinalStaticData();//
out.println(" a1 :" + fdata.a1);
out.println(" a2 :" + fdata.a2);
FinalStaticData fdata2 = new FinalStaticData();//
out.println(" a1 :" + fdata2.a1);
out.println(" a2 :" + fdata2.a2);
}
}
다시 실례화된 대상 호출 a1의 값: 9다시 실례화된 대상 호출 a2의 값: 2
다시 실례화된 대상 호출 a1의 값: 1
다시 실례화된 대상 호출 a2의 값: 2
요약:
final 상수는 고정불변이 아니라고 정의하고 무작위 수를final에 변수를 부여하면 프로그램이 실행될 때마다 a1의 값을 바꿀 수 있지만 a2는staticfinal 형식으로 정의되기 때문에 메모리에서 a2를 위해 고정된 구역을 열었습니다. 다시 FianlStaticData 대상을 실례화할 때 a2라는 메모리 구역을 가리키기 때문에 a2의 값은 변하지 않습니다.
기술:
JAVA에서 전역 상수를 정의합니다. 일반적으로public static final 수식을 사용합니다. 이런 상수는 정의할 때만 값을 부여합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.