*C : ⑥의 호출을 받고 명령문을 실행하려 보니 ⑤로 인해 생성된 num1과 num2의 값(20, 30)을 갖게 되어 정수형 a변수의 값은 50이 되고 return a; 그 값을 호출한 곳으로 반환한다.
⑦ : (④와 같음) ⑥의 *C에서 반환된 50이라는 값을 출력
- 변수 1. 기본자료형 : boolean, byte, char, short, int, long, float, double
2. 레퍼런스 변수 : 배열, 객체
- 인스턴스(instance) 변수 메모리를 할당받은 자체(초기화 없으면 0으로 초기화)
- 레퍼런스(reference) 변수 따로 메모리를 할당 받는 것이 아니라 이미 선언되어 있는 변수의 별명으로 사용할 목적으로
이용하는 것
- 인스턴스 메소드 [접근제어] 자료형 메소드명 ([자료형 인수, 자료형 인수])
- 생성자 new 표기방법은? Ex e2=new Ex()
: e2는 Ex클래스내 인스턴스 변수의 주소값을 담고 그 인스턴스 변수에 메모리 할당
생성자를 만들지 않으면 아무런 코드도 없는 디폴트 생성자가 만들어진다 public Ex(){}
생성자는 클래스와 동일한 이름을 가지며 void조차 return값을 가질 수 없다.
생성자는 일반 메소드처럼 호출될 수 없으며 객체를 생성할 때만 new 다음에만 기술한다.
생성자는 메모리할당, 초기화의 목적으로 사용된다.
인자가 있는 생성자에서 brace안에 있는 인자는 지역변수로, 해당 brace외의 다른곳에서
선언한 변수와는 별개의 값을 가진다
호출방법은? 메인메소드에서의 호출 (인자가 없는 생성자 호출) : Ex ob1=new Ex();
Ex 클래스내 변수에 메모리를 할당(new)하고 그 주소값은 ob1에 저장(?) 한다.
인자가 있는 생성자 호출 : Ex ob2=new Ex(20,30);
Ex 클래스내 변수(num1, num2)에 메모리를 할당(new)하고 값을 대입한다. 그 주소값은 ob2에 저장
오류 : nullpoint Exception → nullpoint : 메모리 할당이 되지 않았다. → 생성자가 없다는 뜻
- private
외부접근 불가, 동일 패키지(폴더)에서만 접근 가능
- public 일반적으로 클래스 앞에 붙는다
- void 값을 전달 받아도 그 값을 호출한 곳으로 반환하지 않는다.
void 끼리는 호출 가능하다.
- this 호출한 객체 자신을 나타낸다.
private값과 변수명이 같을 때 this.변수명=변수명 으로 private값에 접근
- 되부름 (recursion) : 자신이 자기 자신을 부르는 것
public int sum(int n){
return n>1? n+(sum(n-1)) : 1;
// 10+(sum(9) = 10+(9+(sum8)) = 10+(9+8+(sum7) = 10+(9+8+7+(sum6) ......
식으로 간결한 소스로 클래스에 작성 후 메인에서
int s=ob.sum(10); 식으로 값을 대입하여 합/곱/차 등 여러 연산에 유용하다. STACK MEMORY 구조 연습장 보고 이미지 만들기 엑셀
ex) 탐색기, 레지스트리 청소기, 트리구조, 알고리즘 구현, 퀵소트 등
- call by value : 형식매개변수와 실매개변수는 기억공간 따로 확보
함수를 호출할 때 전달인자로 데이터 자체를 전달하는 방법
- call by reference : 주소값만을 가지고 변수의 값에 접근
주소값만 가지고 있어도 그 주소값의 메모리에 접근하여 값을 변경시킬 수 있다.
-오버로딩(overloading) : 중복정의
메소드의 이름은 동일하지만 괄호안의 인수의 개수가 다르거나 자료형이 다르면 다른 메소드로 취급한다 class public void print(){S.o.p("");}
public void print(int a){S.o.p("");}
public void print(int a, double b){S.o.p("");} main ob.print(10, 2.5);
ob.print();
ob.print(100);