기록장

정적 변수 코드 짜봤어~ 주의할 점도 알려 줄게 본문

개발/JAVA

정적 변수 코드 짜봤어~ 주의할 점도 알려 줄게

HJJJJJ 2022. 5. 15. 00:03
728x90
package sec02.exam01;

public class Calculator {
	static double pi = 3.14159;
	
	static int plus(int x, int y) {
		return x + y;
	}
	
	static int minus(int x, int y) {
		return x - y;
	}
}
package sec02.exam01;

public class CalucalatorExample {

	public static void main(String[] args) {
		double result1 = 10 * 10 * Calculator.pi;
		int result2 = Calculator.plus(10,5);
		int result3 = Calculator.minus(10, 5);
		
		System.out.println("result1:" + result1);
		System.out.println("result2:" + result2);
		System.out.println("result3" + result3);
	}
}

정적 메소도는 객체가 없어도 실행된다는 특징 때문에 

정적 메소드를 선언할 떄는 이들 내부에 인스턴스 필드나

인스턴스 메소드를 사용 할 수 없어

this (자신 참조) 키워드도 안돼 

 

정적 메소드에서 인스턴스 멤버를 사용하고 싶다면

먼저 객체를 생성해야돼

 

static void Method3() { 

ClassName obj = new ClassName();

obj.field1 = 10;

obj.method1();

}

 

main()메소드도 동일하게 규칙이 작용 된대 

(이것도 정적 메소드 라네?!)

즉 개체 생성 없이 인스턴스 필드와 인스턴스 메소드 main()메소드에서 

바로 사용 할 수 없는거지 

봐바

 

public class Car{

int speed; 

 

void run() { ... }

public static void main(String[] args) {

speed = 60; //컴파일 에러난다~

run();         // 이것도 컴파일 에러 

}

}

 

--> 이걸 main()메소드를  올바르게 수정해 볼게

 

public static void main(String[] args){

Car myCar = new Car();

myCar.speed=60;

myCar.run;

}

package sec02.exam01;

public class Car {
	int speed;
	
	void run() {
		System.out.println(speed + "으로 달립니다");
	}
	
	public static void main(String[] args) {
		Car myCar = new Car();
		myCar.speed = 60;
		myCar.run();
	}
}

 

밑에 객체 생성해서 만든거 보이지? 

굿 

728x90

'개발 > JAVA' 카테고리의 다른 글

접근제한자 공부하면서 코드 짠거  (0) 2022.05.15
파이널 필드랑 상수를 설명해 줄게  (0) 2022.05.15
메소드를 알려줄게 2  (0) 2022.05.14
메소드를 말해줄게  (0) 2022.05.14
생성자에 대해서 알려줄게2  (0) 2022.05.12
Comments