운영체제 및 프로그램
- 운영체제
: 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모음
- 프로그램
: 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위해 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어
컴퓨터의 자료표현
- bit
: binary digit의 약자
0과 1을 표현할 수 있는 상자 한개
- byte
: 1byte = 8bit
정보를 처리하기 위한 최소 단위
2^8 = 256개의 표현 가능
비트 | bit | 0/1 |
바이트 | Byte | 8 bit |
킬로바이트 | KB | 2^10 Byte |
메가바이트 | MB | 2^20 Byte |
기가바이트 | GB | 2^30 Byte |
테라바이트 | TB | 2^40 Byte |
- 음수, 양수 범위
127 ~ 0 양수
-1 ~ -128 음수
- 보수
보충해주는 수, 어떤 수를 만드릭 위해 필요한 수
보수가 필요한 이유는 컴퓨터는 덧셈만을 할 수 있기 때문에 뺄셈의 경우 보수로 만들어 더해야 하기 때문
a - b 의 경우, a + (-b)
# | 2진수 | 10진수 |
1 | 0000 | 0 |
2 | 0001 | 1 |
3 | 0010 | 2 |
4 | 0011 | 3 |
5 | 0100 | 4 |
6 | 0101 | 5 |
7 | 0110 | 6 |
8 | 0111 | 7 |
9 | 1000 | -8 |
10 | 1001 | -7 |
11 | 1010 | -6 |
12 | 1011 | -5 |
13 | 1100 | -4 |
14 | 1101 | -3 |
15 | 1110 | -2 |
16 | 1111 | -1 |
보수는
0 -> 1 or 1 -> 0 반전시킨 뒤 2진수에 1 더해주기
자료형 종류
원시 자료형
자료형 | 메모리 사이즈 | 범위 | 기본값 |
byte | 1 byte | -2⁷ ~ 2⁷-1 | 0 |
short | 2 bytes | -2¹⁵ ~ 2¹⁵-1 | 0 |
int | 4 bytes | -2³¹ ~ 2³¹-1 | 0 |
long | 8 bytes | -2⁶³ ~ 2⁶³-1 | 0L |
float | 4 bytes | -3.40E+38 ~ 3.40E+38 | 0.0f |
double | 8 bytes | 1.79E+308 ~ 1.79E+308 | 0.0d |
char | 2 bytes | 0 ~ 2¹⁶-1 | \u0000 |
boolean | 1 bit | 0 or 1 | 0 (false) |
참조 자료형
Object
모든 Class와 Enum은 Object 클래스를 상속한다. 다시말해 Object는 모든 Class와 Enum의 일반화된 타입이라는 것이다. 여기서 주의할 점은 Interface는 Object를 상속하지 않는다는 사실이다.
String
String은 기본 자료형이 아니라는 사실은 익히 잘 알려져 있다. String은 char의 배열로 구현된 참조 자료형이다.
Array
배열은 참조 자료형이다
Wrapper 클래스
Wrapper Class는 기본 자료형을 감싼 클래스이다. 대표적으로 Byte, Short, Integer, Long, Float, Double, Character, Boolean이 있다. 이것을 사용하는 이유는 앞서 설명한 String을 사용하는 이유와도 동일하다. 기본 자료형을 클래스로 랩핑하면 얻을 수 있는 이점은 유용한 메서드를 제공할 수 있다는 점이다.
하지만 이보다 더 중요한 이유는 제네릭(Generic)에 있다. 제네릭에 사용되는 매개변수 T는 Object 자료형만 받을 수 있다. 이것은 다시 말해 클래스로 정의된 객체만을 전달받는다는 것이다. 다만 코드를 짜다보면 제네릭을 기본 자료형에 적용해야 하는 경우가 있다. 이러한 경우에는 Wrapper Class을 이용하면 문제가 해소된다.
- 참조 자료형은 기본 자료형과 달리 메서드를 가질 수 있다.
- 참조 자료형의 기본값은 null이다
자바가상머신 (JVM, Java virtual machine)
: 자바 바이트코드를 실행할 수 있는 주체
- 자바 바이트코드는 플랫폼에 독립적이며 모든 JVM은 자바 가상 머신 규격에 정의된대로 자바 바이트코드를 실행
- 어디에서도 자바파일만 있다면 실행가능하다
- JVM은 운영체제에 따라서 달라진다
자바실행환경(JRE, Java runtime environment)
: JVM + 실행시키기 위해 필요한 것들
자바개발도구(JDK, Java development kit)
: JRE + 필요한 도구들(문서, 컴파일러 등)
ex_) 스타트캠프에서 사용했던 OpenJDK —>zulu
- 자바에서는 .java 파일에서 .class 파일로 바꿔주는 것을 컴파일로 본다
- Hello.Java : 원시 프로그램
- Hello.java —> 컴파일 —> Hello.class
컴파일
: 고급언어를 기계어로 바꿔주는 과정을 컴파일링이라고 한다
IDE(통합 개발 환경)
: 자동완성 등의 기능이 있는 개발 툴
'Java' 카테고리의 다른 글
정적 바인딩 & 동적 바인딩 (0) | 2024.07.17 |
---|---|
다중 상속 (1) | 2024.07.17 |
default 메소드 (0) | 2024.07.17 |
static 메소드 vs 인스턴스 메소드 (0) | 2024.07.17 |
이펙티브 자바 - Item(1) 생성자 대신 정적 팩터리 메소드를 고려하라 (0) | 2024.07.15 |