1. μλ° static ν€μλμ κ°μ
μλ°μ static ν€μλλ ν΄λμ€ λ©€λ²λ₯Ό μ μΈν λ μ¬μ©λλ©°, ν΄λΉ λ©€λ²κ° μΈμ€ν΄μ€μ μνμ§ μκ³ ν΄λμ€μ μνλ κ²μ μλ―Έν©λλ€. λ³μ, λ©μλ, λΈλ‘ λ± μ¬λ¬ λΆλΆμ μ μ©λ μ μμΌλ©°, νΉμ μΈμ€ν΄μ€μ μνλ κ²μ΄ μλλΌ ν΄λμ€ μ체μ μνκ² λ©λλ€.
ν΄λμ€ λ©€λ²κ° staticμΌλ‘ μ μΈλλ©΄, ν΄λΉ λ©€λ²λ νλ‘κ·Έλ¨μ΄ μ€νλ λ μλμΌλ‘ λ©λͺ¨λ¦¬μ μ¬λΌκ°λ©°, μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ λ νΈμΆν μ μμ΅λλ€. μ΄λ ν΄λΉ λ©€λ²κ° μΈμ€ν΄μ€μ μμ±κ³Όλ μκ΄ μμ΄ μ¬μ©λ μ μμμ μλ―Ένλ©°, μ μ (static)μΌλ‘ μ μΈλ λ©€λ²λ ν΄λμ€μ μνλ―λ‘ ν΄λμ€λͺ .λ©€λ²λͺ ννλ‘ μ κ·Όν μ μμ΅λλ€.
μλ°μμ static ν€μλλ λ³μ, λ©μλ, λΈλ‘ λ±μ μ μΈν λ μ¬μ©λκ³ , μ΄λ₯Ό ν΅ν΄ νΈλ¦¬ν νλ‘κ·Έλλ° κ΅¬μ‘°λ₯Ό ꡬμ±ν μ μμ΅λλ€. μ΄μ λΆν° static λ³μ, λ©μλ, λΈλ‘μ λν΄ μμΈν μμ보λλ‘ νκ² μ΅λλ€.
2. static λ³μμ νΉμ§κ³Ό μ¬μ©λ²
νΉμ§
- static λ³μλ μΈμ€ν΄μ€μ μνλ κ²μ΄ μλλΌ ν΄λμ€ μ체μ μνκΈ° λλ¬Έμ, ν΄λΉ ν΄λμ€μ λͺ¨λ μΈμ€ν΄μ€κ° 곡μ ν©λλ€.
- νλ‘κ·Έλ¨μ΄ μ€νλ λ ν λ²λ§ μμ±λλ©°, λͺ¨λ μΈμ€ν΄μ€κ° λμΌν κ°μ κ°μ§λλ€.
- static λ³μλ λ©λͺ¨λ¦¬μ 곡μ μμμΈ static μμμ μ μ₯λμ΄ νλ‘κ·Έλ¨ μ’ λ£ μκΉμ§ μ μ§λ©λλ€.
μ¬μ©λ²
- static λ³μλ₯Ό μ μΈν λμλ λ³μ μμ "static" ν€μλλ₯Ό λΆμ λλ€.
- μ΄κΈ°νλ μ μΈκ³Ό λμμ ν μλ μκ³ , static λΈλ‘μ ν΅ν΄ μ΄κΈ°νν μλ μμ΅λλ€.
- static λ³μμ μ κ·Όν λλ ν΄λμ€λͺ .λ³μλͺ ννλ‘ μ κ·Όν©λλ€.
- static λ³μλ μΈμ€ν΄μ€ μμ± μμ΄λ νΈμΆ κ°λ₯νλ©° ν΄λμ€ λ΄λΆμμλ§ μ¬μ©ν μ μμ΅λλ€.
public class MyClass {
// static λ³μ μ μΈ λ° μ΄κΈ°ν
public static int count = 0;
// static λΈλ‘μ ν΅ν μ΄κΈ°ν
static {
count = 10;
}
public void increaseCount() {
count++; // static λ³μλ₯Ό μΈμ€ν΄μ€ λ©μλμμ μ¬μ© κ°λ₯
}
public static void main(String[] args) {
System.out.println(MyClass.count); // static λ³μ νΈμΆ
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
obj1.increaseCount(); // static λ³μ λ³κ²½
System.out.println(MyClass.count); // λ³κ²½λ static λ³μ νΈμΆ
}
}
μμ μμ μμ countλ static λ³μλ‘ μ μΈλμ΄ μμΌλ©°, λͺ¨λ MyClass μΈμ€ν΄μ€κ° 곡μ νλ λ³μμ λλ€. μ΄κΈ°κ°μΌλ‘ 0μ μ§μ νκ³ , static λΈλ‘μ ν΅ν΄ κ°μ 10μΌλ‘ λ³κ²½νμμ΅λλ€. increaseCount() λ©μλλ μΈμ€ν΄μ€ λ©μλμ΄μ§λ§, static λ³μμΈ countλ₯Ό μ¬μ©ν μ μμ΅λλ€. main() λ©μλμμλ ν΄λμ€λͺ μ ν΅ν΄ count κ°μ μΆλ ₯νκ³ , κ°μ²΄λ₯Ό μμ±νμ¬ increaseCount() λ©μλλ₯Ό νΈμΆνμ¬ count κ°μ λ³κ²½ν ν λ€μ μΆλ ₯ν©λλ€. μΆλ ₯ κ²°κ³Όλ 10 -> 11λ‘ λ³κ²½λμμμ νμΈν μ μμ΅λλ€.
3. static λ©μλμ νΉμ§κ³Ό μ¬μ©λ²
νΉμ§
- static λ©μλλ ν΄λΉ ν΄λμ€μ μΈμ€ν΄μ€μλ 무κ΄νκ² νΈμΆν μ μλ ν΄λμ€ λ©μλμ λλ€.
- μΈμ€ν΄μ€ μμ± μμ΄λ νΈμΆν μ μμΌλ―λ‘, κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ μ νΈλ¦¬ν° λ©μλλ₯Ό ꡬνν λ μ£Όλ‘ μ¬μ©λ©λλ€.
- static λ©μλλ μ€λ²λΌμ΄λ©λ μ μμΌλ©°, μμ ν΄λμ€μμ λμΌν μ΄λ¦μ static λ©μλλ₯Ό μ μΈν μ μμ΅λλ€.
- static λ©μλλ this ν€μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
μ¬μ©λ²
- static λ©μλλ₯Ό μ μΈν λμλ λ©μλ μμ "static" ν€μλλ₯Ό λΆμ λλ€.
- static λ©μλ λ΄μμλ static λ³μλ§ μ§μ μ κ·Όν μ μμΌλ©°, μΈμ€ν΄μ€ λ³μλ λ©μλλ μΈμ€ν΄μ€λ₯Ό μμ±νμ¬ μ κ·Όν΄μΌ ν©λλ€.
- static λ©μλ λ΄λΆμμ λ€λ₯Έ static λ©μλλ₯Ό νΈμΆν λμλ ν΄λμ€λͺ .λ©μλλͺ ννλ‘ νΈμΆν©λλ€.
- static λ©μλλ μΈμ€ν΄μ€ λ©μλμ λ§μ°¬κ°μ§λ‘ λ©μλ μ€λ²λ‘λ©μ΄ κ°λ₯ν©λλ€.
public class MyMath {
// static λ©μλ μ μΈ
public static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
int result = MyMath.add(3, 5); // static λ©μλ νΈμΆ
System.out.println(result); // κ²°κ³Ό μΆλ ₯
}
}
μμ μμ μμ add() λ©μλλ static λ©μλλ‘ μ μΈλμ΄ μμΌλ©°, λ κ°μ μ μλ₯Ό 맀κ°λ³μλ‘ λ°μμ λν κ°μ λ°νν©λλ€. main() λ©μλμμλ ν΄λμ€λͺ μ ν΅ν΄ add() λ©μλλ₯Ό νΈμΆνκ³ , κ²°κ³Όλ₯Ό μΆλ ₯ν©λλ€. μΆλ ₯ κ²°κ³Όλ 8μ΄ λ©λλ€. static λ©μλλ μΈμ€ν΄μ€ μμ± μμ΄λ νΈμΆ κ°λ₯νλ―λ‘, κ°μ²΄λ₯Ό μμ±νμ§ μκ³ λ μ νΈλ¦¬ν° λ©μλλ‘ νμ©ν μ μμ΅λλ€.
4. static λΈλ‘μ μν κ³Ό μ©λ
μν
- static λΈλ‘μ ν΄λμ€ μ΄κΈ°ν μ μ μ μΈ μμ μ μννκΈ° μν μ½λ λΈλ‘μ λλ€.
- νλ‘κ·Έλ¨ μ€ν μ ν΄λμ€κ° λ©λͺ¨λ¦¬μ λ‘λ©λ λ λ¨ ν λ² μ€νλλ©°, μ΄κΈ°νλ κ°μ static λ³μμ ν λΉν©λλ€.
- ν΄λμ€ λ΄λΆμ μ¬λ¬ κ°μ static λΈλ‘μ΄ μμ κ²½μ°, μ μΈλ μμλλ‘ μ€νλ©λλ€.
μ©λ
- static λΈλ‘μ μ£Όλ‘ static λ³μμ μ΄κΈ°νλ 볡μ‘ν μ΄κΈ°ν μμ μ μννλλ° μ¬μ©λ©λλ€.
- static λΈλ‘μ λ©μλ νΈμΆ μμ΄λ μ€νλλ―λ‘, 볡μ‘ν μ΄κΈ°ν μμ μ μννλλ° μ μ©ν©λλ€.
- μλ₯Ό λ€μ΄, λ°μ΄ν°λ² μ΄μ€ μ°κ²° μ€μ , νμΌ λ‘λ©, μΈλΆ API νΈμΆ λ±μ μ΄κΈ°ν μμ μ static λΈλ‘μμ μ²λ¦¬ν μ μμ΅λλ€.
public class DatabaseConfig {
public static String DB_URL;
public static String DB_USERNAME;
public static String DB_PASSWORD;
static {
// λ°μ΄ν°λ² μ΄μ€ μ€μ μ μ΄κΈ°ν
DB_URL = "jdbc:mysql://localhost:3306/mydb";
DB_USERNAME = "admin";
DB_PASSWORD = "password";
// λ°μ΄ν°λ² μ΄μ€ μ°κ²° μ΄κΈ°ν
try {
Connection conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
// ...
} catch (SQLException e) {
e.printStackTrace();
}
// νμΌ λ‘λ© λ± λ³΅μ‘ν μ΄κΈ°ν μμ
μν
// ...
}
public static void main(String[] args) {
// static λΈλ‘μ μν΄ μ΄κΈ°νλ κ°λ€μ μ¬μ©
System.out.println("DB URL: " + DatabaseConfig.DB_URL);
System.out.println("DB Username: " + DatabaseConfig.DB_USERNAME);
System.out.println("DB Password: " + DatabaseConfig.DB_PASSWORD);
}
}
μμ μμ μμλ DatabaseConfig ν΄λμ€ λ΄λΆμ static λΈλ‘μ μ μΈνμ¬ λ°μ΄ν°λ² μ΄μ€ μ€μ μ μ΄κΈ°ννκ³ , λ°μ΄ν°λ² μ΄μ€μ μ°κ²°νκ³ , νμΌ λ‘λ© λ±μ μ΄κΈ°ν μμ μ μνν©λλ€. static λΈλ‘μ ν΄λμ€ λ‘λ© μ λ¨ ν λ² μ€νλλ―λ‘, main() λ©μλμμ static λΈλ‘μ μν΄ μ΄κΈ°νλ λ³μλ€μ μ¬μ©νμ¬ μΆλ ₯ν©λλ€. μΆλ ₯ κ²°κ³Όλ μ΄κΈ°νλ κ°λ€μ΄ μ μΆλ ₯λλ κ²μ νμΈν μ μμ΅λλ€. static λΈλ‘μ μ¬μ©ν¨μΌλ‘μ¨ μ΄κΈ°ν μμ μ κ°νΈνκ² μ²λ¦¬ν μ μμΌλ©°, μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ λμΌ μ μμ΅λλ€.
5. μλ° staticμ μ¬μ© μμ λ° μ₯λ¨μ
μ¬μ© μμ
- μ νΈλ¦¬ν° λ©μλ: static λ©μλλ μΈμ€ν΄μ€ μμ± μμ΄ νΈμΆν μ μμΌλ―λ‘, μ νΈλ¦¬ν° λ©μλλ₯Ό ꡬνν λ μ£Όλ‘ μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄, Math ν΄λμ€μ abs() λ©μλλ Arrays ν΄λμ€μ sort() λ©μλ λ±μ static λ©μλλ‘ κ΅¬νλμ΄ μμ΅λλ€.
int absValue = Math.abs(-10); // μ μμ μ λκ°μ ꡬνλ μ νΈλ¦¬ν° λ©μλ
int[] nums = {5, 2, 8, 1};
Arrays.sort(nums); // λ°°μ΄μ μ λ ¬νλ μ νΈλ¦¬ν° λ©μλ
- μμ: static λ³μλ μ¬λ¬ κ°μ μΈμ€ν΄μ€μμ κ°μ 곡μ νλ―λ‘, μμλ₯Ό μ μΈν λ λ§μ΄ μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄, Math ν΄λμ€μ PIλ String ν΄λμ€μ EMPTY λ¬Έμμ΄μ static final λ³μλ‘ μ μΈλμ΄ μμ΅λλ€.
double circleArea = Math.PI * radius * radius; // μμ λμ΄ κ³μ°
String str = "Hello";
if (str.equals("")) {
// ...
}
- ν©ν 리 λ©μλ: μΈμ€ν΄μ€ μμ±μ λ΄λΉνλ factory λ©μλλ κ°μ²΄λ₯Ό μμ±νκ³ λ°νν λ static λ©μλλ‘ κ΅¬νλ©λλ€. μλ₯Ό λ€μ΄, Calendar ν΄λμ€μ getInstance() λ©μλλ static λ©μλλ‘ νμ¬ λ μ§μ μκ°μ κ°μ§κ³ μλ Calendar κ°μ²΄λ₯Ό λ°νν©λλ€.
Calendar cal = Calendar.getInstance(); // νμ¬ λ μ§μ μκ°μ κ°μ§λ Calendar κ°μ²΄λ₯Ό μμ±
μ₯λ¨μ
μ₯μ
- static λ©€λ²λ ν΄λμ€μ μΈμ€ν΄μ€ μμ± μμ΄ νΈμΆν μ μμ΄, νΈλ¦¬ν μ κ·Όμ΄ κ°λ₯ν©λλ€.
- μ νΈλ¦¬ν° λ©μλλ μμ, ν©ν 리 λ©μλ λ±μ ꡬνν λ μ μ©νκ² μ¬μ©ν μ μμ΅λλ€.
- λ©λͺ¨λ¦¬ λλΉ μμ΄ ν λ²λ§ μ΄κΈ°νλμ΄ ν΄λμ€ μ 체μμ 곡μ λλ κ°λ€μ λ€λ£° μ μμ΅λλ€.
λ¨μ
- static λ©€λ²κ° λ§μμ§μλ‘ ν΄λμ€μ μμ‘΄μ±μ΄ λμμ§κ³ , 볡μ‘λκ° μ¦κ°ν μ μμ΅λλ€.
- μΈμ€ν΄μ€ λ³μλ λ©μλλ₯Ό μ°Έμ‘°ν μ μμ΄, κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ νΉμ±μ μ νν μ μμ΅λλ€.
- thread-safeνμ§ μμ μ μμΌλ―λ‘, synchronized μμ½μ΄λ₯Ό μ¬μ©νμ¬ λκΈ°ν μμ μ΄ νμν μ μμ΅λλ€.
μ μ (static) λ©€λ²μ μ¬μ©μ νΈλ¦¬ν¨κ³Ό ν¨μ¨μ±μ μ 곡νμ§λ§, κ°μ²΄ μ§ν₯μ μΈ νλ‘κ·Έλλ°μ μμΉμ μλ°°ν μλ μμΌλ―λ‘ μ μ ν μν©μμ μ¬μ©ν΄μΌ ν©λλ€. μ νΈλ¦¬ν° λ©μλμ μμ, ν©ν 리 λ©μλ λ±μ μ κ·Ή νμ©νμ¬ μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ λμ΄λ κ²μ΄ μ’μ΅λλ€.
λκΈ