변수는 선언후 변경이 가능하다.
var 변수명 = 값
이렇게 변수를 선언할 수 있다.
이때 자동으로 값에 맞춰서 변수의 자료형이 정해지는데 값에 문자를 넣을 경우 Character형으로 선언하고 싶으면 아래처럼 명시적으로 선언해야 한다.
물론
var 변수명 : 자료형
변수명 = 값
이렇게 명시적으로 자료형을 선언 하고 나중에 초기화 해도 된다.
var 변수명 : 자료형 = 값
이렇게도 명시적으로 선언할 수 있다.
상수는 선언 후에 변경이 불가능하다.
let 상수명 = 값
이렇게 상수를 선언한다. 또한 당연히
let 상수명 : 자료형 = 값
이렇게도 선언할 수 있다.
• 알파벳, 한글 자음과 모음, 특수 기호, 한자, 이미지용 바이너리코드(😎, 🐠,💊 이런것들이다. 흔히 말하는 이모티콘)까지도 쓸 수 있다.(저는 이모티콘은 진짜 비추합니다. 이런 기능은 왜있는건지? 이스터에그??)
• 연산자로 쓰는 특수 문자는 쓸 수 없다.(+, -, *, /)
• 당연히 공백도 쓸 수 없다.
• _(언더바)를 공백대신에 쓸 수 있다.
• 예약어나 키워드로 등록된 단어는 쓸 수 없다. 하지만 대소문자를 구분하기 때문에 대소문자만 바꾸면 쓸 수 있긴하다.
• 숫자가 첫번째로 올 순 없다.(1abc는 안됨. a1bc처럼 두번째부터는 가능.)
정수형이다. 정수값 범위는 CPU사양에 따라 달라지는데 예를들어 8bit CPU일 경우 2^8개를 지원해 -128부터 0을 포함해 127까지 총 256개의 값을 저장할 수 있다. 그냥 선언하면 무조건 Int형으로 선언된다.
추가로 Int의 서브 자료형은 각각
Int8 = 2^8
Int16 = 2^16
Int32 = 2^32
Int64 = 2^64 개를 지원한다.
var aaa = 3
var bbb : Int
bbb = 5
let ccc : Int = 9 //얘는 Int형 상수
이런식으로 선언한다.
Unsigned Int를 뜻하며 부호가 없는 정수를 의미한다.(일반적으로 생각할때 부호가 없으면 양수겠죠?) Int처럼 정수를 저장하나 음수는 포함하지 않기 때문에 0부터 (2^n) - 1까지 저장할 수 있다. 이때 n은 위의 Int8, Int16처럼 뒤에 오는 숫자를 의미한다. 똑같이 UInt8, UInt16, UInt32, UInt64가 있다.(0부터 시작하기 때문에 끝에 숫자는 하나 빠진다.)
var bbb : UInt
bbb = 5
let ccc : UInt = 9 //얘는 UInt형 상수
이렇게 선언한다.
둘다 실수를 저장하는 자료형이다. 이때 그냥 선언하면 무조건 Double로 선언된다.
Float은 32bit 부동소수점 자료형이다. 소수점 7~8자리까지 정확하게 저장할 수 있다.
var bbb : Float
bbb = 5.1
let ccc : Float = 9.1 //얘는 float형 상수
이렇게 선언한다.
Double은 64bit 부동소수점 자료형이다. 소수점 15~16자리까지 정확하게 저장할 수 있다. 당연히 float보다 메모리를 더 차지한다.
var aaa = 3.1
var bbb : Double
bbb = 5.1
let ccc : Double = 9.1 //얘는 double형 상수
이렇게 선언한다.
Bool형은 참, 거짓을 저장하는 자료형이다. 예를들면
var abc = true //참인 변수
let def = false //거짓인 상수
이런식으로 선언하며
var a = 1
var b = 2
var c = a == b //이러면 false가 나온다.
이렇게도 쓸 수 있다.
문자열을 저장할 때 쓰는 자료형이다.
var abc = "안녕하세요"
var as : String
as = "as센터는 서울에 있습니다."
var asdf : String = "하이 헬로 안녕"
이렇게 선언할 수 있다.
이전의 objective-c에서의 NSString과 서로 호환되기 때문에 서로 변환할 수 있다.
import Foundation
구문을 입력하면 스위프트에서 NSString을 사용할 수 있다.
문자를 저장할 때 쓰는 자료형이다.
var abc : Character
abc = "A"
var alphabet : Character = "B"
이렇게 선언할 수 있다.
타입 어노테이션(명시적 자료형 선언)이 없으면 그냥 String으로 타입추론을 하기 때문에 반드시 자료형을 명시해야합니다.