기록장
정적 변수 코드 짜봤어~ 주의할 점도 알려 줄게 본문
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