새소식

TIL

[TIL] 240422 <자바> JVM,변수

  • -

 

[1. 자바에 대해서]

 

 

Java의 필요성

1. 공통 실행 환경이 있어 여러기기의 운영 체제에서 실행 가능

2. 코드의 이해와 유지보수가 쉬움 (클래스 통해 객체 생성)

3. 오류 방지 및 보안상 안전 (java언어를 byte코드로 변환하는 Compiler가 먼저 오류 체크)

4. 네트워크/db 연결 및 통신 등의 작업을 처리하는 API 제공 ( → 대규모 앱 개발 가능)
(앱 : 운영체제 위에서 실행되는 프로그램  ex. Mobile App, Server App)

5. 다양한 개발 도구와 라이브러리

 

 


 

JVM (Java Virtual Machine) : 자바 가상 머신

여러 기기 위에 Java 프로그램 실행할 수 있도록 가상의 기기 만들어주는 것

 

 

 

 

 

<Compile-time 환경>

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

 

 

<Run-time 환경>

Class Loader
: JVM으로 .class(바이트코드)를 불러와서 메모리에 저장

 

Interpreter
: 운영체제가 읽은 바이트코드(.class)를 기계가 실행할 수 있는 기계어로 번역

JIT Complier
: Interpreter의 효율을 높여주는 서포터 해석기 (빠른 .class코드 해석기)

 

Runtime 시스템
: 프로그램이 실행 중인 상태를 관리

 

메모리영역 : 운영체제로부터 JVM이 할당받은 메모리 영역

Garbage Collector
: 메모리 영역에서 안 쓰는 데이터를 주기적으로 청소

 

 


 

Java의 개발환경 구성

 

JRE (Java Runtime Environment) : 자바 실행 환경
→ .class 파일만 실행 가능

 

JDK (Java Development Kit) : 자바 개발 키트
→ .java파일을 .class 파일로 변환해주는 Compiler(javac), 코드디버깅하는 jdb 등의 기능 있음

 

 


 

[2. 변수]

 

 

1. 기본형 변수

- (논리형)boolean, (문자형)char('')

- (정수형)byte,short,int,long

  • int와 long 데이터값(리터럴) 구분 위해 long 숫자 뒤에 접미사 L을 붙임

 

- (실수형)float,double

  • float과 double 데이터값(리터럴) 구분 위해 float 숫자 뒤에 접미사 f를 붙임
  • float은 "부동 소수점 방식"을 사용하므로 long보다 더 넓은 범위 표현 가능
  • 부동 소수점 방식 : 가수와 지수를 구분하여 저장하고 이 값들을 곱한 값을 저장하는 방식
  •  

 


 

2. 참조형 변수

- String("", 문장 끝에 \0 저장), Object, Array, List

- 실제 값이 아닌 원본 값의 주소값 저장

  • Stack 영역 : "정적"으로 할당된 메모리 영역 (크기가 정해져 있는 기본형 변수 & 참조형 변수의 주소값 저장)
  • Heap 영역 : "동적"으로 할당된 메모리 영역 (크기가 계속 늘어날 수 있는 참조형 변수의 원본 저장)

 


 

3. Wrapper 클래스 변수

- 모든 기본형에 대한 래퍼 클래스 존재 (첫글자를 대문자로)
- 클래스로 변수 관리 시 객체지향의 많은 기능 사용가능

// 박싱 : 기본타입에서 래퍼클래스변수로 변수를 감싸는 것
// Integer 래퍼 클래스 num 에 21 의 값을 저장
int number = 21;
Integer num = new Integer(number);

// 언박싱 : 래퍼클래스변수를 기본타입변수로 가져오는 것
int n = num.intValue(); // 래퍼 클래스들은 inValue() 같은 언박싱 메서드들을 제공해줍니다.

 

 


 

입력과 출력

Scanner sc = new Scanner(System.in);  //Scanner객체를 new명령어로 생성
String input = sc.next();  //sc(Scanner)의 .next 실행시 input변수에 입력한 글자 받을 수 있음

System.out.println("입력값 : " + input);  // 입력한 글자를 출력합니다.

 

 


 

형변환

 

<변수 타입별 크기 순서>
byte(1) → short(2)  → int(4)  → long(8)  → float(4) (부동소수점!!)  → double(8)

 

  • 자동형변환 : 작은 타입에서 타입으로 형변환 시
    →  값의 손실 없이 변환 가능하여 컴파일러가 자동으로 형변환 해줌
  • 강제형변환(=캐스팅) : 타입에서 작은 타입으로 형변환 시
      값의 손실이 생겨 자동으로 형변환 해주지 않고 개발자가 선택하여 형변환함

'TIL' 카테고리의 다른 글

[TIL] 240424 <자바> 클래스  (0) 2024.04.24
[TIL] 240423 <자바> 연산자,조건문,반복문,배열,컬렉션  (0) 2024.04.23
[TIL] 240419 웹 기초  (0) 2024.04.19
[TIL] 240416 TIL 작성법  (0) 2024.04.19
[TIL] 240415 Git & Github 사용(1)  (0) 2024.04.16
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.