JVM(Java Virtual Machine )

여러가지의 기기위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는것

 

ava 컴파일러

Java 코드(.java 파일)를 운영체제가 읽을 수 있는 바이트 코드(.class 파일)로 변환

 

인터프리터

운영체제가 읽은 바이트 코드를 기계어로 번역

 

JIT 컴파일러

인터프리터의 효율을 높여주는 서포터 해석기

 

클래스 로더

JVM으로 바이트 코드를 불러와서 메모리에 저장

 

가비지 컬렉터

메모리 영역에서 안쓰는 데이터를 주기적으로 흡수해가는 청소기

JRE의 기능

Java Runtime Environment 자바 실행 환경

  • .class 파일만 실행 가능

 

JDK의 기능

  • JRE(JVM)의 기능 : .class  파일 실행
  • Java Compiler(javac) 기능 : .java 파일을 .class 파일로 컴파일
  • JDB 기능 : 디버깅

 

 

 

 

기본형 변수

  • 모두 소문자로 시작된다
  • 비객체 타입이므로 null 값을 가질 수 없다. (기본값이 정해져 있음)
  • 변수의 선언과 동시에 메모리 생성
  • 모든 값 타입은 메모리의 스택(stack)에 저장
  • 저장공간에 실제 자료 값을 가진다.

 

참조형 변수

  • 기본형 과는 달리 실제 값이 저장되지 않고, 자료가 저장된 공간의 주소를 저장한다.
  • 즉, 실제 값은 다른 곳에 있으며 값이 있는 주소를 가지고 있어서 나중에 그 주소를 참조해서 값을 가져온다.
  • 메모리의 (heap)에 실제 값을 저장하고, 그 참조값(주소값)을 갖는 변수는 스택에 저장
  • 참조형 변수는 null로 초기화 시킬 수 있다.

String, 객체, 배열, 리스트 등등

 

 

Stack 영역 vs Heap 영역

  • Stack의 경우에는 정적으로 할당된 메모리 영역
    • 크기가 정해져 있는 변수를 저장
    • 크기가 정해져 있는 참조형 변수의 주소 값도 저장
  • Heap의 경우에는 동적으로 할당된 메모리 영역
    • 크기가 계속 늘어날 수 있는 참조형 변수의 원본을 저장

 

 

 

ASCII 코드 형변환

  • 입력한 정수를 문자로 바꿔서 출력하는 메서드
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int asciiNumber = sc.nextInt();

        char ch = (char)asciiNumber;

        System.out.println(ch);  // 입력한 글자를 출력합니다.

    }
}

 

 

  • 입력한 문자의 제일 첫 글자를 숫자로 출력하는 메서드
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int letter = sc.nextLine().charAt(0); // charAt(0) :첫번쨰 문자를 받아온다.

        int asciiNumber = (int)letter;

        System.out.println(asciiNumber);  // 입력한 글자를 출력합니다.

    }
}

 

'TIL > WEEK2' 카테고리의 다른 글

JAVA3 객체지향 프로그래밍2  (0) 2023.05.26
JAVA3 객체지향 프로그래밍1  (0) 2023.05.25
JAVA 2주차 배열과 컬렉션  (0) 2023.05.24
JAVA 2주차 조건문과 반복문  (0) 2023.05.23

+ Recent posts