[Java] 자바 기초 01 | 숫자와 문자, 변수, 데이터 타입, 상수, 형변환
*데이터 타입 == 자료형 == 데이터형
숫자
따옴표 없는 숫자는 숫자로 인식함.
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
정수는 실수로 가능하나, 실수를 정수화 하면 데이터가 유실되기 때문에 불가능함.
char는 내부적으로 숫자이기에 int로 변환 가능. (문자에 해당하는 유니코드로 변환됨)
- 명시적 형변환(Explicit Conversion) : 자동형변환 적용되지 않는 경우, 수동으로 형변환 해야