TIL | Java - static

2022. 10. 13. 12:45·Java

정적제한자 static

더보기

Count 클래스

package day08.static_.var;

public class Count {
	
	public int a;
	// static은 접근제어자 다음에 붙음
	public static int b;
	
	
	
}

메인

package day08.static_.var;

public class MainClass {

	public static void main(String[] args) {

		Count c1 = new Count();
		c1.a++;		
		c1.b++;		
		
		System.out.println("일반변수 : " + c1.a);
		System.out.println("정적변수 : " + c1.b);
		System.out.println();
		
		Count c2 = new Count();
		c2.a++;
		c2.b++;
		
		System.out.println("일반변수 : " + c2.a);
		System.out.println("정적변수 : " + c2.b);
		System.out.println();
		
		Count c3 = new Count();
		c3.a++;
		c3.b++;
		
		System.out.println("일반변수 : " + c3.a);
		System.out.println("일반변수 : " + c3.b);
		
		//지금 c1.b와 c2.b 값은 3
		
		//static b는 객체 바깥에 생성됨
		
		//static은 객체 생성없이 바로 접근 가능하다.
		Count.b++;
		System.out.println(Count.b); //4
		
		
	}
}

 

 

더보기

Count 클래스

package day08.static_.method;

public class Count {

	public int a;
	public static int b;

	//일반메서드 - 일반변수, 정적변수 둘다 사용가능
	public int some1() { //일반이라 일반변수 가능
		a = 10;	//ok
		return ++b; //ok
	}


	//정적메서드 - 정적변수만 사용가능(단, 객체생성을 통해서는 사용이 가능)
	public static int some2() { 
		//a = 10; //no - 정적 메서드라 정적만 가능(아니면 객체만들어서 불러오기
		Count c = new Count();
		c.a = 10;//ok
		
		return ++b; //ok
		
		
	}


}

메인

package day08.static_.method;

public class MainClass {
	
	public static void main(String[] args) {
		
		Count c = new Count();
		c.some1(); //일반메서드
		c.some2(); //정적메서드
		
		//정적메서드 - 객체생성 없이 사용 (단,static 끼리만~!)
		Count.some2();		
		
		//현재 b는 ? 3
		
		//main은 static! 그래서 지금껏 객체생성해서 접근했던것
		a();
		
//		Math.random();
//		
//		Arrays.toString();
		
	}
	
	public static void a() {
		
	}
	
}

 

정적 초기화자 - 거의 사용하지 않음

더보기

클래스

package day08.static_.singleton;

public class Computer {
	
	
	public static int a = 10;
	
	//정적초기화자 - 1회만 실행됨
	static {
		System.out.println("단 1번 실행 - 클래스명이 호출될 때");
	}
	
	
}

메인

package day08.static_.singleton;

public class MainClass {
	
	public static void main(String[] args) {
		
		System.out.println(Computer.a);
		System.out.println(Computer.a);
		System.out.println(Computer.a);
		System.out.println(Computer.a);
		
		4번실행해도 딱 1번 실행
		

		
	}
	
}

 

 

싱글톤 패턴(singleton pattern)

 

 

싱글톤 클래스

package day08.static_.singleton;

public class Singleton {
	
	//디자인패턴 - 클래스를 설계하는 기법
	//싱글톤패턴 - 객체를 1개만 생성되도록 설계하는 기법
	
	//1.나 자신의 객체를 멤버변수로 선언하고,1개로 고정한다.
	private static Singleton instance = new Singleton();
	
	//2.객체생성을 못하도록 생성자를 private처리
	private Singleton() {} //메인에서 객체생성 불가!
	
	//3. s변수(나자신객체)를 getter로 반환
	//   static 키워드를 붙임
//	public 반환유형 이름() {	
//	}
	public static Singleton getInstance(){
		
		return instance;
		
	}
	
	public String site = "aaa";
}
package day08.static_.singleton;

public class MainClass {
	
	public static void main(String[] args) {
		
		//멤버에 static 없으면 무한루프
//		Singleton instance = new Singleton();
		
		Singleton s = Singleton.getInstance();
		Singleton s2 = Singleton.getInstance();
		Singleton s3 = Singleton.getInstance();
		
		System.out.println(s == s2 && s2 == s3);
		
		
		//s의 위치와 site위치가 똑같기때문에.. site가 static이 아니어도 값이 바뀐다.
		s.site = "이순신";
		System.out.println(s2.site); 
		System.out.println(s3.site); 
		
	}
	
}

 

'Java' 카테고리의 다른 글

TIL | Java - abstract  (0) 2022.10.13
TIL | Java - final  (0) 2022.10.13
TIL | Java - OOP 특징 : 3.다형성  (0) 2022.10.12
TIL | Java - 키워드 this & super  (0) 2022.10.11
TIL | Java - Overloading : 오버로딩  (0) 2022.10.07
'Java' 카테고리의 다른 글
  • TIL | Java - abstract
  • TIL | Java - final
  • TIL | Java - OOP 특징 : 3.다형성
  • TIL | Java - 키워드 this & super
개발 공부
개발 공부
  • 개발 공부
    개발 공부
    개발 공부
  • 전체
    오늘
    어제
    • 전체보기 (163)
      • 프로젝트 (1)
      • JavaScript (46)
      • Node.js (3)
      • Next.js (5)
      • React (17)
      • NoSQL (0)
      • HTML,CSS (3)
      • CS (6)
      • Java (35)
      • Spring (6)
        • Spring의 정석 (1)
      • Spring boot (1)
      • MySQL (1)
      • 리눅스 (16)
      • JSP (9)
      • AWS (0)
      • git (2)
      • 알고리즘 (1)
      • ect (7)
      • Project (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java
    Java의 정석
    자바
    자바의 정석
    오블완
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
개발 공부
TIL | Java - static
상단으로

티스토리툴바