23일차 java 연산(2023-01-25)

권단비·2023년 1월 25일
0

IT

목록 보기
42/139

[Eclipse 연습]

[계산]
class Baby7 {
	static int baby = 0;
	public Baby7() {
		baby++;
		System.out.println("Baby 생성:" + baby);
	}
}
public class Test25 {
	public static void main(String[] args) {
		Baby7 cnt1 = new Baby7();
		Baby7 cnt2 = new Baby7();
		Baby7 cnt3 = new Baby7();
	}
}
[결과값]
Baby 생성:1
Baby 생성:2
Baby 생성:3

[계산]
class Baby7 {
	static int baby = 0;
	public Baby7() {
		baby++;
		System.out.println("Baby 생성:" + baby);
	}
}
public class Test25 {
	public static void main(String[] args) {
		Baby7 cnt1 = new Baby7();
		Baby7 cnt2 = new Baby7();
		Baby7 cnt3 = new Baby7();
	}
}
[결과값]
Baby 생성:1
Baby 생성:2
Baby 생성:3

[클래스 변수 접근]

static변수(클래스변수)는 클래스로 접근하는 것이 더 좋다.
AccessWay.num++; 
[계산]
class AccessWay{
	static int num = 0;
	AccessWay(){
	num++; // 클래스 내부에서 이름을 통한 접근
	}
}
class ClassVarAccess{
public sstatic void main(String[] args){
AccessWay way = new AccessWay();
way.num++; // 외부에서 인스턴스의 이름을 통한 접근
AccessWay.num++; //외부에서 클래스의 이름을 통한 접근*
System.out.println("num = " + AccessWay.num);

[클래스 함수 접근]

static으로 선언된 변수를 컨트롤 하기 위해서 static을 사용함.
★static 함수에 인스턴스 라면(변수,함수)이 올 수 없는 이유.

메모리에 올라가는 순서가 다르기 때문
인스턴스 변수 = new 했을 때 메모리에 올라감
static = 변수 선언 때 메모리에 올라감

단순 기능 제공이 목적인 메소드들, 인스턴스 변수와 관련
지을 이유가 없는 메소드들은 static으로 선언하는 것이 옳다.

public static void main(String[] args){...}

static인 이유! 인스턴스 생성과 관계없이 제일 먼저 호출되는 메소드이다.
public인 이유! main 메소드의 호출 명령은 외부로부터 시작되는 명령이다.
단순히 일종의 약속으로 이해해도 괜찮다.

[계산]
class NumberPrinter {
	private int myNum = 0;// 객체를 생성할 때 메모리 생성 (new ~)
	// static int myNum2 = 0; // 스캔할 때 메모리 생성

	static void showInt(int n) {
		// System.out.println(myNum); // myNum은 메모리에 생성이 안 되어 있는데 static에 들어있으니 에러남.
		System.out.println(n);
	}

	static void showDouble(double n) {
		System.out.println(n);
	}

	void setMyNumber(int n) {
		myNum = n;
	}

	void showMyNumber() {
		showInt(myNum); // 일반 함수도 static 함수를 불러올 수 있다.
	}
}
public class Test25 {
	public static void main(String[] args) {
		NumberPrinter.showInt(20);
		// static으로 함수를 만들면 바로 호출 가능하다. | 대표적인 static 함수 : System.out.println
		// static을 사용하면 함수든 변수든 클래스 명으로 접근할 수 있다.
		NumberPrinter np = new NumberPrinter();
		np.showDouble(3.15);
		// static이든 아니든 객체생성해서 접근 가능하다.

		np.setMyNumber(75);
		np.showMyNumber();
	}
}
[결과값]
20
3.15
75

0개의 댓글