JVM (Java Virtual Machine)의 메모리
(1) 스택 영역 (Runtime Stack) : 실행시 사용하는 메모리 영역
(2) 힙 영역 (Garbage Collection Heap) : 동적 메모리 할당 영역
(3) 상수 영역 (Constant & Code Segment) : 상수 데이터 및 static 데이터 할당 영역
(4) 레지스터 영역 (Process Register) : 프로세서 실행 관련 메모리 할당 영역
======================================================================
자바의 메모리 구조
: OS에 의하여 프로그램이 수행되면 JVM은 OS로부터 적절한 크기의 메모리 공간을 얻어내게 된다.
그리고 얻어낸 메모리 공간을 JVM은 3영역으로 나누어 관리한다.
메소드(method area) 영역 : 매개변수, 지역변수
(메소드의 실행이 종료되면 자동반환)
스택(Stack) : 매개변수, 지역변수
(메소드의 실행이 종료되면 자동반환)
힙(Heap) : 클래스객체, 배열객체, 문자열객체
(new 연산자 사용, 객체가 사용하는 메모리공간)
java.lang -> system ->
======================================================================
class란? User Data Type
- 멤버변수 : 전역변수 (값 전달)
- 필드 : 상수
- 생성자 : 멤버변수 초기화 및 객체 초기화
- 메소드 : 멤버들을 이용해서 명령을 수행하는 단위 ex) println
======================================================================
메소드의 종류 : static, non-static (내일)
메소드의 원형 : void, return형
======================================================================
1. static void형
[형식] - main
접근제한자 static void userName(매개인자) {
명령;
}
[사용방법]
userName(매개인자값...);
2. static return 형
리턴하는 값의 데이타 형을 기재한다.
[형식]
접근 제한자 static dataType userName(매개인자) {
명령;
return dataType 값;
}
[사용방법]
user
// C(Create)R(Reuse)U(Update)D(Delete)를 모두 만족해야 참조관계
package com.exam;
// import com.test.*; // com.test 밑에 있는 모든 클래스를 참조
import com.test02.MY; // com.test 밑에 있는 MY 클래스를 참조, 이것만 쓸거면 이것만 import 하는게 좋음 (메모리 문제)
public class Test {
public static void main(String[] args) {
MY.Disp();
MY.Prn();
com.test02.MY.Disp(); // import 하지 않아도 이렇게 입력하면 불러오기 가능
com.test02.MY.Prn();
}
}
package com.test01;
public class Test {
public static int getA() {
return 100;
}
public static void getB() {
System.out.println(300);
}
public static char getCh() {
return 'A';
}
public static double getD() {
return 90.9;
}
public static void main(String[] args) {
int a=getA();
System.out.println("a="+a);
System.out.println("a="+getA()); // 바로 메서드로 호출해서 출력
// System.out.println(getB()); 에러메세지 출력
System.out.println(getCh()); // A
System.out.println(getD()); // 90.9
int hap=(int)(getA()+getD());
System.out.println("hap="+hap);
// int a=(int) 90.9; 90 double d=90; 90.0
}
}
'BigData > JAVA' 카테고리의 다른 글
[Day5] 캡슐화 (0) | 2015.03.05 |
---|---|
[Day5] 반복문 (0) | 2015.03.05 |
[Day4] 조건문 (0) | 2015.03.05 |
[Day2] 자료형 (0) | 2015.03.05 |
테스트 (0) | 2015.03.04 |