1. new 연산자
- 형식) 클래스명 객체명 = new 클래스명( );
- ex) ThreeTest22 tt2 = new ThreeTest22( );
2. 메서드 매개변수
- call By Value --> 값에 의한 전달방법
- call By Reference --> 주소에 의한 전달방법(=객체에 의한 전달방법)
public class CallByValue {
public static void main(String[] args) {
int r = -1,g = -1, b = -1;
System.out.println("before:red="+r+",green="+g+"blue="+b);
change_color(r,g,b);
System.out.println("after:red="+r+",green="+g+"blue="+b);
}
static void change_color(int r,int g,int b){
r += 10;
g += 50;
b += 100;
System.out.println("메서드 내부의 r="+r+",g="+g+",b="+b);
}
}
class RGBColor{
int r,g,b; //0,0,0
RGBColor(int r,int g,int b){
this.r=r; //color.r=-1;
this.g=g; //color.g=-1;
this.b=b; //color.b=-1;
}
}
public class CallByRef {
public static void main(String[] args) {
RGBColor color = new RGBColor(-1, -1, -1);
System.out.println("color="+color);
System.out.println("before:red="+color.r+",green="+color.g+"blue="+color.b);
change_color(color);
System.out.println("after:red="+color.r+",green="+color.g+"blue="+color.b);
}
static void change_color(RGBColor color1){
System.out.println("color1="+color1);
color1.r += 10;
color1.g += 50;
color1.b += 100;
System.out.println("메서드 내부의 r="+color1.r+",g="+color1.g+",b="+color1.b);
}
}
3. 메서드 반환형
- 메서드의 반환형을 통해서 객체를 얻어오는 방법
public class GCCollector {
public static void main(String[] args) {
Runtime r= Runtime.getRuntime(); //클래스명.정적메서드명()
System.out.println("r="+r);
byte test[] = new byte[1024];
test[1]=20;
test[2]=34;
System.out.println("test="+test);
System.out.println("before사용메모리양="+(r.totalMemory()-r.freeMemory())/1024+"K");
test = null; //주소 지우기
System.gc();//수동으로 불필요한 메모리를 제거시켜주는 메서드
System.out.println("after사용메모리양="+(r.totalMemory()-r.freeMemory())/1024+"K");
}
}