Java02. N진수와 변수, 자료형

Java02. N진수와 변수, 자료형

드디어 변수와 자료형!

아직 본격적인 코딩은 이전이지만 파이썬과 변수 선언하는 문법이 많이 달라서 재밌다.

컴퓨터에서 데이터 표현하기

bit (비트) 컴퓨터가 표현하는 데이터의 최소 단위 2진수 하나의 값을 저장할 수 있는 메모리의 크기 정수(int)는 통상 32비트를 많이 사용함 (= 4byte)

byte (바이트) 1byte = 8bit

2진수, 8진수, 16진수

2진수 숫자나 문자를 0과 1의 조합으로 표현

16진수 진법은 단위가 올라가는 것이 그 윗자리가 됨 9까지는 10진수와 표기가 같으나, 10부터 A, B, C, D, E, F 를 활용하여 표기 16진수를 쓰는 이유? 10을 2진수로 표현하면 00001010 으로, 너무 김

따라서 식별하기 쉽고 간결하게 쓰기 위해 16진수 고안

cf) 15를 2진수로 표현하려면 00001111 인데, 1111의 4비트를 한 번에 모아서 F로 표기

8진수 자주 쓰지는 않음 10진수의 8을 1 0 으로 표기

숫자 10을 2진수, 8진수, 16진수로 출력

