초심으로 돌아가자...
아 원래 실력이 초심급이였지
데이터 타입에 대해서 알아보기 전에 데이터의 크기에 대해 알아 보자?
--- | --- |
---|---|
8 bit | 1byte |
1024 byte | 1 kilobyte |
1024 megabyte | 1 gigabyte |
1024 gigabyte | 1 terabyte |
1024 terabyte | 1 petabyte |
... | ... |
정수형의 데이터 타입은 4가지로, byte, short, int, long 로 표현한다.
추가적으로 다음과 같은 코드를 살펴 보자.
long a = 2147483648;
이는 에러가 난다. 상수에 명시적으로 long 타입임을 지정해줘야 한다. 다음과 같다.
long a = 2147483648L;
중요한 것은 어떤 데이터 타입을 사용하느냐에 따라 메모리에 할당하는 크기가 달라진다. 그러므로, 필요에 따라 적절한 데이터 타입을 사용하여 메모리를 절약해야 한다.
long a = 2147483647
long b = 1
a와 b가 차지하는 메모리의 크기는 같다.
int a = 2147483647
long b = 2147483647
a와 b가 차지하는 메모리의 크기는 다르다.
실수형의 데이터 타입은 float과 double이 있다.
float
- 4바이트의 크기를 가진다.
double
- 8바이트의 크기를 가진다.
- 실수를 표현 할 때는 주로 double을 사용한다.
float a = 2.2;
이는 에러가 난다. 변수가 아닌 상수 또한 데이터 타입을 가지고 있다. 실수일 경우에는 double형을 기본적으로 하고 있다. 그러므로, float 타입이라는 것을 명시적으로 지정해줘야 한다. 다음과 같다.
float a = 2.2F;
자바에서의 문자는 char(character)를 사용하며, 2바이트의 크기를 가진다. 모든 유니코드 문자를 표현할 수 있다.
문자열은 문자의 집합으로 만약 "abcd"
라는 문자열이 있다면 이는 4개의 문자가 결합된 것으로 8바이트의 크기를 가진다.
형 변환은(type conversion) 데이터의 타입을 변경하는 것이다.
java는 형 변환을 자동으로 처리해 주는데 이러한 전환 작업을 자동(암시적)형 변환(implicit Conversion)이라고 부른다.
자동 형 변환은 표현 범위가 좁은 데이터 타입에서 넓은 데이터 타입으로의 변환만 허용된다.
즉, byte 타입은 short가 될 수 있지만, short는 byte타입이 될 수 없다. long은 float이 될 수 있지만, float은 long이 될 수 없다.
자동 형 변환이 적용되지 않는 경우에는 수동으로 형 변환을 해야 한다. 이를 명시적(Explicit Conversion)이라고 한다. 아래의 코드는 모든 행의 코드에서 오류가 발생한다.
float a = 100.0;
int b = 100.0F;
이는 다음과 같이 수정해야 한다.
float a = (float)100.0;
int b = (int)100.0F;
이처럼 괄호 안에 데이터 타입을 지정해서 값 앞에 위치시키는 것을 명시적인 형 변환이라고 한다.
.equals는 문자열을 비교할 때 사용하는 메소드다. 예제를 통해 알아보자
String a = "Hello world";
STring b = new String("Hello world");
System.out.println(a == b); // false를 반환
System.out.println(a.equals(b)) // true를 반환