생성자
처음 생성자를 생성할때 임의로 호출할 수 없고 객체를 생성해야 가능하다.
하지만 두,세번째 생성자는 처음 시작한 생성자를 통해 임의로 호출할 수 있다.
-다른 메서드 호출 가능
-다른 생성자 호출 가능 =>this(), this(1), this("홍길동") ,,,
** 생성자에서 다른 생성자 호출시 반드시 첫 번째 문장에 적어야한다
class Rect{
private int x,y;
Rect(){ //디폴트 생성자
//System.out.println("기본생성자");
//생성자에서 다른 생성자 호출시 반드시 첫번째 문장이어야한다.
this(10,10); //기본값: 10,10
}
Rect(int x, int y){
this.x=x;
this.y=y;
}
void area() {
System.out.println("x= "+x+",y= "+y+
"\n입력받은 직사각형의 면적은(x*y)의 값은"+(x*y));
}
}
public class HWRectHandling {
public static void main(String[] args) {
// TODO Auto-generated method stub
Rect r1=new Rect();
r1.area();
}
}
//x= 10,y= 10
//입력받은 직사각형의 면적은(x*y)의 값은100
메서드의 종류(메모리 관점에서, 객체 생성 유무에 따라)
- 일반메서드(=인스턴스 메서드)
객체를 생성해야 호출이 가능하다, 4byte 기억공간이 필요하다
보편적인 기능이 아닌 특수한 기능을 수행할때 사용한다
ex) 회원가입, 회원수정, 회원탈퇴 ...
- 정적메서드(=클래스 메서드)
객체를 생성하지 않아도 메서드를 호출할 수 있다
클래스명.정적메서드명 으로 접근한다
보편적이고 단순, 자주 사용되는 기능을 수행할때 사용한다
ex) 최댓값, 최솟값, 절댓값 ...
*******
static main 메소드에서 일반메소드 호출할때는 객체명.일반메소드
다른 클래스에서 정적메서드 호출할때는 클래스명.정적메소드
같은 클래스에서 정적메서드 호출할떄는 (클래스명 생략) 정적메소드
*******
자바의 메모리 영역
1. static 영역(메서드 영역)
패키지나 클래스 정보, static 키워드로 선언된 필드와 메소드가 올라가는 영역
JVM이 종료될때까지 유지된다
(프로그램이 시작하면 가장 먼저 메모리에 올라와지는 부분)
2. heap 영역
생성된 객체(인스턴스)들이 올라가는 영역
어떠한 참조변수도 힙영역에 있는 인스턴스를 참조하지 않게되면 메모리에서 소멸된다
3. stack 영역
중괄호로 구분되는 지역 내에서 유효한 데이터(지역변수, 매개변수)들이 올라가는 영역
선언되는 순간에 스택에 할당되었다가 그 영역({})을 벗어나면 소멸된다
'JAVA' 카테고리의 다른 글
[JAVA]고정배열, 가변배열, 동적배열(가변인자) (0) | 2021.01.18 |
---|---|
[JAVA]배열/ enhanced for 문/ Scanner 클래스 (0) | 2021.01.15 |
[JAVA] this 사용법/ 예시 (0) | 2021.01.13 |
[JAVA]다형성, 오버로딩, 생성자 오버로딩, 메소드 오버로딩 (0) | 2021.01.12 |
[JAVA]생성자 개념/ 목적/ 예시 (0) | 2021.01.11 |