본문 바로가기
java

0929_static method

by 신방동불주먹 2022. 9. 29.
public class FuncStatic { //0929-1 static method (블록내 변수,메소드 : 멤버)
	int iv;
	static int cv;
	
	
	//멤버 메소드: 1) 인스턴스 메소드 
	//			- 인스턴스 변수, 클래스 변수 모두 사용 가능 
	//			- 인스턴스 메소드, 클래스 메소드 모두 사용 가능
	//			2) 클래스(static) 메소드 :객체 생성 없이 사용가능(static 변수랑 동일)
	//			- 클래스 변수, 클래스 메소드만 사용가능
	
	
	void instanceMethod() { //메소드 메모리 할당 시점보다 static 변수인 cv 생성이 더 빠름 
							//인스턴스 변수는 생성해야 메모리 할당이 됨. 
		System.out.println("instanceMethod() call");
		iv = 10; //생성과 동시에 할당
		cv = 20; //메소드 할당 전 이미 되어있음
		//자신의 클래스에 정의 된 변수는 필요에 의해 가져다 쓸 수 있음
	
		System.out.println("iv = "+ iv);
		System.out.println("cv = "+ cv);
		
		//함수 호출: instance 메소드가 메모리 할당되기 전 static 메소드는 이미 되어있기 때문에 호출 사용 가능하다.
		staticMethod();
	
	}
	
	
	//*************static method에서 instance 변수 사용할 수 없다
	static void staticMethod() { //앞부분에 static 붙혀주면 됨
		System.out.println("staticMethod() call");
		//iv = 30; //
		cv = 40;//객체 생성 전 메모리 할당
		
		System.out.println("cv = "+cv);
		
		//함수 호출: instance 메소드의 메모리 할당 시점이 다르기 때문에 호출 사용 불가능
		// instanceMethod();
		
	}
	

	
	//어제만든 메소드들은 인스턴스매소드
	//main 메소드는static. DataTest.java의 copy 메소드도 static 이여야만 호출, 사용이 가능. 
}

 

 

 

 

 

 

public class FuncStaticTest { //0929-1 static method

	public static void main(String[] args) {
		
	//	fs.cv = 20; 생성없이 사용가능 :가장 큰 특징
	//	fs.staticMethod(); 생성없이 사용가능
		
//		FuncStatic.cv =20; 
//		FuncStatic.staticMethod();
//		
		FuncStatic fs = new FuncStatic();
//		
//		fs.iv = 10;
//		fs.instanceMethod();
		

		
		fs.instanceMethod();
		FuncStatic.staticMethod();
		
	}

}

'java' 카테고리의 다른 글

0929_생성자  (0) 2022.09.29
[java] 오버로딩  (0) 2022.09.29
0928_최대값 출력 메소드(연습)  (0) 2022.09.28
0928_참조형 변수 (배열 타입)  (0) 2022.09.28
0928_리턴타입을 참조형으로 갖는 메소드  (0) 2022.09.28