냥쟝
article thumbnail
반응형

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

-인스턴스 변수

=각 인스턴스의 개별적인 저장공간.인스턴스마다 다른 값 저장가능

=인스턴스 생성 후, '참조변수.인스턴스변수명'으로 접근

=인스턴스를 생성할 때 생성, 참조변수가 없을 때 가비지컬렉터에 의해 자동제거됨

클래스 변수

-같은 클래스의 모든 인스턴스들이 공유하는

-인스턴스 생성없이 '클래스이름.클래스변수명'으로 접근

-클래스가 로딩될 때 생성되고 프로그램이 종료될 때 소멸

지역변수 : 메서드 내에 선언되며, 메서드의 종료와 함께 소멸

조건문, 반복문의 블럭{}내에 선언된 지역변수는 블럭을 벗어나면 소멸

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

"인스턴스변수는 인스턴스가 생성될 때마다 생성, 인스턴스마다 각기 다른 값을 유지, 클래스 변수는 모든 인스턴스가

하나의 저장공간을 공유하므로 항상 공통된 값을 갖는다"

메서드란?

-작업을 수행하기 위한 명령문의 집합

-입력받아서 처리하고 그 결과를 돌려줌

메서드의 장점과 작성지침

-반복적인 코드를 줄이고 코드의 관리가 용이

-여러 문장을 메서드로 작성

-하나의 메서드는 한 가지 기능만 수행하도록 작성

-관련된 여러 문장을 메서드로 작성

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 

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

 

profile

냥쟝

@냥쟝

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!