final
final ๋ณ์์ ์์
final ํค์๋๋ ์ด๋ฆ ๊ทธ๋๋ก ๋! ์ด๋ผ๋ ๋ป์ด๋ค.
๋ณ์์ final ํค์๋๊ฐ ๋ถ์ผ๋ฉด ๋๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
์ฐธ๊ณ ๋ก final์ class, method๋ฅผ ํฌํจํ ์ฌ๋ฌ ๊ณณ์ ๋ถ์ ์ ์๋ค.
final - ์ง์ญ ๋ณ์
package final1;
public class FinalLocalMain {
public static void main(String[] args) {
// final ์ง์ญ ๋ณ์
final int data1;
data1 = 10; // ์ต์ด ํ๋ฒ๋ง ํ ๋น ๊ฐ๋ฅ
//data1 = 20; // ์ปดํ์ผ ์ค๋ฅ ๋ฐ์
// final ์ง์ญ ๋ณ์ 2
final int data2 = 10;
//data2 = 20; // ์ปดํ์ผ ์ค๋ฅ ๋ฐ์
method(10);
}
static void method(final int parameter) {
//parameter = 20; // ์ปดํ์ผ ์ค๋ฅ ๋ฐ์
}
}
- final์ ์ง์ญ ๋ณ์์ ์ค์ ํ ๊ฒฝ์ฐ ์ต์ด ํ๋ฒ๋ง ํ ๋นํ ์ ์๋ค. ์ดํ์ ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
- final์ ์ง์ญ ๋ณ์ ์ ์ธ ์ ๋ฐ๋ก ์ด๊ธฐํํ ๊ฒฝ์ฐ ์ด๋ฏธ ๊ฐ์ด ํ ๋น๋์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ํ ๋นํ ์ ์๋ค.
- ๋งค๊ฐ๋ณ์์ final์ด ๋ถ์ผ๋ฉด ๋ฉ์๋ ๋ด๋ถ์์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค. ๋ฐ๋ผ์ ๋ฉ์๋ ํธ์ถ ์์ ์ ์ฌ์ฉ๋ ๊ฐ์ด ๋๊น์ง ์ฌ์ฉ๋๋ค.
final - ํ๋(๋ฉค๋ฒ ๋ณ์)
package final1;
// final ํ๋ - ์์ฑ์ ์ด๊ธฐํ
public class ConstructInit {
final int value;
public ConstructInit(int value) {
this.value = value;
}
}
- final์ ํ๋์ ์ฌ์ฉํ ๊ฒฝ์ฐ ํด๋น ํ๋๋ ์์ฑ์๋ฅผ ํตํด์ ํ๋ฒ๋ง ์ด๊ธฐํ๋ ์ ์๋ค.
package final1;
public class FieldInit {
static final int CONST_VALUE = 10;
final int value = 10;
public FieldInit(int value) {
//this.value = value; // ์ด๊ธฐ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ๋ถ๊ฐ๋ฅ
}
}
- final ํ๋๋ฅผ ํ๋์์ ์ด๊ธฐํํ๋ฉด ์ด๋ฏธ ๊ฐ์ด ์ค์ ๋์๊ธฐ ๋๋ฌธ์ ์์ฑ์๋ฅผ ํตํด์๋ ์ด๊ธฐํํ ์ ์๋ค.
- static ๋ณ์์๋ final์ ์ ์ธํ ์ ์๋ค.
package final1;
public class FinalFieldMain {
public static void main(String[] args) {
// final ํ๋ - ์์ฑ์ ์ด๊ธฐํ
System.out.println("์์ฑ์ ์ด๊ธฐํ");
ConstructInit constructInit1 = new ConstructInit(10);
ConstructInit constructInit2 = new ConstructInit(20);
System.out.println(constructInit1.value);
System.out.println(constructInit2.value);
// final ํ๋ - ํ๋ ์ด๊ธฐํ
System.out.println("ํ๋ ์ด๊ธฐํ");
FieldInit fieldInit1 = new FieldInit();
FieldInit fieldInit2 = new FieldInit();
FieldInit fieldInit3 = new FieldInit();
System.out.println(fieldInit1.value);
System.out.println(fieldInit2.value);
System.out.println(fieldInit3.value);
// ์์
System.out.println("์์");
System.out.println(FieldInit.CONST_VALUE);
}
}
static final
- FieldInit.MY_VALUE๋ static ์์ญ์ ์กด์ฌํ๋ค. ๊ทธ๋ฆฌ๊ณ final ํค์๋๋ฅผ ์ฌ์ฉํด์ ์ด๊ธฐํ ๊ฐ์ด ๋ณํ์ง ์๋๋ค.
- static ์์ญ์ ๋จ ํ๋๋ง ์กด์ฌํ๋ ์์ญ์ด๋ค. MY_VALUE ๋ณ์๋ JVM ์์์ ํ๋๋ง ์กด์ฌํ๋ฏ๋ก ์ค๋ณต๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋นํจ์จ ๋ฌธ์ ๋ฅผ ๋ชจ๋ ํด๊ฒฐํ ์ ์๋ค.
์์(Constant)
์์๋ ๋ณํ์ง ์๊ณ , ํญ์ ์ผ์ ํ ๊ฐ์ ๊ฐ๋ ์์ด๋ค.
์๋ฐ์์๋ ๋ณดํต ๋จ ํ๋๋ง ์กด์ฌํ๋ ๋ณํ์ง ์๋ ๊ณ ์ ๋ ๊ฐ์ ์์๋ผ๊ณ ํ๋ค.
์๋ฐ ์์ ํน์ง
- static final ํค์๋๋ฅผ ์ฌ์ฉํ๋ค.
- ๋๋ฌธ์๋ฅผ ์ฌ์ฉํ๊ณ ๊ตฌ๋ถ์ _(์ธ๋์ค์ฝ์ด)๋ก ํ๋ค. (๊ด๋ก)
- ์ผ๋ฐ์ ์ธ ๋ณ์์ ์์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ด๋ ๊ฒ ํ๋ค.
- ํ๋๋ฅผ ์ง์ ์ ๊ทผํด์ ์ฌ์ฉํ๋ค.
- ์์๋ ๊ธฐ๋ฅ์ด ์๋๋ผ ๊ณ ์ ๋ ๊ฐ ์์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค.
- ์์๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค. ๋ฐ๋ผ์ ํ๋์ ์ง์ ์ ๊ทผํด๋ ๋ฐ์ดํฐ๊ฐ ๋ณํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
package final1;
// ์์
public class Constant {
// ์ํ ์์
public static final double PI = 3.14;
// ์๊ฐ ์์
public static final int HOURS_IN_DAY = 24;
public static final int MINUTES_IN_HOUR = 60;
public static final int SECONDS_IN_HOUR = 60;
// ์ ํ๋ฆฌ์ผ์ด์
์ค์ ์์
public static final int MAX_USERS = 1000;
}
- ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ค์ํ ์์๊ฐ ์กด์ฌํ ์ ์๋ค. ์ํ, ์๊ฐ ๋ฑ๋ฑ ์ค์ํ์์ ์ฌ์ฉํ๋ ์์๋ถํฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ์ค์ ์ ์ํ ์์๋ค๋ ์๋ค.
- ๋ณดํต ์ด๋ฐ ์์๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ public์ ์์ฃผ ์ฌ์ฉํ๋ค. ๋ฌผ๋ก ํน์ ์์น์์๋ง ์ฌ์ฉ๋๋ค๋ฉด ๋ค๋ฅธ ์ ๊ทผ ์ ์ด์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
- ์์๋ ์ค์์์ ๊ฐ์ ํ๋๋ก ๊ด๋ฆฌํ ์ ์๋ค๋ ์ฅ์ ๋ ์๋ค.
- ์์๋ ๋ฐํ์์ ๋ณ๊ฒฝํ ์ ์๋ค. ์์๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๊ณ , ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ๋ค์์ ํ๋ก๊ทธ๋จ์ ๋ค์ ์คํํด์ผ ํ๋ค.
์ถ๊ฐ๋ก ์์๋ ์ค์์์ ๊ฐ์ ํ๋๋ก ๊ด๋ฆฌํ ์ ์๋ค๋ ์ฅ์ ๋ ์๋ค.
final ๋ณ์์ ์ฐธ์กฐ
final์ ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ์ง ๋ชปํ๊ฒ ๋ง๋๋ค. ์ฌ๊ธฐ์ ๋ณ์์ ๊ฐ์ด๋ผ๋ ๊ฒ์ ๋ญ๊น?
- ๋ณ์๋ ํฌ๊ฒ ๊ธฐ๋ณธํ ๋ณ์์ ์ฐธ์กฐํ ๋ณ์๊ฐ ์๋ค.
- ๊ธฐ๋ณธํ ๋ณ์๋ 10, 20 ๊ฐ์ ๊ฐ์ ๋ณด๊ดํ๊ณ , ์ฐธ์กฐํ ๋ณ์๋ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ ๋ณด๊ดํ๋ค.
- final์ ๊ธฐ๋ณธํ ๋ณ์์ ์ฌ์ฉํ๋ฉด ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
- final์ ์ฐธ์กฐํ ๋ณ์์ ์ฌ์ฉํ๋ฉด ์ฐธ์กฐ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
- ์ฐธ์กฐ ๋์์ ๊ฐ์ฒด ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
- ์ฐธ์กฐํ ๋ณ์์ final์ด ๋ถ์ผ๋ฉด ์ฐธ์กฐํ ๋ณ์์ ๋ค์ด์๋ ์ฐธ์กฐ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ์ง ๋ชปํ๋ค.
์ด์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์๋ค๋ ๋ป์ด๋ค.
ํ์ง๋ง ์ฐธ์กฐํ ๋ณ์์ ๋ค์ด์๋ ์ฐธ์กฐ๊ฐ๋ง ๋ณ๊ฒฝํ์ง ๋ชปํ๊ณ value ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
- ์ฐธ์กฐํ ๋ณ์์ final์ด ๋ถ์ผ๋ฉด ์ฐธ์กฐํ ๋ณ์์ ๋ค์ด์๋ ์ฐธ์กฐ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ์ง ๋ชปํ๋ค.
'Today I Learned(TIL) > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java ๊ธฐ๋ณธํธ ๊ฐ์_๋คํ์ฑ1 (0) | 2024.12.02 |
---|---|
Java ๊ธฐ๋ณธํธ ๊ฐ์_์์ (0) | 2024.12.01 |
Java ๊ธฐ๋ณธํธ ๊ฐ์_์ ๊ทผ ์ ์ด์ (1) | 2024.11.28 |
Java ๊ธฐ๋ณธํธ ๊ฐ์_ํจํค์ง (0) | 2024.11.26 |
Java ๊ธฐ๋ณธํธ ๊ฐ์_์์ฑ์ (0) | 2024.11.26 |