package binary; public class BinaryTest { public static void main(string[] args) { int num = 10; // 10진수 int bNum = 0B1010; // 2진수 10 (2진수 앞에는 OB를 붙임) int oNum = 012; // 8진수 10 (8진수 앞에는 0을 붙임) int hNum = 0XA; // 16진수 10 (16진수 앞에는 0X를 붙임) System.out.println(num); System.out.println(bNum); System.out.println(oNum); System.out.println(hNum); } }

음의 정수 표현

정수의 가장 왼쪽에 존재하는 비트는 부호비트 MSB(Most Significant Bit) : 가장 중요한 비트 부호비트가 0이면 양수, 1이면 음수

음수를 만드는 방법 : 2의 보수 구하기 2의 보수 구하는 방법 1의 보수(자릿수의 모든 값을 반대로 바꾸기)를 취한 다음 1을 더함 N진수로 표현된 숫자가 어떤 음수인지 확인 : 음수에 대한 2의 보수를 취하면 양수 값이 나옴

package binary; public class BinaryTest2 { public static void main(String[] args) { int num1 = 0B00000000000000000000000000000101; // +5 int num2 = 0B11111111111111111111111111111011; // -5 int sum = num1 + num2; System.out.println(num1); System.out.println(num2); System.out.println(sum); } }

변수 variable

프로그래밍에서 값(data)을 사용하기 위해 선언하는 것

프로그램에서 사용되는 자료를 저장하기 위한 공간 할당받은 메모리의 주소 대신 부르는 이름

프로그램 실행 중에 값이 변경될 수 있음

사용되기 이전에 선언 되어야 함

변수의 선언과 초기화

package chapter2; public class VariableEx { public static void main(String[] args) { int num; // 변수 선언 num = 10; // 변수 초기화 (값 대입) System.out.println(num); int level = 20; // 변수 선언과 동시에 초기화 System.out.println(level); } }

int 의 역할 level 변수의 데이터 타입을 정의

int 의 의미 level 은 정수이며, 4바이트의 메모리 공간을 사용함

변수 선언 시 유의점

변수의 이름은 알파벳, 숫자, _, $ 로 구성

대소문자를 구분함

변수의 이름은 숫자로 시작할 수 없고, 키워드(while, for, break와 같은)도 변수의 이름으로 사용할 수 없음

이름 사이에 공백이 있을 수 없음

변수의 이름을 정할 때는 변수의 역할에 어울리는, 의미 있는 이름을 지어야 함

변수가 저장되는 공간의 특성 - 자료형

정수형 문자형 실수형 논리형 1바이트 byte ㅡ ㅡ boolean 2바이트 short char ㅡ ㅡ 4바이트 int ㅡ float ㅡ 8바이트 long ㅡ double ㅡ

byte VS short

byte 1바이트 단위의 자료형 동영상, 음악 파일 등 실행 파일의 자료를 처리할 때 사용하기 좋은 자료형

short 2바이트 단위의 자료형 주로 c / c++ 언어와의 호환 시 사용

int

자바에서 사용하는 정수에 대한 기본 자료형

4바이트 단위의 자료형

프로그램에서 사용하는 모든 숫자(리터럴)는 기본적으로 int(4바이트)로 저장됨

32비트를 초과하는 숫자는 long 자료형으로 처리(저장)해야 함

long

8바이트 자료형

가장 큰 정수 자료형

숫자의 뒤에 L 또는 l (통상 대문자 엘을 씀)을 써서 long 형임을 표시해야 함

int num = 12345678900; // 오류 남 : int의 범위를 넘은 값을 대입 long num - 12345678900; // 오류 남 : 숫자(리터럴) 12345678900은 기본형이 int 인데, int 의 범위를 넘는 수 // => 숫자(리터럴) 12345678900을 long 으로 처리하도록 명시 long num = 12345678900L; // 소문자 l을 써도 되지만, 1과 구분하기 위해 대문자로 씀

package chapter2; public class VariableEx2 { public static void main(String[] args) { int num = 10; // 모든 숫자 중 정수는 4바이트로 저장됨 /* long num = 12345678900; 에러 : 숫자를 저장하려고 하는데 기본이 4바이트기 때문에 숫자가 너무 큼 */ long num2 = 12345678900L; // 8바이트로 저장하라고 알려주기 위해 식별자 L을 써줌 } }

char - 문자 자료형

컴퓨터에서는 문자도 내부적으로는 비트의 조합으로 표현함

자바에서는 문자를 2바이트로 처리 (16비트)

인코딩 각 문자에 따른 특정한 숫자 값(코드 값)을 부여

디코딩 숫자 값을 원래의 문자로 반환

문자 세트

문자를 위한 코드 값(숫자 값)들을 정해 놓은 세트

아스키 (ASCII) 1바이트로 영문자, 숫자, 특수문자 등을 표현함

유니코드 (UNICODE) : 다국어를 표현하기 위한 국제 표준 인코딩 한글과 같은 복잡한 언어를 표현하기 위한 표준 인코딩으로, UTF-8, UTF-16 등이 대표적임 기본적으로 아스키 인코딩을 포함함 (1바이트는 아스키 인코딩과 같음)

: 문자를 변수에 저장하면? 문자에 해당하는 코드 값이 저장됨

자바는 유니코드 UTF-16 인코딩을 사용함 (2바이트를 사용하여 표현)

package chapter2; public class CharacterEx { public static void main(String[] args) { char ch = 'A'; System.out.println(ch); // A System.out.println((int)ch); // 65 - A가 가진 숫자값으로 출력 ch = 66; System.out.println(ch); // 8 int ch2 = 67; System.out.println(ch2); // 67 System.out.println((char)ch); // C } }

float, double - 실수 자료형

부동 소수점 방식 실수를 지수부와 가수부로 표현함 무한의 실수를 표현하기 위한 방식

실수 자료형 float : 4바이트 (32비트) double : 8바이트 (64비트)

실수는 기본적으로 double 형으로 저장함 float 형으로 저장하고 싶은 경우 숫자에 f 또는 F 명시

package chapter2; public class DoubleEx { public static void main(String[] args) { double dNum = 3.14; float fNum = 3.14F; // F를 붙이지 않으면 오류 발생 } }

boolean - 논리형

논리값 true(참), false(거짓)을 표현하는 자료형

boolean으로 선언

package chapter2; public class BooleanEx { public static void main(String[] args) { boolean isMarried = true; // boolean 변수 선언 및 초기화 System.out.println(isMarried); } }

자료형 없이 변수 사용하기 (Java 10부터 제공)

자료형이 필요한 이유 변수를 선언할 때는 변수가 사용할 메모리 크기와 타입을 구분하기 위해 자료형을 사용

지역 변수 자료형 추론 (Local variable type inference) 변수에 대입되는 값을 보고 컴파일러가 추론

script 언어는 원래 var 을 사용 유의할 점 한 번 타입이 정해지면 다른 타입으로 바꿀 수 없음 지역변수 ( {} 안에서만 선언되는 변수)를 쓰는 경우 에만 해당함 cf) 멤버변수

from http://moony96.tistory.com/7 by ccl(A) rewrite - 2021-12-23 18:01:14