본문 바로가기

분류 전체보기213

객체 소멸과 가비지 컬렉션 객체 소멸- new에 의해 할당된 객체 메모리를 자바 가상 기계의 가용 메모리로 되돌려 주는 행위- 자바 응용프로그램에서 임의로 객체를 소멸시킬 수 없음가비지(garbage)- 자바 응용프로그램에서 더 이상 사용되지 않게 된 객체나 배열 메모리- 가리키는 레퍼런스가 하나도 없는 객체나 배열- 응용프로그램이 더 이상 접근할 수 없음a = new Person("이몽룡");b = new Person("성춘향");//2개의 Person 객체 생성b = a;//레퍼런스 b는 a가 가리키던 객체를 가리킴//b가 가리키던 처음 객체는 아무도 참조하지 않게 됨(접근 불가) -> 가비지가비지 컬렉션- 자바에서 가비지를 자동 회수하여 가용 메모리로 반환하는 과정- 가비지가 차지하고 있는 메모리 공간은 회수되는 것이 경제적.. 2024. 5. 20.
메소드 활용 - 메소드 오버로딩 메소드 오버로딩(Overloading)- 한 클래스 내에 이름이 같은 메소드를 중복 작성메소드 이름이 동일매개변수의 개수나 타입이 서로 다름- 위 조건들을 만족해야 메소드가 오버로딩될 수 있음- 리턴 타입이나 접근 지정자는 오버로딩과 무관class MethodOverLoading{ public int getSum(int i, int j){ return i+j; } public int getSum(int i, int j, int k){ return i+j+k; }}//오버로딩 성공 사례//두 메소드 이름 getSum으로 동일//매개변수의 개수 다름class MethodOverLoadingFail{ public int getSum(int i, int j){ return .. 2024. 5. 20.
메소드 활용 - 인자 전달 메소드 형식 메소드- 클래스의 멤버 함수- 접근 지정자 선언을 제외하면 C/C++의 함수 작성법과 동일- 접근 지정자: 메소드가 다른 클래스에서 호출될 수 있는지 지정(public, prvate, protected, default)- 리턴 타입: 메소드가 반환하는 값의 데이터 타입인자 전달 자바의 인자 전달 방식- 기본 타입의 값 전달- 객체 또는 배열 전달 1. 기본 타입의 값이 전달되는 경우- 메소드 매개변수가 기본 타입(byte, char, short, int, long, float, double, boolean)으로 선언된 경우- 호출자(caller)가 전달하는 값이 매개변수에 복사되어 전달- 실인자 값은 변경되지 않음public class ValuePassing{ static void incre.. 2024. 5. 20.
객체 배열 객체 배열- 자바에서는 기본 타입 데이터뿐 아니라 객체를 원소로 하는 객체 배열도 만들 수 있음- 객체에 대한 레퍼런스를 원소로 갖는 배열배열 선언 및 생성 1. 배열에 대한 레퍼런스 선언Circle[] c;- Circle 클래스의 배열에 대한 레퍼런스 변수 c 선언- 레퍼런스 변수 c를 선언할 뿐 배열을 생성하는 것은 아님 → 배열의 원소 개수를 지정해서는 안 됨 2. 레퍼런스 배열 생성c = new Circle[5];- 5개의 레퍼런스를 원소로 하는 배열 생성- 배열의 원소는 객체가 아닌 레퍼런스- Circle 객체에 대한 레퍼런스 배열이 생성되며, 변수 c가 이를 가리킴- Circle 객체들은 아직 존재하지 않음 3. 객체 생성for(int i=0; i- for 문을 이용하여 배열의 크기만큼 Cir.. 2024. 5. 20.
this 레퍼런스, 객체 치환 this: 현재 실행되고 있는 메소드가 속한 객체에 대한 레퍼런스- 컴파일러에 의해 자동 관리- this.멤버 형태로 사용public class Circle{ int raidus; public Cirle(int r){ this.radius = r; } public int getRadius(){ return radius; }}- this는 현재 객체에 대한 레퍼런스이므로, this.radius는 현재 객체의 멤버 radius에 접근한다.this의 필요성 1. 객체의 멤버 변수와 메소드 변수의 이름이 같은 경우public Circle(int radius){ radius=radius; }- 이렇게 작성할 경우 radius=radius;의 두 radius가 모두 Circle(int radius)의 매.. 2024. 5. 14.
생성자 생성자(constructor): 객체가 생성될 때 객체의 초기화를 위해 실행되는 메소드 생성자 선언 및 활용- 생성자는 객체가 생성되는 순간에 자동으로 호출되는 메소드- 객체에 필요한 초기화를 실행하는 코드 포함 1. 생성자의 이름은 클래스 이름과 동일public class Circle{ public Circle(int r, Strint n){...}} 2. 생성자는 여러 개 작성(overloading) 가능- 매개변수의 개수와 타입이 다르다면 클래스 내에 동일한 이름의 생성자를 여러 개 둘 수 있음public class Circle{ public Circle(){...} public Circle(int r){...} public Circle(int r, String n){...}} 3. 생성.. 2024. 5. 14.