JAVA(1) JVM,데이터타입,연산자
JAVA
- 객체지향 프로그램으로 재사용성, 유지보수, 확장성이 좋다 + 코드관리에도 유리
- 안정적이다
- 풍부한 라이브러리가 제공되고 오픈소스와 연동된다.
JVM 이란
- 자바 프로그램을 실행할 수 있는 가상 머신
JAVA Virtual Machine의 약자로 인터프리터나 jit컴파일 방식으로 바이트 코드를 실행 할 수 있는 주체
JVM은 플랫폼 독립적으로 JVM이 실행 가능한 환경이라면 어디서든 JAVA 프로그램이 실행될 수 있다
JVM 메모리 구조
- 메소드 영역: 모든 클래스 정보와 static 변수가 저장됨
- 힙영역: 객체가 저장됨
- 스택 영역: per thread 자료구조. 메소드의 스택으로 사용됨
- PC 레지스터스: per thred 자료구조. 각 스레드의 PC를 저장함
JDK와 JDE 차이
- JRE: 라이브러리, JVM, 애플릿을 돌리기 위해 필요한 컴포턴트로 구성됨
- JDK: JRE + 컴파일러, 디버거 등 개발에 필요한 도구가 추가됨
JAVA 데이터 타입
타입 | 메모리 크기 | 기본값 | 범위 | |
---|---|---|---|---|
논리형 | boolean | 1byte | false | true, false |
정수형 | byte short int long |
1byte 2byte 4byte 8byte |
0 0 0 0L |
-128~127 -32,768~32,767 -2,147,483,648~2,147,483,647 -9,223,372,036,854,775,808~-9,223,372,036,854,775,807 |
실수형 | float double |
4byte 8byte |
0.0F 0.0 |
(3.4 X 10-38) ~ (3.4 X 1038)의 근삿값 (1.7 X 10-308) ~ (1.7 X 10308)의 근삿값 |
문자형 | char | 2byte | ‘\u0000’ | ㅅ0~65,535 |
상수 & 리터럴
상수(constant) 변하지 않는 수
int i = 10;
final float PI = 3.14f;
String str = "Hello World";
리터럴은 코드상에서 변수나 상수에 들어가는 값
위에선 10, 3.14f, Hello World 와 같은 값들을 리터럴이라고 함
형 변환
서로 다른 자료형의 값이 대입되는 경우 형 변환 발생
- 묵시적 형 변환: 작은 수에서 큰 수로 덜 정밀한 수에서 더 정밀한 수로 대입되는 경우
- 명시적 형 변환: 변환되는 자료형을 명시, 자료의 손실이 발생 할 수 있음
산술 연산자
int a = 3;
int b = 3;
a++ == 3; true
++b == 3; false
비트 연산자
연산자 | 설명 | 예 |
---|---|---|
~ | 비트의 반전(1의 보수) | a = ~a: |
& | 비트 단위 AND | 1 & 1 1반환 그 외는 0 |
| | 비트 단위 OR | 0|0 0반환 그 외는 1 |
^ | 비트 단위 XOR | 두 개의 비트가 서로 다른 경우에 1을 반환 |
« | 왼쪽 shift | a « 2 변수 a를 2비트 만큼 왼쪽으로 이동 |
» | 오른쪽 shift | a » 2 변수 a를 2비트 만큼 오른쪽으로 이동 |
»> | 오른쪽 shift | » zero fill right shift: |
예제
int num1 = 0B00001010; // 10
int num2 = 0B00000101; // 5
System.out.println(num & num2); // 0
System.out.println(num | num2); // 15
System.out.println(num ^ num2); // 15
System.out.println(num2 << 1); // 10 : (num2 * 2^1)
System.out.println(num2 << 2); // 20 : (num2* 2^2)
System.out.println(num2); // 5 : num2 값은 변한지 않음
// System.out.println(num2 <<= 2); // num2 = 20이 됨
관계 연산자
== != > < >= <=
논리 연산자
&& || !
- and의 우선순위가 or보다 우선순위가 높음
연산자 우선순위
- 일차식
() [] .
괄호, 배열, 참조 연산자 - 단항
! ++ -- + -
- 산술
% /
,+ -
- 비트 이동
<< >>
- 관계
< > <= >=
- 관계
== !=
- 비트 곱
&
비트 차^
비트 합|
순서대로 - 논리 곱
&&
논리 합|
- 조건(삼항 연산자)
? :
- 대입
= += -= *= %= /=
댓글남기기