241010 JVM과 JAVA 변수

물고기가자라면어그로·2024년 10월 10일
0

JAVA는 사람들이 가장 많이 쓰는 개발 언어 중 하나로서 운영체제와 기기를 넘나드는 공통 실행환경과 객체 중심 언어를 특징으로 하고 있다. 이를 위해서 필요한 것이 바로 JVM이다.

JVM 자바 가상 머신

JVM : Java Virtual Machine 자바 가상 머신
   : Java를 여러 기기에 실행시킬 수 있도록하는 가상의 기기

JVM의 구성요소는 다음과 같다.

  • 바이트 코드 : Java 컴파일러가 내가 작성한 코드를 운영체제가 읽을 수 있도록 변환시킨 코드; .class파일의 형태를
  • 클래스 로더 : 바이트 코드를 JVM으로 가져와 메모리 영역에 담는 운반기
  • 인터프리터 : 운영체제가 읽은 바이트 코드를 기기가 실행할 수 있는 기계어로 번역
  • JIT 컴파일러 : 빠른 .class 코드 해석기(인터프리터의 효율을 높여주는 서포터 해석기)
  • 메모리 영역 : 운영체제로부터 JVM이 할당받은 메모리 영역
    • stack과 heap이 있음.
      • stack : 정적으로 할당된 메모리 영역 (크기가 정해진 변수 저장)
            : 기본형 변수참조형 변수의 주솟값
      • heap : 동적으로 할당된 메모리 영역
           : 참조형 변수의 원본값
  • 가비지 컬렉터 : 메모리 영역에서 안쓰는 데이터를 주기적으로 흡수해가는 청소기

main 메서드에 대한 이해

'Hello World'를 출력할 수 있는 간단한 코드를 해석하며 각 단어가 무엇을 의미하는지 살펴보자.

public class Main {
	public static void main(String[] args) {
    	System.out.println("Hello world!");
    }
}

main 메서드는 java 프로그램이 시작할 때 가장 먼저 실행되기로 약속한 메서드이다.

public class main{}

  • public : 접근제어자
    • 접근을 어디까지 허용할 것인냐?
    • private과 protected 도 있음
  • class : 객체를 만드는 클래스라고 선언
  • Main : 클래스 명
    • 파일명과 일치시켜야 함

public static void main

  • public : 접근제어자
  • static : 이 프로그램이 시작될 때 무조건 실행
  • void : 메서드의 출력값의 데이터타입
    • void는 출력값이 없다는 정의
    • int, char, string 등도 쓸 수 있음

(String[] args)

  • 매개변수 자리에 대한 설명(input의 타입과 변수명)
  • String[] : 문자열 여러 개 데이터 타입
  • args : 변수명 (아무거나 가능)

System.out.println()

  • System안의 out안의 println이라는 행동
  • print()만 쓰면 줄바꿈 X println()은 줄바꿈O

JAVA 변수 타입

기본형 변수

  • 논리형 변수 : boolean
    • True/False
  • 문자형 변수 : char
    • 문자 하나만 저장
    • 작은따옴표('')로 묶음
  • 정수형 변수 : byte, short, int, long
    • byte : -128 ~ 127
    • short(2byte) : -32768 ~ 32768
    • int(4byte) : -21억~21억
    • long(8byte) : 9백경 정도의 매우 큰 수 (뒤에 L을 붙여서 표기*이때 L을 접미사라고 함)
  • 실수형 변수 : float, double
    • float(4byte) : 3.4 -10^38 ~ 3.4 10^38 (long보다 큼)(뒤에 f붙여 표기)(소숫점 7자리 까지 표기가능)
    • double(8byte) : 1.7 -10^308 ~ 1.7 10^308 (long보다 큼)(소숫점 16자리 까지 표기가능)

참조형 변수

  • 문자열 변수 : string
    • 큰따옴표("")로 묶음
  • 그 외 : object, Array, List ...

래퍼 클래스 변수

  • 기본형 변수를 클래스로 한번 랩핑
  • 기본형 변수 타입명에서 첫글자를 대문자로 바꿈
  • 랩핑/언랩핑
  • Byte, Short, Integer, Long, Float, Double, Character, Boolean ...
  • 클래스로 변수를 관리해 객체지향의 여러 기능을 사용할 수 있게 함

입력과 출력

입력
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);

0개의 댓글