Java

eclipse / 자바 Static

bokboks 2023. 3. 23. 06:07

안녕하세요 지난 포스팅에서 자바ArrayList에 이어

이번에는 자바 Static에 대하여 알아보겠습니다.

 

 

eclipse / 자바 ArrayList를 통한 배열 처리

안녕하세요 지난 포스팅에서 자바 객체형 배열 처리에 이어 ArrayList 를 통한 배열 처리 에 대하여 알아보겠습니다. eclipse / 자바 객체형 배열 처리 안녕하세요 지난 포스팅에서 자바의 클래스 예

stackbok.tistory.com


public class A03_Static {
	public static void main(String[] args) {
		/*
		 # 정적 멤버와 static
		 	1.정적(static) 멤버랑?
		 	1) 클래스에 고정된 필드와 메소드 - 정적필드, 정적 메소드
		 	2) 정적 멤버는 클래스에 소속된 멤버
		 		- 객체 내부에 존재하지 않고, 메소드 영역에 존재
		 		- 정적 멤버는 객체를 생성하지 않고 클래스로 바로 접근해 사용
		 		
		 	2.정적 멤버 선언
		 		1)필드 또는 메소드 선언할 때, static 키워드 붙은
		 			class 클래스{
		 					static 타입 필드;
		 					static 리턴타입 메소드명(매개변수){}
		 					}
		 					
		 	#클래스를 통해서 만들어지는 객체들은 다른 주소에 실제 메모리를 가지고
		 	사용한다.
		 	비유컨데 63빌딩도면으로 서울에, 부산에 제주도에 빌딩을 짓는다고 가정하면
		 		63빌딩도면 : 클래스, 각 지역에 실제 만들어진 빌딩 : 객체
		 	건축비용 : 도면비용 + (자재비용 + 인건비 + 부지비용)
		 		자재비용, 인건비, 부지비용 각 위치별로 다르게 설정
		 		ㄴ-> 객체의 instance 변수는 다르게 설정을 할 수 있다.
		 		
		 		도면비용은 건축물의 위치에 상관없이 일정한 비용이든다..
		 		ㄴ-> 객체의 static 변수는 공유하기에 객체에서 동일하게 쓸 수 있다.
		 			공유하는 필드이기에 class 변수라고 한다.
		 			참조변수.static ==> 클래스명.static 변수
		 			
		 */
		//static 필드는 객체 생성없이 객체 공유메모리(클래스 변수)
		//이기에 바로 사용할수있다.
		Building63.drawingPrice = 1000000;
		Building63 b1 = new Building63("서울");
		b1.siteCost = 100000;
		Building63 b2 = new Building63("부산");
		b2.drawingPrice += 1200000; //공유하기 때문에 price 자체가 다오름
		//참조변수로 변경하는 것이 의미가 없기 때문에 일반적으로 static변수는 클래스.
		//static 변수명을 사용한다
		Building63 b3 = new Building63("제주도");
		b1.showInfo();
		b2.showInfo();
		b3.showInfo();
		Building63.show();
	}
}
/*
 # instance 변수
 1.클래서 선언후, 객체를 생성해서 각 객체마다 사용되는 변수
 	객체는 참조변수를 사용하기에 instance 변수라고 하고 이는 객체마다 다른 데이터를 가지고있다.
 	
 # static 변수
 1. 객체의 공유메모리 영역으로 클래스 종속적인 변수를 static 변수라고 한다.
 클래스명.static변수
 */
class Building63{
	String loc;//instance 변수 객체마다 다른메모리
	static int drawingPrice; //static 변수 메모리 공유
	int siteCost; //instance 변수
	Building63(String loc){
		this.loc = loc;
	}
	
	//static 메서드 : 객체 생성없이 기능 메서드 사용 가능
	// cf) Building63.show();
	static void show() {
		System.out.println("건물의 도면비용: "+drawingPrice);
	}
	void showInfo() {
		System.out.println(loc+"에 있는 63빌딩");
		System.out.println("도면의 가격:"+drawingPrice);
		System.out.println("부지 비용:"+siteCost);
	}
}

 

이상으로 자바 Static 에 대하여 알아보았습니다

감사합니다.