0. 오리엔테이션 1. 코틀린의 기본의 기본을 읽혀요! - 코틀린이란 무엇일까? - 변수와 자료형, 연산자 2. 함수형 프로그래밍 이란? - 마법의 요술상자, 함수의 기본 - 요술상자, 함수 가지고 놀기 3. 프로그램 흐름의 제어 - 프로그램의 흐름을 제어해보자! 4. 코틀린의 표준함수 활용하기 - 코틀린과 표준함수 5. 강좌 마무리 프로젝트 |
▶ 깃허브 코드 : github.com/0525hhgus/Kotlin-study
[ 변수와 자료형, 연산자 ]
1. 기본 자료형과 변수 선언방법 - 불변형, 기본형
1) 자료형과 변수의 선언
▶ 자료형
(1) Int : 정수 (1, 2, 3 ...)
(2) String : 문자열 ("Kotlin", "Hello123" ...)
(3) Float : 실수 (1.2, 3.4 ...)
▶ 변수
(1) val (value) : 불변형
(2) var (variable) : 가변형
▶ 변수의 선언
val username: String = "Kotlin"
선언 키워드 변수 이름 자료형 값
▶ 변수의 선언
- 컴파일러가 알 수 있는 타입은 타입명 제거 가능 → 데이터형 추론 기능
▶ 코드 예시
fun main(){
var userName = "Kotlin" // 자료형을 추론
val count = 5
userName = "Dwin"
println("username: $userName, count: $count")
}
2) 변수명의 예
▶ val username = "Kotlin" → 자료형을 추론하여 String으로 결정
▶ var username → 자료형을 지정하지 않으면 사용 불가
▶ val init: Int → 사용전 or 생성자 시점에서 init 변수를 초기화
▶ val number = 10 → number 변수는 in형으로 추론
▶ 변수 이름 작성시 고려사항
- 숫자로 시작 X
- 코틀린에서 사용되는 키워드 사용 X
- 의미 있는 단어를 사용 O
→ 바람직한 코드 작성의 중요성
(지난 CS50 강의 때 추천받았던 사이트지만 함께 보면 좋을 것 같아 첨부했습니다.)
developer.gnome.org/programming-guidelines/stable/writing-good-code.html.ko
- 여러 단어 사용시 카멜 표기법 사용
3) 카멜 표기법
▶ 일반 변수, 함수명 등
- camelCase
- numberOfBooks
- myFirstNumber
▶ 클래스, 인터페이스 등
- AnimalCategory
- CarEngine
4) 기본형과 참조형
▶ 기본형 (코틀린에서 사용 X But 자바에서는 사용 O / 참조형보다 성능이 좋음)
- 가공되지 ㅣ않은 순수한 자료형으로 프로그래밍 언어에 내장
- int, lomg, float, double 등
▶ 참조형 (기본형보다 덜 복잡함)
- 동적 공간에 데이터를 둔 다음, 이것을 참조하는 자료형
- Int, Long, Float, Double 등
5) 기본형과 참조형의 원리
▶ 자바의 기본형과 참조형의 원리
int a = 77; // 기본형
Person person = new Person(); // 객체 참조형으로 person 객체를 위해 참조 주소(A12)를 가진다.
→ 강사님께서 잘 설명해주셔서 쉽게 이해할 수 있었지만, 참조에 대해 잘 정리된 사이트가 있어서 덧붙입니다.
opentutorials.org/course/2517/14152
2. 기본 자료형과 변수 선언방법 - 정수형, 실수형
1) 정수형
▶ 음수가 사용되는 부호 있는 자료형
▶ 부호 없는 정수형 (1.3버전 실험적)
- 최적화된 자료형을 사용
2) 자료형 사용의 예
▶ 자료형 생략
var num01 = 127 // Int형으로 추론
var num02 = -326127 // Int형으로 추론
var num03 = 127435252 // Int형으로 추론
var num04 = 9999999999342999 // Long형으로 추론
▶ 접미사 접두사 사용
var exp01 = 127 // Int형으로 추론
var exp02 = 123L // 접두사 L을 사용해 Long형으로 추론
var exp03 = 0x0F // 접두사 0x을 사용해 16진 표기가 사용된 Int형으로 추론
var exp04 = 0b00001011 // 접두사 0b를 사용해 2진 표기가 사용된 Int형으로 추론
▶ 작은 값의 사용
var exp05: Byte = 127 // 명시적으로 자료형을 지정(Byte)
var exp06 = 32767 // 명시적으로 자료형을 지정하지 않으면 Short형 범위의 값도 Int형으로 추론
var exp07: Short = 32767 // 명시적으로 자료형을 지정(Short)
3) 부호없는 자료형
▶ 부호 없는 정수 자료형
var uint: UInt = 153u
var ushort: UShort = 65535u
var ulong: ULong = 4665535uL
var ubyte: UByte = 255u
→ 부호 없는 정수 자료형은 각각 선언 자료형의 접두사로 u를, 변수 값의 접미사로 u를 붙입니다.
▶ 큰 수를 읽기 쉽게 하는 방법
- 읽기 쉽게 하기 위해 언더스코어(_)를 포함해 표현
var number = 1_000_000
var cardNum = 1234_1234_1234_1234L
var hexVal = 0xAB_CD_EF_12
var bytes = 0b1101_0010
→ 실제 값에는 영향 X
4) 실수 자료형
▶ Double : 8바이트(64비트)
▶ Float : 4바이트(32비트)
var exp01 = 3.14 // Double형으로 추론(기본)
var exp02 = 3.14F // 식별자 F에 의해 Float형으로 추론
5) 부동 소숫점의 표현
▶ 32비트와 64비트의 부동 소수점 표현
▶ -12.375(10진수)의 표현
(1) 음수 : -
- 127(bias) 기준으로 구분
(2) 절댓값 : 12.375
= 1100.011(2진수)
= 1.1000111 x 2^3
= 1생략
= 100011을 가수부에 표현
= 2^3 → 173+3 = 130(10진수) = 10000010(2진수)
6) 공간제약에 따른 부동 소숫점 표현의 제한
package chap02.section2
fun main() {
var num: Double = 0.1
// num에 0.1를 1000번 더함
for(x in 0..999) {
num += 0.1
}
println(num) // 100.0999999999859
}
→ 부동 소숫점 오차에 대해 잘 정리되어 있어서 참고하면 좋을 것 같습니다.
7) 부동 소숫점 제한의 예
package chap02.section2
fun main() {
var num: Double = 0.1
// num에 0.1를 1000번 더함
for(x in 0..999) { // 시작점..끝점 (0..999)
num += 0.1
}
println(num) // 100.0999999999859
}
3. 기본 자료형과 변수 선언방법 - 크기 범위와 기타 자료형
1) 각 자료형 최대 최솟값 알아보기 예제
package chap02.section2
fun main() {
println("Byte: ${Byte.MIN_VALUE}~${Byte.MAX_VALUE}")
println("Int: ${Int.MIN_VALUE}~${Int.MAX_VALUE}")
println("Short: ${Short.MIN_VALUE}~${Short.MAX_VALUE}")
println("Long: ${Long.MIN_VALUE}~${Long.MAX_VALUE}")
println("Float: ${Float.MIN_VALUE}~${Float.MAX_VALUE}")
println("Double: ${Double.MIN_VALUE}~${Double.MAX_VALUE}")
}
2) 2의 보수
▶ 자료형의 최소 최대
(1) 음수는 2의 보수 표현을 사용해 연산됨
- 절댓값의 이진수에 값을 뒤집고 1을 더함
(2) 예) -6(10진수)
= 6의 2진값 : 0000 0110(2진수)
= 값 뒤집기 : 1111 1001(2진수)
= 1을 더하기 : 1111 1010(2진수)
(3) 2의 보수를 연산에 사용하는 이유
- 제한된 자료형을 음수/양수로 나누어 최대한 사용하며 2의 보수는 가산 회로만으로 뺄셈을 표현할 수 있기 때문
3) 그 밖의 자료형(논리자료형, 문자자료형)
▶ 논리 자료형
- Boolean(1비트): true, false
val isOpen = true // isOpen은 Boolean으로 추론
val isUploaded: Boolean // 선언만 한 경우 자료형(Boolean) 반드시 명시
▶ 문자 자료형
- Char(2바이트(16비트)) : 0~2^15-1(\u0000 - \uffff)
val ch = 'k' // ch는 Char으로 추론
val ch2: Char // 선언만 한 경우 자료형(Char) 반드시 명시
4) 문자열 자료형
▶ 문자열
- String으로 선언되며 String Pool이라는 공간에 구성 (동적 공간)
package chap02.section2
fun main() {
var str1: String = "Hello"
var str2 = "Kotlin"
var str3 = "Hello"
println("str1 === str2: ${str1 === str2}")
println("str1 === str3: ${str1 === str3}")
}
- var로 선언된 str1의 참조 주소는 가변형으로 바뀔 수 있음 (새로운 공간이 만들어짐)
- 그러나 생성된 메모리 공간의 "Hello"는 변경되지 X
- == : 값만 비교 (자바는 ==로 참조까지 비교)
- === : 참조까지 비교
5) 문자열 자료형 비교 검사하기 예제
package chap02.section2
fun main() {
var str1: String = "Hello"
var str2 = "Kotlin"
var str3 = "Hello"
println("str1 === str2: ${str1 === str2}")
println("str1 === str3: ${str1 === str3}")
}
6) 표현식과 문자열
▶ 표현식과 $ 기호 사용하여 문자열 출력하기
var a = 1
val s1 = "a is $a" // String 자료형의 s1을 선언하고 초기화. 변수 a가 사용됨
▶ 코딩해 보세요! StringExpression.kt
package chap02.section2
fun main() {
var a = 1
val str1 = "a = $a"
val str2 = "a = ${a + 1}" // 문자열에 표현식 사용
println("str1: \"$str1\", \"$str2\"") // "(큰 따옴표) 사용하려면 \"로 사용
}
감사합니다!
'대외활동 > Naver Boostcourse' 카테고리의 다른 글
[부스트코스] 코틀린 프로그래밍 기본 1/2(함수편) - 함수의 기본, 함수형 프로그래밍 (0) | 2021.01.26 |
---|---|
[부스트코스] 코틀린 프로그래밍 기본 1/2(함수편) - 널과 연산자 (0) | 2021.01.16 |
[부스트코스] 코틀린 프로그래밍 기본 1/2(함수편) - 코틀린 소개 (0) | 2021.01.11 |
[부스트코스] 코틀린 프로그래밍 기본 1/2(함수편) - OT, 코틀린이란? (0) | 2021.01.11 |
<부스트 코딩뉴비 챌린지> 최종 후기 (0) | 2020.08.26 |