일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 멤버변수
- 클래스
- 서비스 vs 쓰레드
- 플러터 설치 2022
- 큐 자바 코드
- 자바 다형성
- android ar 개발
- 안드로이드 유닛 테스트
- 안드로이드 라이선스 종류
- 서비스 쓰레드 차이
- rxjava hot observable
- 안드로이드 유닛 테스트 예시
- 안드로이드 os 구조
- 안드로이드 라이선스
- 안드로이드 유닛테스트란
- jvm 작동 원리
- rxjava disposable
- ar vr 차이
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 레트로핏 crud
- rxjava cold observable
- 스택 큐 차이
- android retrofit login
- Rxjava Observable
- 객체
- jvm이란
- ANR이란
- 2022 플러터 설치
- 안드로이드 레트로핏 사용법
- 스택 자바 코드
- Today
- Total
목록개인 공부/Kotlin (31)
나만을 위한 블로그
자바와 코틀린을 비교했을 때 장점 하나를 꼽아보라면 빠지지 않고 나오는 것이 null 처리에 관한 내용이다. 자바에선 주로 if와 &&, || 등의 연산자들을 통해 null이 아닌 경우에 처리할 로직을 작성했다. 이 방식은 규모가 작다면 별 문제되지 않는 처리 방식이지만 depth가 깊은 로직일 경우 null 처리로만 몇 줄을 잡아먹는 경우도 있어서 가독성까지 해칠 수 있다. 코드에서 심미론을 찾지는 않지만 내가 보기 거슬릴 때도 간혹 있다. 이에 비해서 코틀린은 적은 코드로 자바보다 훨씬 간단하게 null을 처리할 수 있기 때문에 이 방법들에 대해 정리하는 포스팅을 쓰려고 한다. 먼저 코틀린 공식문서 중 Null safety 문서부터 읽고 가자. 모든 시작은 공식문서부터다. https://kotlinl..
바로 이전 글이 코틀린의 for 반복문에 대한 글이었는데, 이 for문과 같이 사용할 수 있는 범위(range)라는 요소가 있다. 코틀린 공식 홈페이지에서 말하는 범위는 아래와 같다. https://kotlinlang.org/docs/ranges.html#range Ranges and progressions | Kotlin kotlinlang.org range는 수학적 의미에서 닫힌 간격을 정의한다. range는 둘 다 범위에 포함된 두 끝점(endpoint) 값으로 정의된다. range는 비교 가능한 유형(type)에 대해 정의된다. 순서가 있으면 임의의 인스턴스가 지정된 두 인스턴스 사이의 range에 있는지 여부를 정의할 수 있다. range에 대한 주요 연산은 일반적으로 in 및 !in 연산자의 ..
먼저 for문에 사용할 컬렉션을 정의한다. fun main() { val names: List = listOf("감", "배", "사과", "포도", "바나나", "파인애플", "오렌지") } 이 names 라는 리스트 안의 값들을 출력하기 위해선 아래처럼 중괄호가 없어도 출력할 수 있다. for (item in names) println(item) // 감 // 배 // 사과 // 포도 // 바나나 // 파인애플 // 오렌지 중괄호를 사용한다면 아래처럼 쓸 수 있다. 결과는 위의 주석 앞에 "name : "이 붙은 형태일 뿐이다. for (name in names) { println("name : $name") } 그런데 for문을 사용하는 이유 중 하나가 배열 또는 컬렉션의 특정 인덱스를 갖는 아이템..
자바에 static 변수(필드), 메서드가 존재하듯 코틀린에서도 정적 변수와 함수가 존재한다. 그러나 코틀린의 문법 특성 상 이것들을 클래스 안에 둘 수는 없고, 코틀린에는 static이라는 키워드가 존재하지 않는다. 그럼 어떻게 사용할까? 이 때를 위해 존재하는 것이 companion object라는 것이다. 사용법은 아래와 같다. class TestClass { companion object { val name = "TestClass" fun method() {} } } fun main() { TestClass.name TestClass.Companion.name TestClass.method() TestClass.Companion.method() } 인텔리제이에서 위 코드를 복붙하고 보면 Compa..
자바와 100% 호환을 자랑하는 코틀린답게 코틀린 또한 자바처럼 생성자를 갖고 있다. 코틀린에서 생성자는 어떻게 사용할까? 먼저 자바에서 어떻게 사용하는지 확인해보자. 이름과 나이를 받는다고 가정하면 아래와 같이 만들 수 있다. public class ConstructorJavaTest { private String name; private int age; public ConstructorJavaTest(String name, int age) { this.name = name; this.age = age; } public ConstructorJavaTest() { } public String getName() { return name; } public void setName(String name) { t..
코틀린을 공부하다 보면 이따금 is와 as 연산자를 볼 수 있다. 뭔지 몰라서 검색해보니 is와 as 연산자는 같이 설명되는 경우가 제법 있었다. 그래서 공부한 내용을 기록할 겸 포스팅으로 작성하게 되었다. 먼저 is와 as 각각의 사전적 정의는 아래와 같다. is : be의 현재 시제의 3인칭 단수 be : 있다, 존재하다, 만들다 as : ~처럼(같이) / (자격, 기능 등이) ~로(서) / ~만큼 ~한 is는 자바에서 상속을 공부할 때 is-a 관계(~는 ~이다)를 공부하면서 본 적이 있다. Person이 Animal을 상속한다면 Person은 Animal이다 식으로 하위 클래스는 상위 클래스의 한 종류가 되야 한다는 내용으로, 강한 뉘앙스를 가진 단어라고 생각한다. as는 정의의 뉘앙스로 봤을 때..
확장 : 범위, 규모, 세력 따위를 늘려서 넓힘 함수 : 코드들의 모음. fun으로 선언하는 그것(본인의 추측임) -> 확장 함수? 범위나 규모 따위가 늘어난 함수? 함수의 범위나 규모를 늘려서 선언하는 것? 확장 함수라는 말을 처음 보고 생각한 것들을 간단하게 적어봤다. 공부해보니 코틀린에서 말하는 확장 함수(Extension Functions)란 이미 존재하는 클래스에 함수(메서드)를 추가하는 것이라고 한다. 클래스에 '원래 없었던' 함수를 추가해 클래스의 크기를 넓힌다고도 생각할 수 있으니, 확장이란 단어를 쓴 것이 이해가 된다. 그럼 이 확장 함수란 건 어떻게 쓰는 걸까? 간단하게 예시 상황을 만들어보기로 했다. 내가 개발 공부하면서 자주 쓰는 것 중 하나가 ArrayList다. 이 ArrayLi..
이번 포스팅에선 안드로이드에서 코틀린으로 쉐어드 프리퍼런스를 사용하는 법을 작성하려고 한다. 먼저 쉐어드 프리퍼런스는 뭔지 간단히 정리하고 넘어가자. SharedPreferences(이하 쉐어드)는 키밸류 쌍을 포함하는 파일을 가리킨다. 안드로이드에서 값을 저장하는 방법은 쉐어드, DB, 파일 등이 있는데, 이 중 쉐어드는 저장하고 꺼내오는 속도가 빨라서 간단한 값을 저장할 때 많이 쓰인다. 자동 로그인, 뭔가를 소개하는 액티비티를 처음 앱에 들어왔을 때만 보여주고 두 번째 들어왔을 때는 보여주지 않는다던가 하는 때에 사용을 고려해볼 수 있는 것이다. 설명하자면 여러가지 더 많이 있지만 이 글은 쉐어드에 대해서 설명하는 글이 아니기 때문에 자세한 내용은 구글링하자. 먼저 앱에서 회원가입하는 페이지를 만들..
코틀린도 프로그래밍 언어니까 리스트나 맵 따위의 컬렉션 시리즈도 제공하고 있다. 그런데 사용법이 조금 특이하다. 자바는 대충 ArrayList 객체화 때리고 안에 값 add 해서 지지고 볶으면 그만인데, 코틀린에선 안의 값을 수정할 수 있는 컬렉션과 수정할 수 없는 컬렉션으로 나눠서 만들어놓았다. val, var의 차이를 컬렉션에서도 구현해놓은 것 같다. 시작하기 전에 코틀린의 컬렉션이 가진 상속 구조를 그림으로 표현한 것부터 간단하게 보고 넘어가자. 앞에 Mutable만 없었다면 자바에서 자주 보이는 것들이다. 그럼 List부터 어떤 식으로 만드는지 확인하자. List List는 "목록, 명단, (특정 순서로) 열거하다"란 뜻이 있는 단어다. 그래서 List에는 하나 이상의 값들을 넣을 수 있다. 코틀..
코틀린을 사용할 때 변수를 선언하려면 아래와 같이 한다. 띄어쓰기는 굳이 할 필요 없다. val 변수명: 타입 var 변수명: 타입 String을 써서 문자열 데이터를 집어넣는다면 아래와 같이 할 수 있다. val name: "Tistory" 그리고 코틀린에선 자바처럼 세미콜론(;)을 붙일 필요가 없다. 맨날 쓰다 안 쓰려니까 허전하다 처음에 이 부분을 보고, val과 var로 나눠쓰는 이유가 궁금했다. 그래서 상상해봤다. 특징이 다른 걸 강조하기 위함인가? 그냥 단순하게 철자가 다른가? int와 Integer의 차이같은 건가? 여러가지로 상상해봤지만 답은 서로 특징이 다르기 때문이었다. val 먼저 val은 Valueable의 줄임말이다. Valuable의 사전적 의미는 "소중한, 귀중한, 가치가 큰"..