본문 바로가기

스위프트(Swift)

스위프트(Swift) - 데이터 타입(자료형)

반응형

스위프트 데이터 타입

스위프트에서 제공하는 기본적인 데이터 타입(자료형)에 대해서 알아볼게요. 데이터 타입은 우리가 만들 수도 있지만, 그것 역시 기본 데이터 타입을 기초로 하고 있습니다. 그럼 데이터 타입의 종류를 하나씩 알아보겠습니다.

 

1. Int 와 UInt

Int라는 용어는 integer의 줄임말인데요. 바로 '정수형'을 뜻합니다. 정수는 우리가 다 아는 것처럼 - 부호를 가진 음수부터 + 부호를 가진 양수들 즉 숫자들을 말합니다. 예를 들면 -1, -1999, 23333, 22222 숫자들이 모두 정수인 거죠.

 

위 내용처럼 Int는 음의 정수, 양의 정수를 포함하는데, UInt는 음의 정수를 제외한 양의정수를 뜻합니다. 여기서 U는 unsigned를 뜻합니다. 즉 부호가 없다는 이야기죠. 예를 들면 1, 222, 199999, 1000000000 등을 말합니다.

 

1.1 Int의 크기와 범위

그렇다면 Int와 UInt의 크기는 어떻게 될까요? 숫자 뒤에 0을 무한대로 붙일 수 있는 걸까요? 그렇지 않습니다. 이것은 우리가 사용하는 시스템 아키텍처와 관련이 있는데요, 요즘에는 흔히 64비트 컴퓨터를 많이 쓰지요?

 

네, 그 크기는 시스템 64비트가 표현할 수 있는 한계까지 입니다. 그런데, 아직 32비트 시스템을 쓰고 계신 분들이 있다고요? 그렇다면 그 크기는 32비트가 되겠지요. 사용하는 시스템마다 다르다고 생각하시면 됩니다.

데이터 타입인 Int와 UInt에 대한 최대값 및 최소값

그래서 내 시스템이 64비트이면 Int는 곧 Int64가 됩니다. 32비트라면 Int32가 되겠지요. 이러한 단위는 Int8, Int16, Int32, Int64가 있어요. 그 중에서 Int라고 명시할 경우 내 시스템의 비트가 앞에 기본으로 붙는 것으로 생각하시면 됩니다.

 

UInt도 똑같습니다. 저는 64비트이기 때문에 UInt라고 선언한다면, UInt64와 같습니다. 그렇다면, Int와 UInt는 표현할 수 있는 범위는 똑같지만, UInt는 양의 정수만을 포함하기 때문에 실제 숫자의 크기는 Int보다 크겠지요.

 

그러면 우리는 어떤 것을 사용해야 할까요? 일반적으로는 Int를 사용합니다. Int의 범위를 벗어나는 큰 숫자를 사용해야한다면 UInt를 사용해야겠지만요. 그런 경우가 아니라면 Int를 사용하는 것이 좋습니다.

 

2. Bool

Bool라는 용어는 Boolean의 줄임말로 보통 참(True)과 거짓(False)를 나타냅니다. 두 가지 값만을 가질 수 있기에 상대적으로 매우 단순한 녀석이에요. 이 외 특별한 내용은 없습니다.

데이터 타입 Bool에 대한 예제

위 예제는 단순하게 표현했지만, 실제 어떤 행위의 결과를 true와 false로 알고 싶을 때 분기문을 써서 나타낼 수 있어요.

 

3. Float와 Double

두 데이터 타입은 소수점을 가진 숫자를 표현할 수 있습니다. 단 Float는 32비트, Double는 64비트를 이용합니다. 특별한 이유가 없다면 Double을 사용하는 것이 좋습니다. 큰 숫자들을 보다 정확화게 표현이 가능하기 때문이죠.

데이터 타입 Float와 Double의 예제

이 두 타입의 값을 출력하게 될 경우 지수의 형태로 출력될 수도 있습니다. 보통 10진수로 표현이 불가능 할때 지수 형태로 바꾸어 출력하게 되는 것이지요.

 

4. Character

문자를 표현할 수 있는 데이터 타입입니다. 즉 한 개의 문자, 예를 들면 'a', 'ㄱ', 특수 문자 등을 표현할 수 있어요. 스위프트는 유니코드를 지원하기에 알파벳 뿐만 아니라 한글, 특수문자도 표현히 가능한 것이죠.

단, 항상 더블쿼터(")로 문자를 감싸주어서 할당하거나, 선언해야 합니다. 이것은 문자이다 라고 말해주는 것이거든요.

 

5. String

단어, 문장을 표현할 수 있는 데이터 타입입니다. 자료형 중에 가장 많이 쓰이지 않을까 생각됩니다. 그래서 스위프트에서 기본적으로 제공하는 API를 많이 익혀두는 것이 좋습니다.

데이터 타입 String 예제

Character 데이터 타입과 유사하게 단어나 문장을 더블쿼터(")로 감싸주어야 합니다.

 

5.1 String 초기화

데이터 타입 String으로 선언과 동시에 초기화 하는 것을 이니셜라이저라고 말합니다. 즉 String()를 호출하는 것인데요. 3번째 줄의 String()의 의미는 문자열을 사용할 수 있는 객체를 생성해서 반환해주는 것이죠.

 

초기화를 하지 않고, 아무것도 할당하지 않은채 출력을 하거나 사용하게 되면 에러를 발생하게 됩니다.

 

5.2 String 문자열 연결 함수(프로퍼티)

두 개의 문자열을 연결하기 위해 스위프트에서는 기본적으로 편리한 프로퍼티를 제공합니다. append를 사용할 수도 있으며, +와 같은 키워드 또는 +=를 사용할 수 있어요. a += b의 의미는 a = a + b 입니다. 

 

6. 특수문자

특수문자는 사실 데이터 타입은 아닙니다. 우리가 평소 사용하는 특수문자를 이야기하는 것은 아니고, 제어문자라고 표현하는게 적절할 듯한데요. 보통 문자열을 출력할 때 보기좋게 하기 위한 용도로 쓰입니다.

 

\t : 일반적으로 글을 쓸 때 사용하는 탭 효과를 나타냅니다.

\n : 개행을 해주는 것인데, 쉽게 말해 엔터를 치면 줄이 바뀌는 그런 행위를 합니다.

\\ : 문자열 안에 백 슬러시(\)를 넣고 싶은데, 특수문자로 인식하지 않고 문자열로 인식하게 하기 위함입니다.

\" : 위와 마찬가지로 문자열 안에 더블쿼터(")를 넣고 싶을 때 사용합니다.

특수(제어)문자 예제

7. Any

Any하면 딱 떠오르는 그 생각이 맞습니다. 위에서 이야기한 그 어떤 타입도 가능하다는 이야기죠. 변수를 특정 타입으로 선언하면 다른 타입으로 바꾸는 것이 불가능하지만, Any로 설정했을 경우는 그것이 가능합니다.

데이터 타입 Any 예제

 

반응형