JAVA는 사람들이 가장 많이 쓰는 개발 언어 중 하나로서 운영체제와 기기를 넘나드는 공통 실행환경과 객체 중심 언어를 특징으로 하고 있다. 이를 위해서 필요한 것이 바로 JVM이다.
JVM : Java Virtual Machine 자바 가상 머신
: Java를 여러 기기에 실행시킬 수 있도록하는 가상의 기기
JVM의 구성요소는 다음과 같다.
- 바이트 코드 : Java 컴파일러가 내가 작성한 코드를 운영체제가 읽을 수 있도록 변환시킨 코드; .class파일의 형태를
- 클래스 로더 : 바이트 코드를 JVM으로 가져와 메모리 영역에 담는 운반기
- 인터프리터 : 운영체제가 읽은 바이트 코드를 기기가 실행할 수 있는 기계어로 번역
- JIT 컴파일러 : 빠른 .class 코드 해석기(인터프리터의 효율을 높여주는 서포터 해석기)
- 메모리 영역 : 운영체제로부터 JVM이 할당받은 메모리 영역
- stack과 heap이 있음.
- stack : 정적으로 할당된 메모리 영역 (크기가 정해진 변수 저장)
: 기본형 변수와 참조형 변수의 주솟값- heap : 동적으로 할당된 메모리 영역
: 참조형 변수의 원본값- 가비지 컬렉터 : 메모리 영역에서 안쓰는 데이터를 주기적으로 흡수해가는 청소기
'Hello World'를 출력할 수 있는 간단한 코드를 해석하며 각 단어가 무엇을 의미하는지 살펴보자.
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
main 메서드는 java 프로그램이 시작할 때 가장 먼저 실행되기로 약속한 메서드이다.
- public : 접근제어자
- 접근을 어디까지 허용할 것인냐?
- private과 protected 도 있음
- class : 객체를 만드는 클래스라고 선언
- Main : 클래스 명
- 파일명과 일치시켜야 함
- public : 접근제어자
- static : 이 프로그램이 시작될 때 무조건 실행
- void : 메서드의 출력값의 데이터타입
- void는 출력값이 없다는 정의
- int, char, string 등도 쓸 수 있음
- 매개변수 자리에 대한 설명(input의 타입과 변수명)
- String[] : 문자열 여러 개 데이터 타입
- args : 변수명 (아무거나 가능)
- System안의 out안의 println이라는 행동
- print()만 쓰면 줄바꿈 X println()은 줄바꿈O
입력
System.in
객체의 next()
명령을 사용
Scanner sc = new Scanner(System.in); //Scanner 객체 생성
String A = sc.next(); //sc(Scanner)의 .next를 실행하면 input에 입력한 글자를 받을 수 있음
출력
System.out
객체의 println()
명령을 사용
Scanner sc = new Scanner(System.in);
String A = sc.next();
System.out.println(A);