0. 데이터타입 기초
0-1) 비트 ( bit = binary degit )
- 이진수의 하나의 자릿수를 나타내며 0과 1을 의미
- 컴퓨터에서 0은 전류가 흐르지 않는 상태, 1은 그 반대이다.
또는 0은 거짓, 1은 참을 의미하기도 한다.
0-2) 진법 (Base N)
- 수를 셀 때, 자릿수가 올라가는 단위를 기준으로 하는 셈법의 총칭
- 일상에서 가장 보편적으로 사용하는 것은 10진법으로 (0~9의 범위를 가진다)
- 컴퓨터에서 사용하는 진법은 2진법으로 0과 1
- 8진법은 0~7, 16진법은 0~15까지의 수를 사용하는 진법이다.
단, 16진법은 9이후를 10으로 표기하지 않고 A로 표기한다. (A~F)
0-3) 진법 변환
- 10진법 -> 2진법 (소인수분해)
몫과 나머지를 쓰고 나머지를 마지막나머지 + 밑에서부터 차례대로 붙여가면 된다.
바꾼 값의 결과는 아래와 같으며 해당 수의 진법 표기는 괄호안에 적는다. (10)은 10진법 표기
13 (10) -> 01101 (2)
- 8진법 -> 10진법 (자릿수 변환)
0307 (8)
(3 x 82) + (0x81) + (7 x 80) = 199 (10) // 0승은 항상 1
0-4) 리터럴
소스코드에서 프로그래머에 의해 직접 입력된 값, 자바에서 실제 처리하는 데이터
1. 기본 데이터 타입
- 자바에서의 기본테이터 타입 (반대는 참조데이터 타입) 은 아래 8가지이다.
- 타입이름은 모두 소문자임에 유의
- 1Byte 는 8 bit이다.
즉 0000 0000(2) ~ 1111 1111(2) 의 값을 표현을 가진다.
1Byte 2Byte 4Byte 8Byte
(8bit) (16bit) (32bit) (64bit)
-----------------------------------------
정수형 byte short int long
실수형 float double
문자형 char --- 실제로 char(캐릭터) 타입은 정수형에 포함되나 이는 뒤에서 설명
논리형 boolean
char는 ushort, int, uint, long, uyong, float, double 또는 10진수로 암시적으로 변환될 수 있다. 그러나 다른 유형에서 char 유형으로의 암묵적 변환은 없다.
1) 정수형(Interger Type)
저장되는 값의 허용범위 (char타입은 음수값을 포함하지 않으므로 제외)
n = 메모리bit수 - 1 (ex : 8bit크기는 8 - 1 = 7)
-2^n ~ (2n-1)
byte : -128 ~ 127 | 0포함, -2^7 ~ (2^7-1)
short : -32768 ~ 32,767
char : 0 ~ 65536 (유니코드) | 0 ~ (2^16-1)
int : 약 -21억 ~ 21억 | -2^31 ~ (2^31-1)
long : 약 -922경 ~ 922경
1-2) 정수 리터럴 표현
- 2진수 : 0b1011 (맨앞은 숫자 0)
- 8진수 : 013 (맨앞은 숫자 0)
- 10진수 : 365 (소수점없는 10진법 숫자)
- 16진수 : 0x3B0F (맨앞은 숫자 0)
- long타입 (기본적으로 자바 컴파일러는 정수 리터럴을 int타입으로 간주한다!)
long l = 12_345_678_999; // int타입으로 간주해서 타입이 맞지 않다는 에러 출력
long l = 12345678999L; // int타입 범위를 벗어나면 L을 붙여서 롱타입임을 알려줌, 에러 없음
* 숫자밑에 _은 자릿수 구분을 위한 임의 표기로 에러사항이 아님
1-3) char타입
작은 따옴표로 감싼 형식을 쓰며 이것을 문자 리터럴이라고 한다.
문자 리터럴엔 유니코드값인 2byte크기 (0~65535)에 세계각국의 문자코드가 변환되어 저장된다.
유니코드 값은 크게 a, A, 0 값만 알고 있어도 유용하다.
char타입엔 아래와 같이 정수값을 저장해 쓸 수 있다.
char ch1 = 'A'; // unicode : 65
char ch2 = 65; // A와 같음
char ch3 = '0'; // unicode : 48
char ch4 = 48; // 문자 0과 같음
char ch5 = 'a'; // unicode : 97
char ch6 = '97';// a와 같음
아래와 같이 16진수 표현 또는 유니코드 표현을 쓸 수도 있다.
char c1 = 0x0041; // 10진수값으로 65이며 unicode문자 A
char c2 = '\u0042'; // 문자 B
또한 int타입 변수에도 저장할 수 있지만 이 때는 콘솔로 출력해보면 유니코드 값이 출력된다.
char ch1 = 'A'; // A출력
int i = 'A'; // 65출력
2) 실수 타입
자바에서는 실수 연산은 기본적으로 double 타입으로 처리한다. (정수는 int)
따라서 float타입의 변수 선언 시 반드시 f를 붙여 float형으로 간주하도록 한다.
float f = 3.14f; // 대문자 F로도 표기 가능, f생략 시 컴파일 에러
실수 타입은 항상 정수보다 표현범위가 크다.
부동 소수점 방식으로 저장되어 더 큰 범위의 값을 저장할 수 있다.
float : (+/-) 1.4 x10−45 ~ (+/-) 3.4028235 x 1038
double : (+/-) 4.9 x10−324 ~ (+/-) 1.7976931348623157 x 10308
0.1 == 0.1f
실수저장방식인 부동소수점 방식이 0.1을 정확히 표현불가
0.1f는 0.1의 근사값 (.1.......) 따라서 0.1보다 큰값이 됨
2. 참조타입
Date today = new Date();
데이터 클래스 타입의 참조형 변수 today선언
참조타입은 4byte를 가진다.
문자열을 저장가능한 String 타입또한 클래스 타입의 참조타입이다.
String str = "이것이 문자열입니다.";
'Study > Java' 카테고리의 다른 글
JAVA - getter, setter (0) | 2021.02.09 |
---|---|
JAVA - 파일 내 특정 문자열이 포함된 행을 제거 (0) | 2021.02.04 |
자바 - 식별자 (0) | 2021.01.06 |
자바 NIO 셀렉터 (0) | 2017.07.05 |
Java Network 프로그래밍 기초 (0) | 2017.06.03 |