22/10/27 TIL - java 기초

김민우·2022년 10월 27일
0

TIL

목록 보기
6/10

초심으로 돌아가자...
아 원래 실력이 초심급이였지

데이터 타입에 대해서 알아보기 전에 데이터의 크기에 대해 알아 보자?

------
8 bit1byte
1024 byte1 kilobyte
1024 megabyte1 gigabyte
1024 gigabyte1 terabyte
1024 terabyte1 petabyte
......

데이터 타입

- 정수형

정수형의 데이터 타입은 4가지로, byte, short, int, long 로 표현한다.

  • byte
    - 1바이트의 크기를 가진다.
    - -128~127의 수를 표현할 수 있다.
  • short
    - 2바이트의 크기를 가진다.
    - -32,768 ~ 32,767의 수를 표한할 수 있다.
  • int
    - 4바이트의 크기를 가진다.
    - -2,147,483,648 ~ 2,147,483,647의 수를 표현할 수 있다.
    - 주로 정수를 저장할 때 자주 쓰이는 타입이다.
    • int 형을 처리 할 때 CPU 처리속도가 빠르고, int는 충분히 큰 수를 표현할 수 있다.
  • long
    - 8바이트의 크기를 가진다.
    - -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807의 수를 표현할 수 있다.

추가적으로 다음과 같은 코드를 살펴 보자.

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

.equals는 문자열을 비교할 때 사용하는 메소드다. 예제를 통해 알아보자

String a = "Hello world";
STring b = new String("Hello world");
System.out.println(a == b); // false를 반환
System.out.println(a.equals(b)) // true를 반환
profile
Pay it forward.

0개의 댓글