Java

[Java] 자바 기초 01 | 숫자와 문자, 변수, 데이터 타입, 상수, 형변환

dearbeany 2022. 7. 5. 03:53

*데이터 타입 == 자료형 == 데이터형

 

숫자

따옴표 없는 숫자는 숫자로 인식함.

System.out.println(1+2); // 3을 출력
System.out.println("1" + "2"); // 12을 출력

 

 

문자 <> 문자열

문자(Character): 한 글자 '(작은따옴표)로 결합

문자열(String): 여러 개의 문자가 결합 "(큰따옴표)로 결합

 

문자열을 작은 따옴표로 감싸면 에러 발생.

System.out.println('생활코딩'); // 에러발생
System.out.println("생"); // 에러발생X, 한 글자도 문자열일 수 있음

 

 

변수

- 데이터(문자나 숫자 같은)를 담는(가리키는) 컨테이너

- 가리키는 대상(데이터)은 항상 변할 수 있음
- 자바에서 변수는 어떤 값을 저장하는 컨테이너인데, 컨테이너 생성 시 지정한 데이터 형식(int, double)에 맞는 데이터를 입력해야 한다.

- 효용: 중복의 제거, 가독성↑, 유지보수↑

int a = 1.1; // 에러발생, a는 정수(int)인데 값으로 1.1인 실수를 대입해서
System.out.println(a+1.1);

 

데이터타입

- Bit: 컴퓨터에 저장되는 정보의 가장 작은 단위로 1bit는 0이나 1의 값을 가질 수 있음

- 1Byte = 8Bit

- 1KB = 1024Byte

- 1MB = 1024KB

byte = 128; // 에러 발생, byte가 표현할 수 있는 숫자의 범위를 넘기 때문에

어떤 숫자를 저장하느냐에 따라서 사용하는 메모리의 크기가 달라지는 것이 아니고, 어떤 데이터 타입으로 변수를 선언했느냐에 따라서 사용하는 메모리의 크기가 달라지는 것. 결국, 변수에 들어올 수 있는 숫자의 최대 크기를 잘 판단해서 데이터 타입을 지정해야 귀한 메모리의 용량을 아낄 수 있다.

 

 

'A' 는 2byte

"AB" 는 4byte의 메모리 사용

 

 

상수

- 변하지 않는 값

- 고유한 값을 가지고, 그 값을 변경할 수 없는 데이터 타입

 

*상수의 데이터타입

다른 데이터타입을 쓰는 경우에는 뒤에 L, F 붙여줄것
단 byte, short는 면제(int를 허용해줌)

int a = 1; // a는 변수, 1은 상수
1 = 3; // 컴파일에러, 1은 상수이기 때문에

float b = 2.2; // 에러 발생, 상수 2.2는 double형이기 때문에

// 이를 고치려면?
double b = 2.2;
float b = 2.2F; // 상수도 데이터타입이 존재한다

 

 

 

 

형변환

- 데이터 타입을 변경하는 것 (∵컴퓨터는 정수와 실수를 다른 방식으로 저장한다. 비트값이 다름)

- 암시적 형변환(Implicit Conversion) : 표현범위가 좁은→넓은 데이터타입으로 변환만 허용 (ex. float → double)

// 가능
double a = 3.0F; // float -> double 

// 불가능 (데이터 유실이 우려되기에)
float a = 3.0; // dobule -> float

왼 &rarr; 오 가능

정수는 실수로 가능하나, 실수를 정수화 하면 데이터가 유실되기 때문에 불가능함.

char는 내부적으로 숫자이기에 int로 변환 가능. (문자에 해당하는 유니코드로 변환됨)

 

- 명시적 형변환(Explicit Conversion) : 자동형변환 적용되지 않는 경우, 수동으로 형변환 해야