변수와 메서드

Lumi·2021년 6월 21일
0

자바의 정석

목록 보기
28/35
post-thumbnail

참조형 변수 : 기본형 변수를 제외한 모든 변수들
-> 배열, 클래스 등등

3.1 선언 위치에 따른 변수의 종류

멤버변수 중 static이 붙은 것은 클래스 변수
붙지 않은 것은 인스턴스 변수 이다.
메서드 영역 안에 선언된 변수는 지역 변수이다.

클래스 변수는 모든 인스턴스가 공통된 저장공간을 공유하게 된다.
-> 인스턴스를 생성하지 않고도 바로 사용가능하다.

3.2 클래스변수와 인스턴스변수

클래스 변수는 주로 공통된 사항에 대해서 지정해준다.

카드를 예로 들자면
카드의 높이,폭은 클래스 변수로 두게 되고
카드의 종류,숫자 등은 인스턴스 변수로 두게 된다.

그렇게 되면 높이와 폭은 일정하지만 종류와 숫자는 다른 다양한 카드를 만들어 낼 수 있게 된다.

3.3 메서드

= javascript의 함수와 같은 역할

사용하는 이유
1. 높은 재사용성
2. 중복된 코드의 제거
3. 프로그램의 구조화

3.4 메서드의 선언과 구현

선언부 : 반환타입 + 메서드 이름 + (타입 변수명)
1. 반환 타입의 경우에는 return에 반환할 값의 타입을 입력해준다.
-> 반환값이 없을시에는 void
2. 메서드 이름은 자유
3. 타입 변수명에는 매개변수의 타입과 변수를 입력해 준다.
-> 만약 없을시에는 공백을 둔다.

구현부 : { 수행될 코드 }

3.5 메서드의 호출

메서드를 선언만 하게 되고 호출을 하지 않는다면 아무런 일이 일어나지 않는다.

Static 메서드 인경우
-> 클래스명.메소드(인자)
일반 메서드 인 경우
-> 생성자를 받은 변수.메소드(인자)

마찬가지로 메서드에 매개변수가 없을시에는 인자또한 공백이 된다.

3.6 return문

반환 타입이 void가 아닌 이상 반드시 return이 들어가야 한다.

return문에는 변수뿐만 아니라 수식 또는 연산자 등등 다양하게 올수가 있다.

메서드를 선언할경우에는 반드시 매개변수의 유효성 검사를 해주어야 한다.

example
x/y의 수식을 진행하는 메서드가 있는데
y에 0이 오면 오류가 발생하게 된다.
그걸 방지하기 위해서 메서드 내에서 if문을 사용하여 y에 0이 대입되게되었을떄를 방지한다.
== 유효성 검사

3.7 JVM의 메모리 구조

코드가 실행되게 된다면 순차적으로 메모리 공간이 쌓이게 되고
JAVA의 고유한 특성으로 인해 다시 순차적으로 메모리 공간이 비워지게 된다.

3.8 기본형 매개변수와 참조형 매개변수

자바에서는 메서드를 호출하게 되면 매개변수로 지정한 값을 메서드의 매개변수()에 복사해서 넘겨주게 된다.

이 과정에서 기본형인 경우에는 기본형의 값이 복사가 되어서 넘겨주게 되지만
참조형인 경우에는 주소의 값이 복사가되어 넘겨주게 된다.

b는 단순히 데이터의 변수?? 이기떄문에 큰 의미는 없다(x의 값이 중요하다)

기본형의 예제는 그냥 일반적이기 떄문에 따로 그림을 올리지 않았다.

3.9 참조형 반환타입

3.8과 같은 내용으로 참조형 타입의 값이 객체의 주소 라는 점을 이용한다.

3.10 재귀호출

메서드의 내부에서 메서드 자신을 다시 호출하는 것
-> 반드시 조건문이 필수적으로 따라다닌다.
-> 논리적 간결함을 위해서 재귀호출이 사용된다.
비효율적으로 구동이 되지만 코드 내용을 알아보기가 쉽다

3.11 클래스 메서드(static)와 인스턴스 메서드

== 윗 내용 반복

3.12 클래스 멤버와 인스턴스 멤버간의 참조와 호출

알아 가야할 내용
인스턴스 메서드는 부수적인 느낌이라고 생각하면 쉽다.

클래스 메서드가 호출이 된다고 반드시 인스턴스 메서드가 호출이 되는것은 아니다.

반대로 인스턴스 메서드가 호출이 되면 클래스 메서드도 자동으로 호출이 된다.

example
TV를 판다고 하면 가전제품 매장이 있다는것이 전제가 되지만
가전제품 매장이 잇다고 TV를 판다는것은 전제가 되지 않는다.

가전제품 매장 : 클래스 메서드
TV : 인스턴스 메서드

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글