클래스 함수를 만들때 고려해야될것은
당연하게도 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());
}
// 총점과 평균을 한번에 계산하는 함수
}
클래스를 만들고 스태틱 함수를 만들었다.
스태틱 함수 count 가 기울어진것을 볼 수 있다.
전역변수 또는 정적변수라고도 하는데 이는 어디서든 쓰일수 있는 공유 변수라는 뜻이다.
main에 count = 1 을 할당 한다면 이는 멤버변수의 count 전역변수의 count 와 무관하게
지역변수에 자리잡게 되고 똑같은 이름인
멤버변수 count
전역변수 count
지역변수 count 모두 다른값을 가질수 있게되고 다른 변수라는것.
멤버변수는 count는 변수로 호출했을때 힙 영역에 자리잡고
호출한변수만 이 값을 가진다.
그런데 데이터 영역에 생성된 static (전역변수) 변수는
전역으로 사용이 가능하다.
add 함수가 여러 데이터 타입으로 정의된것을 볼 수 있다.
함수의 이름은 같고 데이터 타입만 다르지만 사용가능한것을 볼수있다 .
프린트 함수가 여러개 있는것을 볼수있다 .
이것도 오버로딩이다 ( 하나의 오버로드안에 저글링 울트라?같이 공존하는모습을 상상했다)
정의된 이름은 하나지만 여러 데이터 타입이 공존한다는것.
위 내용과는 별개로
아래 코드를 실행했을때 언어적 해석
StudentTest s1 = new StudentTest();
StudentTest 라는 사용자 정의 타입의 s1 변수에
new 라는 예약어로
StudentTest()라는 함수를
heap 영역에 할당한다. (sql의 테이블 혹은 도장 혹은 붕어빵틀과 비슷하다고 하는것 같다.)
'Java' 카테고리의 다른 글
JAVA 메소드가 호출->실행 될때 메모리의 상태 / 접근제어자 / 클래스의 멤버변수 데이터를 셋팅하는 방법3가지 / 멤버변수와 로컬변수의 차이점 (0) | 2023.01.19 |
---|---|
JAVA 생성자란? 생성자 사용법 / 생성자로 메소드 오버로딩하기 (0) | 2023.01.19 |
JAVA OOP 의 개념 (클래스,객체 = 인스턴스) (0) | 2023.01.18 |
JAVA Switch case , for while, Array , func (0) | 2023.01.18 |
JAVA 기본 문법 eclipse콘솔에 한글 나오게 하기 (0) | 2023.01.17 |