2022/07 13

[코틀린] "=="과 "==="의 차이

==과 ===의 차이는 ==는 값만 비교하는 것이고 ===는 값과 주소를 모두 비교하는 것이다. fun main() { val a: Int = 128 val b = 128 println(a==b) // true println(a===b) // true val c: Int? = 128 val d: Int? = 128 println(c==d) // true println(c===d) // false } 위 두 변수는 각각 Int 타입으로 128을 저장하고 있다. 코틀린의 경우 Int 타입은 컴파일을 할 때 기본형으로 변환하여 저장하기 때문에 두 변수가 가리키고 있는 곳과 값은 동일하다. 반면 밑에 두 변수는 null을 허용하는 변수로 변수 생성시 객체 형태로 변수를 생성한다. 생성된 객체는 두 변수에 의해 ..

카테고리 없음 2022.07.27

[코틀린] is, as 키워드

is 키워드 is키워드는 특정 자료형과 같은 타입인지를 검사하는 키워드이다. 다음은 is 키워드의 사용 예시이다. fun main() { val str = "Hello" if(str is String){ println(str) } else if (str !is String){ println("it's not a String") } // 결과 : str 출력 } as 키워드 as키워드는 두 가지 기능을 가지고 있다. 하나는 타입 캐스트를 위한 as이고 다른 하나는 import를 하기 위해 별명을 붙이는 기능이다. 타입 캐스트를 위한 as는 다음과 같다. fun main() { val x: Any = "String" val a: String = x as String // String 타입으로 형변환 prin..

kotlin 2022.07.27

[코틀린]NULL값 다루기

코틀린의 NULL 코틀린의 장점중 하나는 null로 인한 오류를 방지할 수 있다는 점이다. 그러면 null을 어떻게 사용하는지 알아보자. 코틀린에는 변수에 null을 허용하기 위해선 ?를 사용해야 한다. 다음은 null 허용과 비허용의 예시이다. fun main() { var nameNotNull = null // 이 문장은 null을 허용하지 않으므로 오류 발생 var nameNull? = null // ?가 있으므로 오류가 발생하지 않음 println("$nameNull") // 결과 : null } 첫 번째 줄은 ? 기호가 없기 때문에 null을 할당하면 오류가 발생하지만 두 번쨰 줄은 null을 허용하므로 오류가 발생하지 않는다. 코틀린에서는 이런 방식으로 null이 들어갈 수 있는 변수와 들어가..

kotlin 2022.07.27

[코틀린] 자료형과 변수

변수 코틀린에서 변수를 선언할 때는 var과 val 키워드를 이용한다. val은 value를, var은 variable을 나타내는 말이다. 이 두 키워드는 C에서는 볼 수 없는 키워드인데 var같은 경우는 우리가 흔히 알고 있는 변수의 역할을 하며, val은 초기에 값이 할당되면 참조만 가능한, 마치 C의 심볼릭 상수같은 느낌이다. var val variable의 줄임말 값의 변경을 허용함 value의 줄임말 초기값 할당 이후 참조만 가능 변수 선언은 다음과 같은 구조로 이루어진다. val value: Int = 5 여기서 val은 앞서 말한 변수를 선언하는 키워드이고, value는 변수의 이름, Int는 자료형이다. var 또한 같은 방식으로 선언한다. 이 형태가 코틀린에서 변수를 선언하는 기본적인 방..

kotlin 2022.07.27

[코틀린] 패키지란 무엇인가?

코틀린 프로젝트의 구조 코틀린 프로젝트는 다음과 같은 구조로 이루어져 있다. 먼저 가장 큰 단위인 프로젝트는 우리가 흔히 생각하는 project를 말한다. 프로젝트는 여러 가지 기능을 하나로 합쳐놓은 커다란 단위이다. 이때 각 기능을 나누는 단위가 Module이다. 모듈은 또 여러 package로 구성되는데 이 패키지는 하나의 모듈을 만들 때 개발자들끼리 만든 파일의 이름이 겹치는 경우 충돌을 막기 위한 것이다. 각 패키지는 또 소스 파일로 구성이 되어있다. 우리가 특정 패키지의 파일에 접근하고 싶다면 package 키워드를 이용해 접근할 수 있다. 이렇게 하면 현재 모듈에서 Hello 폴더 밑에 World 폴더를 참조하는 것이다. 추가적으로 소스 파일을 만들면 .kt이 붙는 경우가 있고 붙지 않는 경우..

kotlin 2022.07.27

안드로이드 로드맵

어떤 분야로 나아갈 것인지 많은 고민을 하며 이것 저것을 해봤지만 마땅히 이렇다 할 결론이 나지 않았다. 그러던 중 안드로이드가 개발 환경이 어렵지도 않고 접근하기 좋다고 생각했다. 또한 간편한 방법으로 실제 서비스를 해볼 수 있을 것이라는 생각에 안드로이드 공부는 어떻게 하는지 찾다가 우연히 안드로이드 로드맵에 관한 내용을 찾았다. 아래는 발표 PPT 자료이다. 영상 링크 밑에도 있지만 혹시나 해서 첨부한다. TECH CONCERT: MOBILE 2019 - 안드로이드 개발자 로드맵 NAVER Engineering | 내용 네이버 안드로이드 개발자 3년차가 되는 과정에서 졸업생은 무엇을 준비하고, 어떤 걸 공부해야 하는지 키워드와 노하우를 공유합니다. tv.naver.com [TECHCON 2019: ..

안드로이드 2022.07.15

chronometer에 대한 궁금증

chronometer를 사용할 때 시간을 세팅하려면 chronometer.base를 사용하게 되는데 이때 왜 setting 값을SystemClock.elapsedRealtime으로 하는지 궁금했다. 그래서 처음 시작할 때 base 세팅값을 0으로 하고 실행해보니 부팅을 한 시점으로부터 경과된 시간이 나왔다. 즉 chronometer가 시간을 나타낼 때에는 부팅 경과 시간을 기준으로 나타낸다는 것을 알았다. 그리고 부팅 시간에 양수를 더하면 그만큼 마이너스된 시간을 표시해주고 음수를 더하면 그만큼 플러스된 시간을 보여준다. 시간을 멈췄다가 다시 시작할 때 멈춘 시점부터 시간을 시작하고 싶다면 SystemClock.elapsedRealtime에다 측정된 시간의 음수값을 더해주면 된다. 만약 2초에서 멈췄다가..

안드로이드 2022.07.13

2022 07 12 나의 일기

오늘은 좀 짜증하는 일이 있어서 지금 일기를 써야겠다. 백준 4949문제를 푸는데 아무리 풀어도 맞는 거 같은데 에러를 띄우길래 정말 답답했다. 다른 소스코드를 찾아봐도 내가 만든 거랑 비슷한데 안 풀려서 다른 사람의 코드를 직접 실행해보고 나의 문제를 알았다. 내가 문제를 못푼게 아니라 문제에서 여러케이스를 주고 한번에 해결해야되는 걸 나는 하나하나 해결하는 걸로 착각한 것이다. 그리고 그 착각의 원인은 문제를 똑바로 이해하지 못했다는 점에 있다. 더 정확한 원인은 문제를 풀려고만 해서 문제를 똑바로 읽지 않았다는 것이다. 뭐가 그렇게 급한지 모르겠다. 매번 시험 볼 때마다 2~3문제를 이런 식으로 날리고도 버릇이 안고쳐지나보다. 천천히 읽어도 모르면서 무슨 문제를 빨리 읽는다고 하는지 모르겠다. 책이..

나의 일기 2022.07.12

2022 07 11 나의 일기

지금 자려고 하다가 문득 든 생각을 써보려고 한다. 나는 방금까지 친구들과 재미있게 게임을 하고 왔는데 끝나고 나니 왜인지 모르게 공허한 느낌이 든다. 공허함 후에 내 머릿속에서는 누군가 나에게 지금한 일이 잘한 일인가 라는 질문을 던진다. 재미있었다면 잘한 일이다. 하지만 가치있게 썼냐고 묻는다면 반반이다. 나에겐 할 일이 많은데 자꾸 핑계를 대면서 미루지만 내가 좋아하는 일은 어떤 상황에서도 거리낌없이 한다. 상황에 따른 대처의 안좋은 예인 것 같다. 그래서 오늘의 다짐은 도서관가서 빡집중하기이다. 집중하면 금방 끝낼 수 있는 일이다.

나의 일기 2022.07.12