
선언위치에 따른 변수의 종류
-인스턴스 변수
=각 인스턴스의 개별적인 저장공간.인스턴스마다 다른 값 저장가능
=인스턴스 생성 후, '참조변수.인스턴스변수명'으로 접근
=인스턴스를 생성할 때 생성, 참조변수가 없을 때 가비지컬렉터에 의해 자동제거됨
클래스 변수
-같은 클래스의 모든 인스턴스들이 공유하는
-인스턴스 생성없이 '클래스이름.클래스변수명'으로 접근
-클래스가 로딩될 때 생성되고 프로그램이 종료될 때 소멸
지역변수 : 메서드 내에 선언되며, 메서드의 종료와 함께 소멸
조건문, 반복문의 블럭{}내에 선언된 지역변수는 블럭을 벗어나면 소멸
클래스변수와 인스턴스 변수
"인스턴스변수는 인스턴스가 생성될 때마다 생성, 인스턴스마다 각기 다른 값을 유지, 클래스 변수는 모든 인스턴스가
하나의 저장공간을 공유하므로 항상 공통된 값을 갖는다"

메서드란?
-작업을 수행하기 위한 명령문의 집합
-입력받아서 처리하고 그 결과를 돌려줌
메서드의 장점과 작성지침
-반복적인 코드를 줄이고 코드의 관리가 용이
-여러 문장을 메서드로 작성
-하나의 메서드는 한 가지 기능만 수행하도록 작성
-관련된 여러 문장을 메서드로 작성

return문

<bash />
int max(int a, int b){
int result = 0;
if ( a > b)
result = a;
else
result = b;
return result;
}
<bash />
int max(int a, int b) {
int result = 0;
if(a>b)
result = a;
else
result = b;
}
<bash />
int max(int a, int b) {
if(a > b)
return a;
return b;
메서드 호출
참조변수.메서드 이름(); //메서드에 선언된 매개변수가 없는 경우
참조변수.메서드이름(값1,값2 ....)// 메서드에 선언된 매개변수가 있는 경우

메서드 영역
- 클래스 정보와 클래스변수가 저장
호출스택
-메서드의 작업공간. 메서드가 호출되면 메서드 수행에 필요한 메모리 공간 할당
힙
-인스턴스가 생성되는 공간, new연산자에 의해서 생성되는 배열과 객체는 모두 여기에 생성
기본형 매개 변수와 참조형 매개변수
기본형 매개변수 - 변수의 값을 읽기만 할 수 있다 (read only)
참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다(read & write)
재귀호출
- 반복문보다 성능이 나쁨

클래스메서드 (static메서드)와 인스턴스메서드
-인스턴스 메서드
참조변수. 메서드이름
클래스메서드(static메서드)
객체생성없이 클래스이름.메서드이름()
인스턴스 변수나 인스턴스메서드와 관련없는 작업을 하는 메서드
메서드 내에서 인스턴스변수 사용불가
메서드 내에서 인스턴스변수를 사용하지 않는다면 static을 붙이는 것을 고려한다
<bash />
class MyMath
long a,b;
long add() { // 인스턴스 메서드
return a + b;
}
static long add (long a, long b) { // 클래스메서드 (static 메서드)
return a+b;
}
}

4. 메서드 오버로딩
"하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩, 간단히 오버로딩이라고 한다"
4.2 오버로딩의 조건
-메서드의 이름이 같아야 한다.
-매개변수의 개수 또는 타입이 달라야 한다
-매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않음
예
System.out.println 메서드
-다양하게 오버로딩된 메서드를 제공함으로써 모든 타입의 변수를 출력
4.3 오버로딩의 예
-매개변수의 이름이 다른 것은 오버로딩이 아니다
-리턴타입은 오버로딩의 성립조건이 아니다
long add(int a, long b) { return a+b};
long add(long a, long b) {return a+b}
-> 매개변수의 타입이 다르므로 오버로딩이 성립
<bash />
int add(int[] a) {
int result = 0;
for(int i=0; i<a.length; i++){
result + = a[i];
}
return result;
}
생성자
-인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드'
-인스턴스 변수의 초기화 또는 인스턴스 생성시 수행할 작업에 사용
-몇가지 조건을 제외하고는 메서드와 같다
-모든 클래스에는 반드시 하나 이상의 생성자가 있어야한다
*인스턴스 초기화 -인스턴스 변수에 적절한 값을 저장하는 것
1. 연산자 new에 의해서 메모리 heap에 Card클래스 인스턴스 생성된다.
2.생성자 Card()가 호출되어 수행된다.
3.연산자 new의 결과로, 생성된 Card인스턴스의 주소가 반환되어 참조 c에 저장된다
생성자의 조건
-생성자의 이름은 클래스의 이름과 같아야한다
-생성자는 리턴값이 없다(하지만 void를 쓰지 않는다)
기본 생성자
-매개변수가 없는 생성자
-클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가한다
클래스이름(){}
card(){}//컴파일러에 의해 추가된 Card 클래스의 기본생성자
매개변수가 있는 생성자

생성자에서 다른 생성자 호출하기 -this
this()-생성자, 같은 클래스의 다른 생성자를 호출할 때 사용 다른 생성자 호출은 생성자의 첫 문장에서 가능

참조변수 this
-인스턴스 자신을 가리키는 참조변수. 인스턴스의 주소가 저장되어있음 모든 인스턴스 메서드에 지역변수로 숨겨진채로 존재

'취준 note 2023 > 자바의정석' 카테고리의 다른 글
자바의정석 기초편 - 변수의 초기화 ~객체지향 개념 2-2 (0) | 2023.01.11 |
---|---|
자바의 정석 기초편 -요약파일 한꺼번에 정리하기 변수~객체1 (0) | 2023.01.09 |
자바의 정석- 객체지향의 원리2 (2) | 2022.12.27 |
자바의 정석 -상속 (3) | 2022.12.21 |
자바의정석-객체지향 -클래스와 객체, 인스턴스 (1) | 2022.11.20 |