본문 바로가기
Java

JAVA static 변수, overloading

by leopard4 2023. 1. 18.

클래스 함수를 만들때 고려해야될것은 

당연하게도 cpu의 실행순서다 

총합을 구하는 함수와 평균을 구하는 함수가 있다

평균을구하고 총합을 구하면 데이터가 이상해질수도 있기 때문에 하나로 합친다.

void 와 return 의 메모리 상태에 대해선 추후 알아볼예정

public class StudentTest {

String name;

int kor;

int eng;

int math;

int total;

double AVER;

 

int sum() {

return kor + eng + math;

}

 

float Avg() {

return sum() / 3.0f;

}

// 함수를 생성할때 만약.

// cpu실행특성 때문에 문제발생의 소지가 있다면 하나로 만든다

void calculate() {

total = kor + eng + math;

AVER = total / 3.0 ;

}

void print( ) {

System.out.println("이름 : "+ name + " 국어 : "+ kor + " 영어 : "+ eng + " 수학 : "+ math +" 총점 : " + sum() + " 평균 : " + Avg());

}

// 총점과 평균을 한번에 계산하는 함수

 

 

}

 

 

 

static

클래스를 만들고 스태틱 함수를 만들었다.

 

스태틱 함수 count 가 기울어진것을 볼 수 있다.

전역변수 또는 정적변수라고도 하는데 이는 어디서든 쓰일수 있는 공유 변수라는 뜻이다.

Ram

main에 count = 1 을 할당 한다면 이는 멤버변수의 count 전역변수의 count 와 무관하게 

지역변수에 자리잡게 되고 똑같은 이름인 

멤버변수 count 

전역변수 count 

지역변수 count 모두 다른값을 가질수 있게되고 다른 변수라는것.

 

멤버변수는 count는 변수로 호출했을때 힙 영역에 자리잡고

호출한변수만 이 값을 가진다. 

그런데 데이터 영역에 생성된 static (전역변수) 변수는 

전역으로 사용이 가능하다.

 

 

overloading

add 함수가 여러 데이터 타입으로 정의된것을 볼 수 있다. 

overloading

함수의 이름은 같고 데이터 타입만 다르지만 사용가능한것을 볼수있다 .

프린트 함수가 여러개 있는것을 볼수있다 .

이것도 오버로딩이다  ( 하나의 오버로드안에 저글링 울트라?같이 공존하는모습을 상상했다)

정의된 이름은 하나지만 여러 데이터 타입이 공존한다는것.

 

 

 

 

위 내용과는 별개로 

아래 코드를 실행했을때  언어적 해석

StudentTest s1 = new StudentTest();

StudentTest 라는 사용자 정의 타입의 s1 변수에 

new 라는 예약어로 

StudentTest()라는 함수를 

heap 영역에 할당한다. (sql의 테이블 혹은 도장 혹은 붕어빵틀과 비슷하다고 하는것 같다.)