class Circle { // 접근 지정자가 없는 클래스 > default 클래스
int radius;
public Circle(int radius) {
this.radius = radius;
}
public double getArea() {
return 3.14*radius*radius; // return Math.PI*radius*radius;
}
// public static void main(String[] args) {
// System.out.println("2");
// } public 클래스에 있는 main 메소드만 실행
}
public class CircleArray { // 자바 파일 한개에 public은 한개만 가능
public static void main(String[] args) {
Circle[] c; // 클래스 타입의 객체 배열 선언
c = new Circle[5]; // 공간이 5개인데 각 공간에 참조변수가 들어감
for (int i = 0; i < c.length; i++) {
c[i] = new Circle(i); // 객체 생성하면서 0~4를 생성자로 넘김
}
for (int i = 0; i < c.length; i++) {
System.out.println((int)c[i].getArea()+" ");
}
}
}
객체 치환
- Circle s; > s(참조변수) 선언
- 참조변수가 같은 것은 값이 같은것이 아니라 같은 객체를 가르키는 것
- radius = 1인 객체는 객체 치환으로 인해 쓰레기가 되기 때문에 자원 반납 필요
인자(매개변수) 전달
기본 타입의 값 전달 : 값이 복사 >> 출력 결과 : 10
객체 혹은 배열 전달 : 같은 객체를 가르킴 >> 출력 결과 : 11
<<예시 그림>>
public class ArrayParameterEX {
static void printCharArray(char a[]) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]);
}
System.out.println();
}
static void replaceCharArray(char a[]) {
for (int i = 0; i < a.length; i++) {
if (a[i] == ' ') {
a[i] = ',';
}
}
}
public static void main(String[] args) {
char c[] = {'T','h','i','s',' ','i','s',' ','a',' ','p','e','n','c','i','l','.'};
printCharArray(c); // This is a pencil.
replaceCharArray(c); // 띄어쓰기를 ,로 대체
printCharArray(c); // This,is,a,pencil.
}
}
메소드 오버로딩
- 반환타입과는 상관없이 매개변수 타입이 다르거나 갯수가 달라야함
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;
}
}
class MethodOverloadingFail {
public int getSum(int i, int j) {
return i + j;
}
public double getSum(int i, int j) {
// 매개변수 둘다 int라서 오류
return (double)(i + j);
}
}
가비지 컬렉션
- 불필요한 메모리를 알아서 정리
- 레퍼런스 카운트 : 객체를 참조하는 변수의 수 카운트가 0이되면 GC가 자동으로 대상에 올리고 작동
'java,jsp,spring > java' 카테고리의 다른 글
java 상속 (0) | 2022.07.31 |
---|---|
java 접근 지정자, static (0) | 2022.07.25 |
java 객체 지향 (0) | 2022.07.23 |
java 예외 처리 (0) | 2022.07.20 |
java 열거형 등 (0) | 2022.07.20 |