
2017.5.18에 구글이 안드로이드 공식 언어로 코틀린을 추가안드로이드 스튜디오 3.0부터 코틀린이 기본적으로 지원시작함컴파일 시점에 변수,필드,메서드,함수타입을 verifivation함type inference를 컴파일 시점에 지원한다val a = 5 (컴파일시

절차지향(명령형) 프로그래밍객체지향 프로그래밍(OOP)함수형 프로그래밍(FP)일반인 : 모든 물질개발자 : 상태와 행위를 가진것으로, 비슷한 객체의 구조와 행동이 공통클래스로 선언 됨Grady Booch, UML만듬펜 - 판서를하다(가장 보편적인 행위 - 행위를 추출해

무엇(What)을 할 것인지 보다는 어떻게(How) 할 건지를 설명하는 방식절차지향 프로그래밍(procedural programming)알고리즘과 로직 중심의 문제해결이 주목적(c, c++ 등)객체지향 프로그래밍(object oriented programming)실세계

var(variable) - 언제든지 읽쓰가능, Mutable변수val(value) - 변경안되는거, Assign-once변수, Immutable변수웬만하면 val로 선하는게 좋다.변수 선언위치에따라 이름바뀜클래스 내에 선언된변수 : property(프로퍼티)scope

자바에서는 vararg사용해도 kotlin에서는 잘 사용안함함수 인자의 개수가 고정되지 않고 몇 개가 주어질 지 모를때 유용인수의 개수가 다양할 때는 가변인수로 간단하게 표현함 (받는게 다를 때)인자가 여러 개 일 때 파라미터의 마지막에 반드시 선언ex) (a: Str

1Byte = 1bitkotlin에서 number은 클래스임 - kotlin에서는 Int, 자바에서는 int 라고 하는 이유가 이건가보다java에서는 숫자형이던 char가 kotlin에서는 숫자형이아님Int + Long 연산은 큰 타입으로 자동 변환 à Long = I

형변환 함수 toShort()처럼 to뒤에 바뀔자료형을 쓰면댐형변환 할때 직접 개발자가 변환해야함 (.toInt()해서)문자열로 변경시는 .toString()작은 타입은 큰 타입의 하위 타입이 아님, 즉 작은 타입에서 큰 타입으로 대입이 안됨명시적으로 변환 해줘야함to

우선 코틀린에서 배열은 잘 사용안함 (c에서는 중요)이런게 있다 정도만 알아두자collection으로 충분함배열을 초기값으로 줘야하는 안드로이드 adapter빼고는 그닥 mbti 선택할때도 배열쓰긴한다. (enfj, en…16개)알아둘거 2가지 + 2가지밑에 두개만 알

함수(function), 서브루틴(subroutine), 루틴(routine), 메서드(method), 프로시저(procedure)는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미일반적인 프로그래밍 언어에서 함수의 기본동작방식함수를 호출함수가 갖는 특정 변

무엇(What)을 할 것인지 보다는 어떻게(How) 할 건지를 설명하는 방식절차지향 프로그래밍(procedural programming)알고리즘과 로직 중심의 문제해결이 주목적(c, c++ 등)객체지향 프로그래밍(object oriented programming)실세계

무엇에 속해 있느냐를 나타냄if, when, loop, lange, generic에서 사용generic에서는 좀 다르게 사용a in b —— b.contains(a)a !in b ———!b.contains(a)java와 거의 유사식으로 사용if문이 식으로 사용되는 경우

결론적으로 for, while 잘 쓰지 않음step, until 뭐 이런것들 대충만 알고있으면 됨collection에 있는것을 훨씬 많이씀while(조건에 맞으면 계속 돌아라)do while(조건없이 구문실행후 조건을 체크함, 조건없이 반드시 한번은 사용할때 사용)fo

현재 루프구성 중 가장 가까운 루프를 종료가장 가까운 루프의 다음으로 넘어감식별자 + @ 형태로 사용가장 가까운 루프말고 원하는 루프의 흐름을 제어Label로 break & continue식별자 + @ 형태로 사용가장 가까운 루프말고 원하는 루프의 흐름을 제어Label

고유의 특징값(속성)기능의 구현(함수)함수없이 속성만 갖춘 클래스는 class P(var name : String, val birth :Int) 이렇게 끝낼수있다해더와 바디는 옵션임. 바디가 없으면 {}도 생략가능클래스 내의 변수를 프로퍼티라 함 (정보은닉, 외부에서

class P(var name : String, val birth :Int) 클래스 속성들을 선언함과 동시에 생성자도 선언한 것새로운 인스턴스를 만들기위해 호출하는 특수한 함수인스턴스 속성을 초기화 - 인스턴스의 파라미터로 넘겨줄 값을 만드는var a = P("이동수"

this 생성자, 인스턴스 메소드 내에서만 사용가능 heap memory에 생성된 객체의 자기 참조 값을 가짐 용도 은닉된 이름 사용 자신의 참조 값을 전달 자신의 참조 값은 리턴 class안에서 this를 쓰면 속성을 가르킨다?? ex 1) 객체 2개 생성

코틀린은 상속 금지가 기본값임, 클래스 상속해주려면 open 상태로해야함코틀린에서 서브클래스는 수퍼클래스에 존재하는 속성과 '같은 이름'의 속성을 가질수 없음 (그러나 open해서 오버라이딩 하면 사용가능)class Dog (name : String, age : Int

var a: Drink = Cola() //드링크 기능만 사용, 업케스팅var b: Cola = Cola() //콜라 기능도 사용가능업 케스팅(up casting) - 콜라 인스턴스를 음료 변수에 담는 행위(상위 자료형인 수퍼클래스로 변환한다)다운 케스팅(down c

자바는 프로퍼티가 없고 코틀린에만 있음oop에서 클래스는 캡슐화된 데이터를, 메소드를 통해 제어 및 접근하는 것을 원칙으로 한다. → side effect(부수효과), side effect가 없는거는 고차함수임field에 접근하는 get/set(value)를 모두 포함

인터페이스(interface) 어떤 소프트웨어를 개발할때 표준 명세를 제공하기 위함 서로다른 기능들을 여러개 물려주어야할때 유용 생성자 가질 수 없음 추상함수, 속성 으로 구성됨 기본으로 abstract속성 가짐 구현부가 있는 함수 -> open함수로 기본적으

추상화(abstract) 이름만 만들어 논거를 서브클래스에서 제대로 만듬 기본으로 open속성 가짐 abstract class animal(){ //일부 함수가 구현되지 않은 미완성 클래스, 단독으로는 인스턴스를 만들 수 없음 abstract구현할때 overrid

코틀린에서 오버로딩은 자주 사용하지는 않음파라미터에 default값을 할당 할 수 있음overloading - 함수이름은 같고, 파라미터를 다르게overriding - 상위 클래스의 함수를 하위 클래스에서 재정이름이 같은 함수에 파라미터 개수 또는 타입을 다르게 적용해

스코프 - 변수 함수 클래스 공유하여 사용할 범위 지정범위 - 패키지, 클래스, 함수 로 구분스코프 외부에서는 스코프내부 멤버를 참조연산자로만 참조가능함(a.eat(), import)동일 스코프내에서는 멤버공유가능스코프의 같은 레벨에서는 같은 이름의 변수를 만들면 안된

카테고리를 분류할때만 쓰자!!!!!!!!!카테고리 분류 안되면 const쓰자몇개의 상수 값을 가지는 데이터 형식(열거형)이러한 상수 값은 주로 서로 연관된 항목을 그룹화하고 명명하는데 사용(카테고리)객체들은 대문자로 기술객체들은 고유의 속성을 가질수있다RED(1,”빨간

Sealed 내에 선언된 class들은 해당 kotlin file(하나의 모듈)에서만 상속하여 사용 가능enum 보다는 자유로워 enum대신 다양하게 사용가능 하다 (유연성이 높다)enum 과 class,object(변하지 않는 상태) 구현의 장점을 모두 갖는다중첩클래

어떤 클래스 행위가 해당 객체에 종속적이면서, method로 표현하기에는 class적 성격을 많이 나타낼 때안드로이드에서 많이 쓰임리사이클러뷰리스트 adapterdialog하나의 클래스가 다른클래스와 강하게 연관되어 있다는 의미형태만 내부에 있고 실제 내용을 공유할수는

기존 클래스인스턴스를 만들기위한 틀 -> 내부에 있는 속성이나 함수를 사용하려면 생성자를 통해 인스턴스 객체를 만들어야함( ex) val c = person("이동수",1996))그러나 여러개의 인스턴스 객체가 필요하지 않고 단 하나의 객체만으로 공통적인 속성과 함수를

코틀린이 간결하다는 대표적인 예함수는 존재하지 않고 data만 갖는 클래스를 만들때VO(value-object)DTO(data-transfer-object)Entity Beanopen , sealed, inner, abstract 등을 사용할 수 없다Primary Co

null상태로 속성이나 함수를 쓰려고하면 오류발생null을 쓰려면 null체크 없이 코드가 컴파일 되지않음if(a !=null)\~~ 처럼 if문으로 할수있다그러나 일일이 if문쓰면 귀찮다null체크하기 위해 if문 대신 쓰면 편한것들? - 앞에 변수가 null O →

Single Responsibility Principle설명 클래스는 단 하나의 책임만 가져야 한다하나의 클래스는 하나의 기능 또는 목적에만 집중해야 하며, 이 책임이 변경될 때만 클래스가 수정되어야함잘못된 예시 - 여러가지 일을 하는거학생정보를 가지고, 데이터 저장

코드의 간결성과 유지보수의 용이함스코프 내에서는 객체의 이름을 통해 일일히 참조할 필요 없이 객체를 접근하고 핸들링할 수 있다코드 보기간단한 설명 receiver(T) : 수신 객체 block : 수신객체를 지정하는 람다식이라는 뜻 호출 시에 수신 객체의 전

Single Responsibility Principle설명 클래스는 단 하나의 책임만 가져야 한다하나의 클래스는 하나의 기능 또는 목적에만 집중해야 하며, 이 책임이 변경될 때만 클래스가 수정되어야함잘못된 예시 - 여러가지 일을 하는거학생정보를 가지고, 데이터 저장

클린 아키텍처는 각 계층의 역할을 제대로 구분하기 위해 사용하는 거라고\~~!! 난 정확히 이 역할을 하는 놈이닷!interface는 간단하게 개발자들이 개발할때 필요한 기능들을 만들어 놓고 각자 구현할때 충돌이 안나기 위해 사용한다고 생각을 하거라~! 유지보수 하기도