●변수(Variable): 변수(이름) & 값(메모리) : 메모리에 값을 담아두고, 그 저장 공간에 이름표를 붙이는 것. 즉, 변수를 선언하는 것.\-> 소스코드에서 해당 값을 사용하고자 할 때 이 이름을 사용할 수 있다.☆그릇을 미리 만들어 놓기: 아래의 둘 중 하나
1\. 조건문 : 주어진 조건식의 결괏값이 참인지 거짓인지에 따라 코드를 실행할 것인지 혹은 다른 코드를 실행할 것인지 판단하기 위한 프로그래밍 문법.a. if (조건식): 비교연산자(==,<,>)와 논리연산자(&&,ll) 사용{결과}: boolean 타입인 tr
when: kotlin의 when문= 특정값을 선택할 수 있는 switch 선택문 + if 조건문의 범위 비교 기능 더해진 if문의 확장판이라고 볼 수 있다. ※ switch 문은 if 문의 연산식에서 사용되는 비교 연산자 중에 ==만 사용해서 같은 값인지를 비교하는
반복문 : 코드를 반복적으로 실행할 때 사용. 1부터 10까지의 숫자를 Log를 사용하여 출력할 때 반복문이 없다면 Log 코드를 열 줄 작성해야 한다. 반복문을 언제 사용하는지 아는 것이 중요하다.반복문은 말그대로 코드 실행을 ‘반복’해 준다. 그렇기 때문에, 서비스
while문: 조건식 사용하여 특정 조건이 만족할 때까지 코드 반복 ⇒ 반복가능한 if문 a. 기본 while 반복문 while (조건식) { // 실행 코드}괄호 안의 조건식에는 주로 두 항과 비교 연산자 사용(조건식)안의 결과가 항상 true 이면, {코드블록
■반복문 제어 : 반복문이 실행되는 도중에 특정 조건에서 반복문을 벗어나거나, 다음 반복문으로 넘어가야 하는 상황이 있다.ⓐ break: 반복문 탈출하기for (index in 1..10){ Log.d("break", "현재 index는 $index 입니다.")
●배열과 컬렉션: 인덱스 선언하고 그것을 활용하는 과정에 집중! : Int와 Double 같은 타입은 모두 하나의 변수에 하나의 값만 저장하도록 설계되어 있는데 프로그래밍을 하다 보면 하나의 변수에 여러 개의 값을 저장해야 할 필요성이 있다. Kotlin 뿐만 아니라
●뮤터블 컬렉션 컬렉션(Collection)은 다른 이름으로는 동적 배열이라고도 한다.배열과는 다르게 공간의 크기를 처음 크기로 고정하지 않고 임의의 개수를 담을 수 있기 때문이다. 여러 개의 값을 담을 수 있는 배열은 값의 개수가 증가하면 사용할 수 없는 단점이 있기
뮤터블 컬렉션 컬렉션(Collection)은 다른 이름으로는 동적 배열이라고도 한다.배열과는 다르게 공간의 크기를 처음 크기로 고정하지 않고 임의의 개수를 담을 수 있기 때문이다. 여러 개의 값을 담을 수 있는 배열은 값의 개수가 증가하면 사용할 수 없는 단점이 있기
셋(Set): 값의 중복을 허용하지 않는 리스트. 리스트에서 인덱스가 빠진 데이터 타입으로 인덱스를 조회할 수 없고, get 함수도 지원하지 않는다. 빈 셋으로 초기화하고 값 입력하기 (빈 리스트 사용과 유사. 그러나 리스트는 get 가능)var set = muta
●함수 ⇒ 함수를 생성하고, 그 함수를 호출하는 과정에 집중!함수의 정의와 생성fun 함수명(파라미터 이름: 타입): 반환 타입 { return 반환값}\-함수는 fun 키워드로 정의하며, 반환값이 있는 함수는 내부에서 return으로 값을 반환한다.파라미터(pa
함수의 사용 ⇒ argument(전달인자) cf. parameter(매개변수)함수명(파라미터에 전달할 값)함수의 사용은 이름 뒤에 괄호를 붙여서 명령어를 실행하는 형태함수는 이름만 호출해서는 실행되지 않고 반드시 괄호를 붙여야 실행됨괄호를 붙이지 않으면 함수의 코드가
함수 파라미터의 정의 ① val의 생략 cf. 데이터 클래스- 생략 불가함수에 입력되는 파라미터는 마치 변수를 정의하듯이 '이름: 타입'의 형태로 정의되며, 여러 개의 파라미터가 정의될 경우는 콤마로 구분한다.Kotlin에서 함수 파라미터를 통해 입력되는 모든 값은 변
● 스코프 함수(Scope Function)= 영역함수: 코드를 축약해서 표현할 수 있도록 도와주는 함수사용법은 함수처럼 쓰지 않고 run, let처럼 괄호 없이 일종의 키워드 같이 사용할 수 있다.(lateinit과 함께 safe call 남용을 막아주는 역할도 하기
● 클래스: 변수와 함수의 모음(연관성 있는 함수와 변수를 한군데에 모아 그룹화하고 사용하기 쉽게 이름을 붙여놓은 것) ⇒ ①클래스의 작성 & ②생성자 작성과 \-> ③생성자 호출을 통한 생성자 코드 실행과 인스턴스 생성(클래스 인스턴스화) & ④클래스 사용(클래스 내
② 생성자(Constructor) 작성하기 ⇒ ☆클래스 생성 시 함께 작성해줄 것!☆: 작성된 클래스를 사용하기 위해서는 생성자라고 불리는 함수가 호출되어야 한다.kotlin은 프라이머리(Primary)와 세컨더리(Secondary) 2개의 생성자를 제공한다. ※ 생성
생성자 호출 -> 클래스 인스턴스화 & init 실행 (생성자를 호출직후 바로 실행되는 코드블록. 가장 먼저 초기화 되는 부분.) : 클래스의 이름에 괄호를 붙여서 클래스의 생성자를 호출한다.(constructor 키워드를 호출하지는 않는다.)클래스명()아무런 파라미터
클래스 사용 (클래스 내부에 정의된 변수와 함수 사용)ⓐ 생성자를 통해 변수에 저장된 클래스의 인스턴스는 내부에 정의된 변수와 함수를 도트 연산자(.)로 접근할 수 있다.우선, 다음과 같이 프로퍼티 1개와 메서드 1개를 갖는 클래스를 만든다.class Pig {
● 클래스의 상속: 클래스의 재사용을 위한 설계도구※ 상속이 미리 만들어져 있는 클래스를 가져다 쓰는 개념이라면 익스텐션은 미리 만들어져 있는 클래스에 메서드를 추가하여 넣는 개념이다.※ 상속자를 통해, 클래스 내부의 프로퍼티와 메소드를 사용한 것이라면 상속은 클래스
오버라이드(무효로하다): 상속받은 프로퍼티와 메서드의 재정의상속받은 부모 클래스의 프로퍼티와 메서드 중에 자식 클래스에서는 다른 용도로 사용해야 하는 경우가 있습니다.앞의 예제에서 Parent 클래스의 메서드를 sayHello로, Child 클래스의 메서드를 myHel
● 클래스의 확장: 익스텐션 ⇒ 기능추가 fun 클래스.확장할 메서드(){ // 이미 만들어져 있는 클래스에 메서드 추가 // 코드 // 이 메서드 사용할 때에는 .(연산자)메서드 함께 써줄 것!!}Kotlin은 클래스, 메서드, 프로퍼티에 대해 익스텐션(E
객체지향 프로그래밍은 설계(껍데기만 있는 코딩)와 구현(실제 로직을 갖는 코딩)으로 구분할 수 있다.지금까지는 모두 구현에 중점을 둔 기법을 살펴봤고, 이번에는 프로그래밍 설계에 사용하는 설계 도구에 대해 알아볼 것이다.※ 객체지향 프로그래밍 객체지향 프로그래밍은 실세
추상화(abstract): 클래스 개념 설계도구프로그래밍을 하기 전 개념 설계를 하는 단계에서는 클래스의 이름과 클래스 안에 있음 직한 기능을 유추해서 메서드 이름으로 먼저 나열한다.이 때 명확한 코드는 설계 단계에서 메서드 블록 안에 직접 코드를 작성하는데, 그렇지
인터페이스: 외부 모듈에 제공하기 위해 메서드 이름을 나열한 명세서interface 인터페이스명 { var 변수: String fun 메서드1() fun 메서드2()}인터페이스(Interface)는 추상화와 비교하면 가장 명확하게 이해할 수 있는데 실행
접근 제한자: 클래스의 맴버에 지정된 접근 제한자에 따라 외부에서 사용 여부가 결정: Kotlin에서 정의되는 클래스, 인터페이스, 메서드, 프로퍼티는 모두 접근 제한자(Visibility Modifiers)를 가질 수 있다. 함수형 언어라는 특성 때문에 코틀린은 기존
⑤ 제네릭(Generic): : 입력되는 값의 타입을 자유롭게 사용하기 위한 / 타입을 특정해서 안전성을 유지하기 위한 설계 도구※제네릭(Generic)리스트 컬렉션을 생성하면서 < > 괄호를 사용했는데, 이 괄호의 정식 명칭은 제네릭.제네릭은 컬렉션이 사용하는
val multi (Int, Int): -> Int = {x: Int, y: Int -> x\*y}변수를 함수처럼 사용가능람다식의 선언 자료형. 람다식 매개변수에 자료형이 명시된 경우 생략가능람다식의 매개변수. 앞에서 선언 자료형이 명시되어 있으면 생략 가능람다식의 처
● null 값에 대한 안정적인 처리: Null Safety(Kotlin은 null 값의 처리에 많은 공을 들인 언어이다.): null은 항상 이슈의 중심에 있는데 null로 인해 프로그램 전체, 혹은 앱 전체가 멈출 수 있다. 프로그램이 멈출 수 있는 상황을 다음과
● 지연 초기화 : 개발을 하다보면 클래스 안에서 변수만 Nullable로 미리 선언하고 초기화를 나중에 해야 할 경우가 있다. ① Nullble로 선언하는 일반적인 방법: 일반적인 선언 방식으로, 처음에 null 값을 입력해두고, 클래스의 다른 메서드 영역에서 값을

프로그램은 하나의 메인 쓰레드(실행흐름)가 존재한다.하나의 메인 쓰레드는 → fun main() ← 메인함수를 의미한다.실습 프로그램은 메인 쓰레드위에서 로직을 실행해서 동시처리가 불가능했다.별도의 자식 쓰레드를 생성해서 동시에 로직을 실행할 수 있다.코틀린은 thre
\-> 목표: 하나의 쓰레드안에서 다시 여럿의 코루틴을 나누어서 쓴다운영체제의 깊이있는 지식이 없어도 쉽게 비동기 프로그래밍을 할 수 있다.최적화된 비동기 함수를 사용하드웨어 자원의 효율적인 할당을 가능하게 한다안정적인 동시성, 비동기 프로그래밍을 가능하게 한다.코루틴

(쓰레드나 코루틴은 각자의 방법으로 동시성을 보장하는 기술이다. 코루틴은 Thread를 대체하는 기술은 아니다. 하나의 Thread를 더욱 잘개 쪼개서 사용하는 기술.코루틴은 쓰레드보다 CPU 자원을 절약하기 때문에 Light-Weight Thread라고 한다.구글에서
여러 인스턴스 리턴 (하나의 값에 여러 인스턴스 담기)메소드는 기본적으로 하나의 데이터를 리턴한다.두 개 이상의 데이터를 포함하는 데이터클래스를 설계하고 인스턴스를 리턴하면 가능하다.(여러 값을 리턴한다기 보다는 여러 프로퍼티 정보를 채워서 객체를 리턴하는 것)하지만
● 예외처리: throw- 예외 던지기 / try & catch & finally- 예외 던지기 & 예외 처리 예외처리가 필요한 이유고품질의 프로그램이란 사용성을 해치지 않아야해요여러 측면의 사용성이 있지만 프로그램이 도중에 종료되는건 심각한 문제예요미리 예외를 생각하
Break는 해당 if문을 종료시킨다.a가 50이 되는순간 if문은 종료된다.Return은 해당 메소드가 호출된 곳까지 종료시킨다.즉, if문을 포함한 메소드 자체를 종료. 50만 출력하고, 함수는 곧바로 종료된다. 즉, 51부터 100은 출력하지 않는다.