코딩배움일지/JAVA
Java 11일차 1(static)
karatejin
2022. 11. 24. 09:54
static = 공유(도깨비)
클래스 존재자체가 메모리 역할을 하고>?
생성을 하지 않아도 변수를 메모리에 할당 하고 있다.
정의할때부터 메모리 영역을 할당한다.
import lombok.Data;
/*
공유영역
*/
@Data
public class Product {/*선언 되자마자*/
private static int autoIncrement = 20220000; /*새로 만들어지지 않고 공유하는 것일뿐*/
/*메모리 할당*/
private int serialNumber;
private String name;
public Product(String name) {
this.serialNumber = ++autoIncrement; /*생성자 안에서만 증가시키자*/
this.name = name;
}
}
static autoIncrement
원래 쓰던 영역에서 바뀐다.
생성자가 호출이되면 1이 증가된다.
증가한 것을 serialNumber에 대입
public class ProductMain {
public static void main(String[] args) {
Product product1 = new Product("아이폰14");
Product product2 = new Product("아이폰14_Mini");
System.out.println(product1);
System.out.println(product2);
}
}
static 변수 static 메소드 쓰기
static method는 언제든지 static 변수에 접근 생성을 하지 않더라도 쓸수 있다.
import lombok.Data;
/*
공유영역
*/
@Data
public class Product { /*선언되자 마자*/
private static int autoIncrement = 20220000; /*새로 만들어지지 않고 공유하는 것일뿐*/ /*메모리 할당.*/
private int serialNumber;
private String name;
public Product(String name) {
this.serialNumber = ++autoIncrement; /*생성자 안에서만 증가시키자*/
this.name = name;
}
public static void print(){
System.out.println(autoIncrement);
//System.out.println(serialNumber); /*접근불가*/ /*애초에 있지도 않다.*/
Product product = new Product("모니터");
System.out.println(product.serialNumber);
}
}
Product(serialNumber=20220001, name=아이폰14)
Product(serialNumber=20220002, name=아이폰14_Mini)
20220002
20220003
20220003
20220004
20220004
20220005