본문 바로가기
iOS

[Swift] 스위프트 프로그래밍 - Part1 - 2 : 변수 / 상수 / 데이터 타입 기본 (Int, Bool, Float, Character, String, Any, AnyObject, nil)

by 건복치 2020. 11. 6.
반응형
야곰님의 스위프트 프로그래밍 책으로 공부한 내용을 잊어버리지 않게 간단하게 정리한 글입니다.

관련 포스트

[Swift] 스위프트 프로그래밍 - Part1 - 1 : 스위프트? / 스위프트 장점 / 특징 / 명명 규칙 / 콘솔 로그 / 주석
[Swift] 스위프트 프로그래밍 - Part1 - 2 : 변수 / 상수 / 데이터 타입 기본 (Int, Bool, Float, Character, String, Any, AnyObject, nil)
[Swift] 스위프트 프로그래밍 - Part1 - 3 - 1 : 데이터 타입 고급 (Tuple, Array, Dictionary, Set)
[Swift] 스위프트 프로그래밍 - Part1 - 3 - 2 : 데이터 타입 고급(열거형 enum)

책 범위 : Part 1. 스위프트 기초 1 (3. 데이터 타입 기본)

1. 변수와 상수

변수

  • var 키워드 사용
  • var [변수명]: [데이터 타입] = [값]의 형태로 선언
  • 데이터 타입은 생략 가능(컴파일러가 변숫값의 타입을 추론하여 지정함 - 비추)
  • 변할 수 있는 값 -> 값 변경 가능

 

var name: String = "minha"
var age: Int = 26
var num = 4 //타입 추론 사용
age = 100 //변수는 값 변경 가능

print("제 이름은 \(name)이고, 나이는 \(age)살 입니다. 좋아하는 숫자는 \(num)입니다.")

//제 이름은 minha이고, 나이는 100살 입니다. 좋아하는 숫자는 4입니다.

 

상수

  • let 키워드 사용
  • let [상수명]: [데이터 타입] = [값]의 형태로 선언
  • 타입 생략 가능
  • 항상 같은 값 - 변하지 않는 값 -> 값 변경하면 오류

 

let maxInputValue: Int = 100
let firstName:String = "Gwon"

 

2. 데이터 타입 기본

데이터 타입(자료형)은 프로그램 내에서 다뤄지는 데이터의 종류

모든 데이터 타입 이름은 첫 글자가 대문자로 시작하는 대문자 카멜 케이스 사용

기본 데이터 타입구조체를 기반으로 구현되어 있음

 

2-1. Int, UInt

정수 타입

Int : +, - 부호를 포함한 정수

UInt : - 부호를 포함하지 않은 0을 포함한 양의 정수

최댓값과 최솟값은 max, min 프로퍼티로 알아볼 수 있음 

print("Int min : \(Int.min), Int max : \(Int.max)")
//Int min : -9223372036854775808, Int max : 9223372036854775807

 

8비트, 16비트, 32비트, 64비트의 형태가 있음 (Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64)

Int와 UInt는 다른 타입임

 

2-2. Bool

불리언 타입

참(true), 거짓(false)만 값으로 가짐

 

var boolean:Bool = true
boolean.toggle() //true-false 반전

 

2-3. Float, Double

부동소수점을 사용하는 실수, 부동소수 타입

정수 타입보다 훨씬 넓은 범위의 수를 표현할 수 있음

32비트의 부동소수 표현 Float, 64비트의 부동소수 표현 Double

 

* 임의의 수 만들기

randon(in: ) 메서드

var randomInt: Int = Int.random(in: -100...100)
var randomDouble: Double = Double.random(in: 5.0...10.5)
var randomFloat: Float = Float.random(in: -0.5...5)

print(randomInt)
print(randomDouble)
print(randomFloat)

//-28
//9.606418804174888
//0.22616017

 

2-4. Character

단 하나의 문자를 의미

값의 앞 뒤에 큰따옴표 사용해 표현 "값"

 

2-5. String

문자열

값의 앞 뒤에 큰따옴표 사용해 표현 "문자열"

 

//이니셜라이저를 사용해 빈 문자열을 생성할 수 있음
var introduce: String = String()

//append() : 문자열 이어 붙이기
introduce.append("제 이름은")

//+ 연산자로 문자열 이어 붙이기
introduce = introduce + " " + name + "입니다"
introduce += "!!"
print(introduce) //제 이름은 minha입니다.!!




//count 프로퍼티를 이용해 문자열 길이 확인
print(introduce.count) //16



//isEmpty 프로퍼티를 이용해 빈 문자열인지 확인
var isEmptyString: Bool = false
isEmptyString = introduce.isEmpty
print(isEmptyString) //false




//연산자를 통한 문자열 비교
let hello: String = "Hello"

var isSameString: Bool = false

isSameString = hello == "Hello"
print(isSameString) //true

isSameString = hello == "hello"
print(isSameString) //false




//메서드를 통한 접두어 접미어 확인
var hasPrefix: Bool = false

hasPrefix = hello.hasPrefix("He")
print(hasPrefix) //true

hasPrefix = hello.hasPrefix("he")
print(hasPrefix) //false

var hasSuffix: Bool = false

hasSuffix = hello.hasSuffix("llo")
print(hasSuffix) //true

hasSuffix = hello.hasSuffix("LLO")
print(hasSuffix) //false




//메서드를 통한 대소문자 변환
var convertedString: String = ""

convertedString = hello.uppercased()
print(convertedString) //HELLO

convertedString = hello.lowercased()
print(convertedString) //hello




//코드상에서 여러 줄의 문자열을 직접 쓰고 싶다면 큰따옴표 3개 사용
//""" 쓰고 한 줄 내려쓰고, 마지막도 한 줄 내려서 """
introduce = """
안녕하세요!
Hello!
반가워요!
"""
print(introduce)
//안녕하세요!
//Hello!
//반가워요!

 

코드에 있는 기능 외에도 더 많은 메서드와 프로퍼티가 제공됨

 

2-6. 특수문자

문자열 내에서 일정 기능을 함(제어 문자라고도 함)

모두 백슬래시에 특정한 문자를 조합해 사용

 

특수문자 설명
\n 줄바꿈
\\ 문자열 내에서 백슬래시를 표현할 때 사용
\" 큰따옴표를 표현할 때 사용
\t 탭 문자. 탭키를 눌렀을 때와 같은 효과
\0 문자열이 끝났음을 알리는 null 문자

2-7. Any, AnyObject, nil

Any : 모든 데이터 타입을 사용할 수 있다는 뜻(어떤 종류의 데이터 타입이든지 상관없이 할당)

 

AnyObject : 클래스의 인스턴스만 할당 (9장 구조체와 클래스에서 자세히)

 

nil

  • 없음을 나타내는 키워드
  • 변수 또는 상수에 값이 들어있지 않고 비어있음을 나타내는 데 사용
  • nil인 변수 또는 상수에 접근했을 때 잘못된 메모리 접근으로 런타임 오류 발생(Null Point Exception) (8장 옵셔널에서 자세히)

Never : 특정 함수의 반환 타입으로 사용될 수 있는 타입 (7장 종료되지 않는 함수에서 자세히)

참고

아래를 참고해 정리한 내용입니다.

 

스위프트 프로그래밍 3판(야곰) - 한빛미디어

 

반응형

댓글