[Java][국비교육] Day 3

Ga02·2022년 12월 29일

국비교육

목록 보기
2/82
package java01_Variables;

//ctrl + shift + c : 선택영역에 한 줄 주석 토글(toggle) 단축키
//shift + end : 커서 기준 한 줄의 끝까지 선택
//shift + home : 커서 기준 한 줄의 처음까지 선책


public class Vriables_01 {
	public static void main(String[] args) {
		
//		System.out.println("동작테스트");
		
		System.out.println( 12345 );	//int형 타입(정수형)
		System.out.println( 123.456 );	//double형 타입(실수형)
		System.out.println( true );		//boolean형 타입(논리형)
		System.out.println( 'A' );		//char형 타입(문자형)
		
		System.out.println( "Hello" );	//String형 타입(문자열 타입)
//----------------------------------------------------------------------
		
		System.out.println( '가' );
		System.out.println( (int)'가' );	//char형 -> int형 변환하여 출력 : 440032
		
		System.out.println( 99 );
		System.out.println( (char)99 );		//int형 -> char형 변환하여 출력 : 'c'
		
	}

}

🔍 import

파일, 폴더의 설정값까지 가져오는 것

  • package Exploler에서 지워진 프로젝트단위(폴더)를 가져올 수 있음
  • 강사님 코드 import할 때 같은 프로젝트 내 패키지만 새로 만들고 .java 파일만 가져오기

🔍 JDK, Java Development Kit

자바 개발 도구

  • 자바 프로그램을 개발하기 위한 컴파일러(Compiler)를 포함
  • JDK를 설치하면 JRE가 같이 설치됨
    ➡ 버전에 따라 자동으로 포함되는 것도, 선택을 하는 것도 있음
  • Open JDK = 기본 Java
  • Oracle Java = 기본 Java + Java SE (오라클만의 확장기능)

🔍 JRE, Java runtime Environment

자바 실행 환경

  • 자바 프로그램을 실행하기 위한 JVM을 포함
  • 프로그램 실행에 필요한 자바 라이브러리를 포함

➰ JRE System Library

시스템 개발에 필요한 API의 묶음

  • API 프로그램을 만들기 위해 필요한 코드들
    (이거 없으면 아마 안될걸~ 싶은걸 모아놓음)
  • 많은 클래스 파일을 묶어놓은 아카이브 👉🏻 .jar (java Archive)

    자바 8 API Documentation 💻 북마크 해두고 자주 들여다보기
    JDK 11 버전 API


🔍 소스코드를 번역하는 3가지 방식

소스코드 번역 : Native Code로 만드는 것이 목적

➰ Compile, Compiler (컴파일, 컴파일러)

소스를 실행하기 전에 미리 번역해놓는 방식

  • 사전 번역시간이 많이 필요 ➡ 실행하기 전에 시간이 많이 필요 👉🏻 개발자 단점
  • 프로그램 실행도중 번역하는 시간 필요 ❌
  • 빠른 반응성을 보임 👉🏻 사용자 장점

➰ Interprete, Interpreter (인터프리트, 인터프리터)

소스를 미리 번역해놓지 않고 필요한 부분을 번역하여 동작하는 방식 ➡ 그때그때 번역

  • 사전 번역시간 필요 ❌
  • 소스코드만 가지고 실행 가능
  • 프로그램 실행 도중 번역하는 시간 필요
  • 느린 반응성을 보임 👉🏻 사용자 단점

➰ JIT 컴파일, Just-In time Compiler

인터프리트 기반으로 작동

  • 한 번 번역한 코드는 캐시(Cache, 임시저장소)에 저장해두고 사용
  • 인터프리터 방식의 단점인 느린 반응성 개선
    JVM은 JIT컴파일 방식으로 바이트코드를 실행

🔍 JVM 실행동작

Source Code 👉🏻 Byte Code 👉🏻 JVM 전달

     ------------------
     Library Code(Byte Code) load
     + 사용자의 Byte Code
     ------------------
     JIT 컴파일
     ------------------
     Native Code 완성
     (운영체제가 실행할 수 있는 코드)
     ------------------
     완성코드 실행
  • 운영체제가 실행할 수 있는 코드는 윈도우 리눅스 마다 다름
    👉🏻 Java는 운영체제(플랫폼)을 타지 않음

🔍 Java의 데이터타입

Java에서 데이터를 표현하는 8가지 방식

➰ Data Type, 자료형

데이터를 표현하는 방식을 정한 규칙

➰ 정수형 타입 (소수점 이하를 표현하지 않는 숫자)

타입크기(Byte)범위
Byte1Byte-128~127
short2Byte-32,768~32,767
int4Byte-21억~21억
long8Byte-900경~900경
  • 기본타입 int
  • byte는 메모리 측면에서 좋고, int는 속도 측면에서 좋음
    ➡ CPU는 4Byte 단위로 계산하기 때문에 1Byte로 올리면 4Byte로 바꾸는 작업이 필요

➰ 실수형 타입 (소수점 이하를 표현하는 숫자)

타입크기(Byte)
float4Byte
double8Byte
  • 기본타입 double

➰ 논리형 타입

타입크기(Byte)범위
boolean1Bytetrue / false

➰ 문자형 타입

타입크기(Byte)
char2Byte
  • 문자형은 컴퓨터 내에서 정수형타입으로 처리됨
    👉🏻 숫자코드와 문자를 매핑한 문자체계를 표로 적용해놓고 사용
    ➡ 사람이 받아들이는 데이터에서 컴퓨터가 받아들이는 데이터에 맞는 문자표
    ➡ 글자로서 0, 1, 2, 3...에 대한 숫자표도 존재. 숫자를 문자로 입력하냐 숫자로 입력하냐에 따라 컴퓨터에 저장되는 내용이 달라짐

  • ASCII 코드 American Standard Code for Informarion Interchange

    • 영어 대소문자, 숫자, 특수기호, 가상키를 매핑한 표 ➡ 영어 외의 언어 표현 불가
  • Unicode 유니코드

    • ASCII로 표현할 수 없는 전세계 문자들을 매핑한 표
    • 변환과정(인코딩)을 적용해서 사용
      👉🏻 같은 한글이어도 인코딩 방식에 따라 다른 값을 가질 수 있음
    • 한글 인코딩 방식 UTF-8 EUC-KR CP949(MS949
      ➡ 주로 UTF-8 선호
profile
IT꿈나무 댓츠미

0개의 댓글