public class Circle{
public int radius; // 원의 반지름 필드
public String name; // 원의 이름 필드
public Circle(){ } // 원의 생성자 메소드
public double getArea(){ // 원의 면적 계산 메소드
return 3.14*radius*radius;
}
}
this.(변수명)
을 하게 되면 무조건 클래스 내 멤버 필드의 변수명이 선택되게 하는 키워드.this( )
는 생성자 안에서만 사용이 가능한데, 무조건 생성자 내 천번째 코드로 사용해야한다. 괄호 안에 해당 클래스 내 멤버 변수의 수와 타입만큼 안에 값을 넣어주면 된다.public class Circle{
int radius;
public Circle() { radius = 1; }
public Circle(int r) { radius = r; }
double getArea() {
return 3.14*radius*radius;
}
...
}
this 사용o
public class Circle{
int radius; //(1)
public Circle() { this.radius = 1; }
public Circle(int radius) {
// (2)
this.radius = radius;
} //(1) (2)
double getArea() {
return 3.14*this.radius*this.radius;
}
...
}
public static void main(String args[]){
Sample a = new Sample();
int i = a.getSum(1,2);
int j = a.getSum(1,2,3);
double k = a.getSum(1.1, 2.2);
}
후
public class Sample{
public int getSum(int i, int j){
return i + j;
}
public int getSum(int i, int j, int k){
return i + j + k;
}
public int getSum(double i, double j){
return i + j;
}
}
System.gc()
코드로 가비지 컬렉션을 강제로 호출할 수 있다.보통 클래스 내 멤버 변수는 private으로 지정하고 메소드는 public으로 지정한다. private으로 지정한 변수를 public 으로 선언한 get/set을 이용해 멤버 변수에 값을 할당하고 가져온다. 직접적으로 수정하는 게 아닌 한단계 거쳐서 수정/읽기 를 한다고 생각하면 된다.
클래스 내 멤버 변수가 static으로 선언된다면 생성되는 클래스 인스턴스마다 그 멤버 변수를 실행하거나 수정할 때 개개인의 인스턴스마다 멤버 변수가 할당되는 것이 아닌 모든 인스턴스가 하나의 static으로 설정한 멤버 변수를 사용하게 된다.
다른 인스턴스 내 변수 조작으로 전체 인스턴스의 변수가 수정되므로 사용시 주의해서 코딩해야한다.
static을 이용해서 싱글톤 패턴(Singleton-Pattern)을 만들 수 있다.
// MyClass 클래스 부분 중 MyClass 타입의 함수를 선언하는 곳이다.
// MyClass의 생성자에는 빈 생성자를 선언한다.
//static 멤버는 객체를 참조할 수 없음
private static MyClass instance;
public static MyClass getInstance() {
//singleton pattern
//싱글톤 패턴이란 객체의 인스턴스가 1개만 생성되는 것을 의미한다..
//이미 인스턴스가 생성이 되어있으면 그 생성된 인스턴스를
//모든 클래스 객체에서 사용한다는 의미이다.
//static으로 선언했기 때문에 가능하다.
if(instance == null) {
//여기에서 생성자를 호출했으니 모든 선언된 클래스 객체 변수는
//같은 값을 가지게 된다.
instance = new MyClass();
}
//여기 instance는 static으로 선언이 된 instance를 이미 생성된 것이 있다면,
//instance에 값이 들어가 있으므로 싱글톤 패턴이라 바로 return 해주면
//다른 클래스 인스턴스는 같은 instance를 가지게 된다.
return instance;
}