분류 전체보기
-
[코틀린 완벽 가이드] 4장 클래스와 객체 다루기 (4.2 널 가능성)코틀린 공부/코틀린 2023. 12. 29. 17:31
4.2 널 가능성 자바와 마찬가지로 코틀린은 참조 값에는 아무것도 참조하지 않는 경우를 나타내는 특별한 null이라는 값이 있다. 자바에서는 모든 참조 타입의 변수에 null을 대입할 수 있지만, 이때 이 참조 타입에 정의된 메서드나 프로퍼티를 사용하려면 NPE(NullPointerException)이 발생한다. 이 오류가 최악인 이유는 컴파일러가 정적인 타입 정보만으로는 이런 오류를 잡아낼 수 없어서 런타임에 프로그램을 실행해봐야 이 오류를찾을 수 있기 떄문이다. 코틀린 타입 시스템에는 null 값이 될 수 있는 참조 타입과 없는 타입을 확실하게 구분해주는 큰 장점이 있다. 이 기능은 null 발생 여부를 컴파일 시점으로 옮겨주기 때문에 악명 높은 NullPointerException 예외를 상당 부분..
-
[코틀린 완벽 가이드] 4장 클래스와 객체 다루기 (4.1 클래스 정의하기)코틀린 공부/코틀린 2023. 12. 29. 16:27
4.1 클래스 정의하기 기본적으로 클래스 선언은 참조 타입(referential type)을 정의한다. 즉, 이런 참조 타입의 값은 특정 클래스 인스턴스의 실제 데이터 위치를 가르키는 참조다 4.1.1 클래스 내부 구조 class Person { var firstName: String = "" var familyName: String = "" var age: Int = 0 fun fullName() = "$firstName $familyName" fun showMe() { println("${fullName()} : $age") } } 이 정의는 모든 Person 클래스의 인스턴스마다 firstName, familyName, age라는 프로퍼티와 fullName() 및 showMe()라는 두 함수가 들어..
-
[코틀린 완벽 가이드] 3장 함수 정의하기 (3.5 예외 처리)코틀린 공부/코틀린 2023. 12. 29. 13:13
3.5 예외 처리 3.5.1 예외 던지기 오류 조건을 신호로 보내려면 fun parseIntNumber(s: String):Int { val num = 0 if(s.length !in (1..31)) throw NumberFormatException("Not a number: $s") for(c in s){ if(c !in '0'..'1') throw NumberFormatException("Not a number: $s") } return num } 3.5.2 try 문으로 예외 처리하기 fun readInt(default: Int): Int{ return try{ readln().toInt() }catch (e: NumberFormatException){ default } } 자바 7부터는 catch..
-
[코틀린 완벽 가이드] 3장 함수 정의하기 (3.3 조건문와 3.4 루프)코틀린 공부/코틀린 2023. 12. 29. 11:51
3.3 조건문 3.3.1 if 문으로 선택하기 (자바랑 비슷해서 일부 생략) 자바와 코틀린의 차이점은 if를 식으로 사용할 수 있다는 것이다. fun max(a: Int, b: Int) = if(a > b) a else b 한쪽만 블록이 있을 수도 있다. 단, if else 둘다 있어야 한다. val result = if(i > 0){ println("i is bigger than 0") }else println("i is smaller than 0") 코틀린은 자바가 가지고 있는 3항 연산자 (조건 ? A : B) 가 없다. 이 부분이 그것을 상쇄해준다. 3.3.2 범위, 진행, 연산 코틀린은 순서가 정해진 값 사이의 수열(interval)을 표현하는 몇가지 타입을 제공한다. 코틀린에서는 이런 타입을 ..
-
[코틀린 완벽 가이드] 3장 함수 정의하기 (3.1 함수)코틀린 공부/코틀린 2023. 12. 28. 10:32
여기서는 함수의 기본적인 내부 구조를 살펴보고 인자(named argument), 디폴트(default) 값, vararg 스타일 함수 등을 살펴본다. 그리고 코틀린 언어의 명령형(imperative) 제어 구조도 다룬다. 배우는 내용 : 코틀린 함수의 구조 제어 구조 : 조건문, 루프, 오류 처리 3.1 함수 3.1.1 코틀린 함수의 구조 반지름이 주어졌을 때 원의 넓이를 계산하는 함수를 정의 fun circleArea(radius: Double) : Double{ return PI*radius*radius } fun main() { println(circleArea(3.0)) // 28.274333882308138 } fun 함수 이름(함수에서 사용할 파라미터) : return 값{ 함수가 할 내용 ..
-
[코틀린 완벽 가이드] 2장 코틀린 언어 기초 (2.3 - 2.4)코틀린 공부/코틀린 2023. 12. 27. 15:33
2.3 문자열 2.3.1 문자열 템플릿 val hello = "Hello, world!" 코틀린은 여러 가지 식에서 문자열을 합성해내는 훨씬 더 강력한 방법을 지원한다. println("$hello, Today is ${Date()}") 결과 : Hello, world!, Today is Wed Dec 27 15:24:31 KST 2023 ${}의 중괄호 사이에 넣기만하면, 어떤 올바른 코틀린 식이든 문자열에 넣을 수 있다. 이런 기능을 문자열 템플릿이라고 한다. 또 다른 문자열 유형으로 로우 문자열(raw string)이 있다. 로우 문자열을 사용하면 이스케이프 시퀀스를 사용하지 않고도 문자열 작성이 가능하다. val message = """ $hello, Today is ${Date()} """.tr..
-
[코틀린 완벽 가이드] 2장 코틀린 언어 기초 (2.1 - 2.2)코틀린 공부/코틀린 2023. 12. 27. 13:12
배우는 내용 변수 정의 가변과 불변 변수 기본 식: 참조, 호출, 단항/이항 연산자 기본 타입과 연산: 수, 문자, 불 값 문자열 타입: 문자열 리터럴과 템플릿, 기본 문자열 연산 배열 타입: 배열 생성과 기본 연산 2.1 기본 문법 2.1.1 주석 1. 한 줄짜리 주석: // // 2. 여러 줄 주석 /* 여러 줄 주석 */ /* 여러 줄 주석 */ 3 KDoc 여러줄 주석: /** KDoc 여러줄 주석 */ /** KDoc 여러줄 주석 */ 2.1.2 변수 정의하기 val 키워드 변수 식별자 : 새 변수에 이름을 부여하고, 나중에 이를 가리킬 때 사용한다. 변수의 초깃값을 정의하는 식 : = 기호 뒤에 온다. fun main() { val a = readln().toInt() val b = readl..
-
[코틀린 완벽 가이드] 1장 강력하고 실용적인 코틀린코틀린 공부/코틀린 2023. 12. 27. 12:17
배우는 내용 : 코틀린이란 무엇인가? 코틀린 생태계를 이루는 주요 구성 요소 1.1 코틀린이란 무엇인가? 코틀린은 안정성, 간결성, 상호 운용성을 강조하는 패러다임, 다중 플랫폼 프로그래밍 언어다. 2010년 하반기에 처음 생겨서 2016년 2월 처음으로 공개 릴리스 됐으며, 안드로이드 개발, 데스크톱 애플리케이션, 서버 측 솔루션 등 여러 개발 분야에서 유망한 도구로 꾸준히 인기를 얻고 있다. 2019년 11월 1.3이 나왔고, 2021년5월 1.5.0이 나왔다. 2017년 구글이 안드로이드 플랫폼의 공식 지원 언어로 코틀린 선택. 이로 인해 코틀린 언어 사용자가 엄청나게 늘어났고, 현재 구글, 아마존, 넷플릭스, Pinterest, 우버 등 여러 회사가 프로덕션 개발에 코틀린을 사용하고 있으며, 코틀..
-
Android Background Service 예제안드로이드 학습/Android 기술면접 대비 코드 2023. 12. 22. 17:44
안드로이드 Background Service를 공부하다가 놀란 부분이 있었다. 다른 블로그들을 찾아봤었을때는 분명이 앱이 종료되도 작업이 계속 수행된다고 적혀있었는데 새로 찾아보니 앱이 API 레벨 26 이상을 대상으로 전용 앱이 포그라운드에 있지 않을 때 시스템에서 백그라운드 서비스 실행에 대한 서비스 실행에 대한 제한을 적용한다고 합니다. 앞으로는 앱에 실행과 무관하게 실행되는 것은 무조건 Foreground를 쓰던가 아니면 예약해서 코드를 실행시키려면 알림매니저나 워크 매니저를 사용해야 하는 것 같다. 그러면 Background Service는 이제 왜 사용하는지 잘 모르겠지만 그래도 알아보자! 아래 예제는 링크에 있는 블로그 예제를 따라 했습니다. AndroidManifest.xml url을 이용..
-
Android Foreground Service 예제안드로이드 학습/Android 기술면접 대비 코드 2023. 12. 22. 17:40
1) 시작전 참고 자료 및 참고 사항 1. Service와 Foreground Service의 전반적인 설명 : 링크 2. 안드로이드 developer 사이트 설명 : 링크 3. API 33, API 34 변동 사항 설명된 블로그 글 : 링크 먼저 알아야 할 내용은 안드로이드 API가 업데이트 될때마다 notification(알림) 이나 Service의 추가 되는 방법이 조금씩 달라진다는 것이다. 구체적으로 예시를 들자면 다른 블로그에 여러 Foreground Service에 Notification을 추가 시키는 방법이 나와있지만, API 33, Android 13 버전 이상에서는 AndroidManifest.xml에 permission을 선언해줘야 notification이 되기 때문에 이전 버전들 내용..