프로그램의 동작
프로그램은 운영체제를 통해 메모리에 기계어로 로드되고, CPU에 의해 실행된 후 메모리에 다시 저장된다.
키보드와 모니터를 통해 입력과 출력을 한다.
JDK
Java Development Kit(자바 개발 도구)
프로그램 개발에 필요한 재료이다. java, javac등이 있다.
Java개발자가 사용한다.
JRE
Java Runtime Environment(자바 실행 환경)
Java로 만들어진 프로그램을 실행할 때 필요하다.
일반 사용자가 사용한다.
컴파일
컴퓨터는 우리가 사용하는 언어를 읽을 수 없다. 그래서 컴퓨터에 입력한 언어를 컴퓨터의 언어로 바꿔주어야 하는데 이를 컴파일이라고 한다. 그리고 컴파일 하는 프로그램을 컴파일러라고 한다. (ex. 이클립스)
소스 코드 전체를 실행하기 전에 기계어로 번역하는 방식이다.
인터프리터
명령어를 하나씩 기계어로 번역하면서 실행한다. (ex. 파이썬)
JIT컴파일
Just-In-Time컴파일
실행 시점에서 기계어로 번역하는 컴파일 기법이다. 실행 시점에서 인터프리터 방식으로 기계어 코드를 생성하며 그 코드를 캐싱(메모리에 로드)하여 같은 함수가 여러번 불릴 때 매번 기계어 코드를 생성하는 것을 방지한다. (ex. 자바)
Java의 컴파일
JVM(Java Virtual Machine, 자바 가상 머신)이 바이트코드를 실행하고 JIT컴파일 방식으로 기계어로 변환된다.
소스코드(.java) → 컴파일(javac.exe) → 바이트코드(.class) → JVM(java.exe) → 기계어 코드 → 실행
\t: 일정 칸을 띄고 출력
\n: 한 줄 띄고 출력
println()은 자동으로 한 줄 띄고 출력
printf()를 이용하여 서식을 부여할 수 있다
%s 문자열 서식
%과 s사이의 숫자를 입력하여 정렬 방식을 정할 수 있다.
%14s 14칸 중 맨 오른쪽에 문자열 출력 (14자리 문자열. 왼쪽 빈 자리 공백)
%-14s 14칸 중 맨 왼쪽에 문자열 출력 (14자리 문자열. 오른쪽 빈 자리 공백)
%d 부호 있는 10진 정수로 출력
%f 고정 소수점으로 표현한 실수 출력
변수
메모리에 저장된 값 중에서 변경할 수 있는 데이터를 말한다.
프로그램이 실행되는 동안에 임시로 사용하는 메모리 공간이다.
데이터가 저장된 메모리에 접근하기 위해서 변수명(식별자)를 부여한다.
반복되는 값을 쉽게 관리할 수 있다.
변수 선언한다 → 변수명과 데이터 형식을 지정한다 → 메모리에 공간 할당된다.
정수형 변수의 메모리 크기
데이터 타입 | 메모리 크기 |
byte | 1byte |
short | 2byte |
int | 4byte |
long | 8byte |
정수는 int가 기본형이다.
필드 중에서 변하지 않는 값(상수)은 일반적으로 모두 대문자로 표기한다.
Wrapper(래퍼)클래스
기본형을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스라 한다.
주로 기본형의 첫 글자를 대문자로 바꾼 형태이다.(Byte, Short, Integer, Long, Character,...)
**현재까지 배운 클래스를 구성하는 요소: 메소드(동작), 필드(상수와 변수)
변수에 데이터 타입의 표현 가능 범위를 벗어난 값을 저장하면 오류가 발생한다.(overflow)
Long형식의 데이터는 뒤에 L(l)을 표기한다.
표현 범위가 적은 데이터 타입에 표현범위가 큰 데이터 타입의 값을 넣으면 오류가 발생한다.
result(short형) = n2(short형) + 100(int형); (오류 발생)
실수형 변수의 메모리 크기
데이터 타입 | 메모리 크기 |
float | 4byte |
double | 8byte |
실수는 double이 기본형이다.
소수점 이하 자리수 표현이 많이 되는 것을 "정밀도가 높다."라고 한다
즉 double형이 float형보다 정밀도가 높다.
float형식으로 데이터를 표시할 때는 뒤에 F(f)를 표기한다.
p1(float형) = p1(float형) * 1.1(double형); (오류 발생)
실제 기계어로 실수를 표현하는 방식에는 복잡한 형식이 있다. (1.1+0.6=1.7000000000000002)
printf()의 %f를 사용하여 소수점 아래 몇 자리까지 출력할지를 정할 수 있다.
%5.2f : 전체 5칸, 소수점 이하 2자리
0.0이 아닌 값을 0.0으로 나누면 Infinity(무한대)가 출력된다.
0.0을 0.0으로 나누면 NaN(Not a Number)이 출력된다.
System.out.printf("둘레를 구했습니다. > %.3fcm\n", round); round 값은 %.3f 위치에 출력된다.
* 새로 배운 단축키
• 한 줄 복사: Crtl+Alt+위/아래방향키
• 한 줄 삭제: Crtl+d
• 행 이동: Alt+위/아래 방향키
• Crtl+space bar: 자동 완성? (main 작성 후 입력 시 main메소드 나온다. 위에 사용한 변수명 자동 완성 가능)
'수업 일지 > JAVA' 카테고리의 다른 글
6일차 - [JAVA] 클래스/객체/메소드/static/final/전역변수/지역변수 (0) | 2022.01.05 |
---|---|
5일차 - [JAVA] 삼항연산자/while문/break/continue (0) | 2022.01.04 |
4일차 - [JAVA] 연산자/switch문/String/for문 (0) | 2022.01.03 |
3일차 -[JAVA] 식별자/printf()/형변환/Scanner/if 조건문 (0) | 2021.12.30 |
1일차 - OT/JDK, 이클립스 다운로드 및 설정/출력 (0) | 2021.12.28 |
댓글