반응형

본 글은 책 자바의 정석을 ref 하며, 요약한 내용입니다.


 

✔ 자바는 객체지향 언어이다. (상속, 추상화, 캡슐화, 다형성)

✔ 풍부한 JAVA API 라이브러리를 제공한다.

✔ 자바 app은 JVM과 상호작용한다. 

 

JVM

소프트웨어로 구현된 하드웨어

자바가 실행되기 위해선 JVM이 필수적

운영체제에 종속적이다. (Write once, Run everywhere)

 

JRE(java runtime environment)

JVM + 자바 프로그램을 실행하는 도구들

* JRE가 설치되어 있다면 어떤 환경에서든지 자바 소스 파일을 실행할 수 있다.

* 개발이 필요없는 단계라면 JRE만으로 프로그램을 실행할 수 있다.

 

JDK(java devlopment kit)

JRE(java runtime environment) + JAVA API + 컴파일러.. (개발에 필요한 도구)

 

자바 프로그램 실행 과정

자바 app은 실행할 때 main 메서드를 시작점으로 한다.

Sample.java -> (javac.exe)(컴파일러) -> Sample.class -> (java.exe)(인터프리터) -> 프로그램 실행

 

 


 

변수

메모리 공간에 이름을 붙여주는 것

변수 타입에 맞게 메모리를 확보

 

변수의 초기화

이전에 사용했던 garbage value가 남아 있을 수 있어서 사용하기 이전에 초기화해주는 것이 바람직

* 전역 변수는 초기화 생략 가능

* 지역 변수는 반드시 초기화

 

변수의 종류

기본형 - boolean, byte, short, int, long, float, double, char

참조형 - 배열, 열거, 클래스, 인터페이스

* boolean을 제외한 나머지 7개의 기본형 타입은 서로 변환이 가능

* char 은 유니코드 체계를 위해 2byte (유니코드 정수 값이 저장된다)

* char과 shrot는 같은 2byte이지만 범위가 다르다.

* JVM 스택 연산에 4byte를 사용하므로 byte, short보다 int 형이 유리하다.

* 정수형 타입 크기를 벗어나면 overflow가 발생한다.

* 실수형 타입 float - 정밀도 7자리, double - 15자리

 

String 결합

한쪽이 String 이고, 연산자가 + 로 연결되어있다면 다른 한쪽도 String으로 만든 후 결합

 

printf

%5d  -  5칸 오른쪽정렬

%-5d  -  5칸 왼쪽 정렬

%14.10f  -  14칸. 소수점 이하 10칸

 

word

cpu가 한 번에 처리할 수 있는 데이터의 크기 32bit, 64bit

 

2진법, 8진법, 16진법

2진법 - 컴퓨터는 전기가 흐르면 1 흐르지 않으면 0

2진법을 이용하여 10진법, 8진법, 16진법 변환

 

실수의 진법 변환

소수부에 2를 계속 곱하여 0이 될 때까지 반복, 결과의 정수부 나열

 

2의 보수

N의 보수: 자릿수를 한자리 증가시키는, 더해서 0으로 만드는 수

ex) 숫자 73의 10의 보수 = 37 (73과 37은 보수관계)

 

✔ 보수에서는 자릿수가 중요하다.

만약 10진수가 2자리를 표현한다면 73과 37은 보수관계가 맞다. (73+37 = 100) "1"00 표현 불가

하지만 10진수가 3자리를 표현한다면 73과 937이 보수관계이다. (73+937 = 1000) "1"000 표현 불가

 

2의 보수에서는 MSB가 0이면 양수, 1이면 음수로 구분한다.

4자리 이진수에서는 0011의 2의 보수는 1101 (0011과 1101은 보수관계)

4자리 2의 보수 체계에서 1101은 십진수 -3의 역할을 한다.

십진수로 3인 0011의 반대 값은 -3인 1101

 

-3일 때 3의 보수(1101)를 구하고 더하면 -3의 효과를 낸다.

* 2의 보수 구하기 = 1의 보수 +1

 

오버플로우

4 자릿수의 bit체계에서 0111과 0001을 더하면 1000이 된다. MSB가 1이므로 음수다. 1000은 -8이다.

7+1의 결과는 8인데, 결과가 -8이 나왔다. 이를 표현 숫자 범위를 벗어난 오버플로우라고 한다.

 

인코딩과 디코딩

인코딩 - 문자를 숫자(지정된 바이트)로 

디코딩 - 숫자(지정된  바이트)를 문자로

디코딩을 하기 위해선 어떻게 인코딩했는지 알아야 한다.

 

UTF-8 UTF-16

UTF-8 -> 가변크기 1~4 byte 표현 (웹문서에서 유리, 아스키 코드와 호환됨, 대부분 프로그램의 Default)

* 110XXXXX 10XXXXXX 10XXXXXX

* 한 문자를 표현할 때 3Byte를 써야하는 경우 -> 110을 시작으로하고, 나머지 Byte는 10으로 시작.

* 110으로 문자 시작을 알림

UTF-16 -> 고정크기 2byte 표현 (자바에서 사용)

 

형 변환

기본형과 참조형 간의 형 변환은 불가능

더 큰 타입으로 대입될 때는 묵시적 형 변환, 작은 타입으로 대입될 때는 값이 손실되며 명시적 형 변환

 

정수형 -> 실수형 : 정밀도 제한으로 오차 발생 

실수형 -> 정수형 : 정수부만 저장

* byte < short < int < long < float < double

 

 


 

 

 

 

반응형

+ Recent posts