본문 바로가기
728x90

코틀린11

Kotlin에서의 프로퍼티, Java에서의 필드와 프로퍼티 서론 자바에서는 클래스의 속성이나 상태를 나타낼 때 주로 필드와 프로퍼티라는 두 가지 용어를 사용합니다. 코틀린에서는 클래스의 속성과 상태를 나타낼 때 프로퍼티라는 용어만 사용합니다. 그렇다면 Java에서의 필드와 프로퍼티, Kotlin에서의 프로퍼티는 어떤 차이가 있는 걸까요? 우선 자바의 필드와 프로퍼티를 살펴 보겠습니다. Java의 field와 property field: 자신이 속한 클래스의 내부 변수. (속성 및 상태) property: 클래스의 내부 변수(필드)에 대해 접근자(getter/setter)를 사용해 접근하는 것. 필드와 접근자를 통틀어 가리키는 용어. 필드는 외부에서 직접 접근이 가능합니다. 그러나 클래스 밖에서 직접 접근은 권장되지 않습니다. 즉, 접근자를 사용하는 프로퍼티 사용.. 2023. 4. 10.
Kotlin 에서의 원시값 포장과 그에 적합한 클래스 선택하기 서론 원시값들을 모두 포장하다보니 클래스 외부에서 비교를 할 때 아래와 같이 코드가 길어지고 복잡해지는 경우가 많았다. 예제) 로또의 번호들이 중복되었는지 검사하는 코드 require(numbers.size == numbers.distinctBy { it.number }.size) { LOTTERY_NUMBERS_DUPLICATE_ERROR } 따라서, 외부에서 사용시 복잡해지지 않도록 equals를 override하였다. 두 객체를 비교할 때 객체의 주소가 아닌 객체의 내부 변수를 이용해 비교를 하도록 하였다. 하지만 이렇게 원시값을 포장할 때는 class 보다는 data class가 더 적절할 수 있다. 때에 따라서는 value class가 더 적절할 수도 있다. class, data class, v.. 2023. 4. 8.
[프로그래머스][kotlin] 키패드 누르기 제대로 풀지 못하여 다른 사람의 풀이를 참고했다. class Solution { fun solution(numbers: IntArray, hand: String): String { var answer = "" val map = mutableMapOf( 1 to Pair(0, 3), 2 to Pair(1, 3), 3 to Pair(2, 3), 4 to Pair(0, 2), 5 to Pair(1, 2), 6 to Pair(2, 2), 7 to Pair(0, 1), 8 to Pair(1, 1), 9 to Pair(2, 1), 0 to Pair(1, 0), "*" to Pair(0, 0), "#" to Pair(2, 0) ) //키패드의 번호판을 좌표화 시켜준다. var currentL: Any = "*" va.. 2021. 4. 8.
[프로그래머스][kotlin] 크레인 인형뽑기 게임 import java.util.* class Solution { fun solution(board: Array, moves: IntArray): Int { var answer: Int = 0 var basket: Stack = Stack() moves.forEach { for (i in board.indices) { if(board[i][it-1] != 0) { if(!basket.empty() && basket.peek() == board[i][it-1]) { answer += 2 basket.pop() } else { basket.push(board[i][it-1]) } board[i][it-1] = 0 break } } } return answer } } 문제를 풀며 알게 된 명령어 peek(): .. 2021. 4. 2.
[kotlin] collection (List, Set, Map) kotlinlang.org/docs/reference/collections-overview.html Collections Overview - Kotlin Programming Language kotlinlang.org 우선, list, set, map세 녀석은 기본적으로는 오직 참조만할 수 있는, 즉 수정할 수 없는 immutable의 속성을 가지고 있습니다. 그러나 mutable하게 해줄 수 있습니다. list를 예로 들어보자면 val list = listOf("one", "two", "one") //immutable val list = mutableListOf("one", "two", "one") //mutable 간단하쥬? 자 이제 각각 살펴봅시다~ List List는 배열과 매우 비슷합니다. in.. 2021. 1. 14.
[kotlin] arrays 배열 kotlinlang.org/docs/reference/basic-types.html#arrays Basic Types: Numbers, Strings, Arrays - Kotlin Programming Language kotlinlang.org 배열 생성 방법 var n = IntArrayOf(1,2,3) val n1 = IntArray(5) { 42 } //42로 초기화 var n2 = IntArray(5) { it * 1 } //[0] = 0*1, [1] = 1*1, [2] = 2*1, [3] = 3*1, [4] = 4*1 가장 많이 쓰이는 방법. 그 외에도 val n = arrayOf(1, 2, 3) 배열 참조 방법 println(n.get(0)) println(n[0]) 배열 수정 방법 n.set.. 2021. 1. 14.
[android] [kotlin] TabLayout과 ViewPager사용하기 TabLayout이란!! 카카오톡, 페이스북, 구글 플레이스토어, 등에서 볼 수 있는 각각의 탭 메뉴 입니다. 그리고 각각의 페이지가 다른 화면을 가지기 위해 ViewPager를 사용합니다. 오늘은 탭을 네개 만들어봅시다! 우선 가장 기본적인 메인화면을 꾸며주고, activity_main.xml 각각의 다른 화면을 가지도록 fragment를 만들어줍시다. fragment를 잘 모른다면??? korean-otter.tistory.com/entry/android-kotlin-Fragment-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 [android] [kotlin] Fragment 사용하기 Fragment 시작합니다! 안드로이드에서 화면을 바꾸는 방법이 두 가지가 있는데 하나는 새로운.. 2021. 1. 6.
[android] [kotlin] Splash 사용하기 와! 스플래쉬! 출발합니다! 스플래시(Splash)화면이란 카카오톡 실행시 카카오 로고, 유튜브 앱 실행시 유튜브 로고 등이 잠시 보여지고 앱을 사용하게 됩니다. 앱 실행시 브랜드 로고나 이벤트광고 등이 지나가는 화면이 스플래시 화면입니다. 핸들러를 이용해 스플래시 화면을 1초 띄워주고 메인화면으로 돌아오는 프로그램을 만들어보겠습니다. 스플래시 화면, 스플래시 클래스를 만들어주어야합니다. 우선, 스플래시 화면을 만들어줍시다. activity_splash.xml 대강 이쁘게 만들어준 후 SplashActivity.kt handler를 이용해 딜레이를 줍시다! intent가 뭔지 잘 모르겠다면..! 여기로! korean-otter.tistory.com/entry/android-studio-kotlin-int.. 2020. 12. 31.
[android] [kotlin] toast 메시지 사용하기 와! 토스트! 토스트 메시지가 왜 토스트메시지냐면, 빵을 토스터기에 넣었을 때 굽고 나면 빵이 뿅 하고 튀어나오는 것처럼 뿅 하고 메시지가 튀어나온다고 토스트메시지입니다. :) 버튼을 누르면 사진이 바뀌고, 메시지가 뿅 나오게 해보겠습니다. 우선 화면에 버튼과 이미지뷰를 만들고 대충 꾸며줍시다. activity_main.xml 그리고 버튼을 눌렀을 때 일어날 일들을 만들어줍시다. MainActivity.kt 이미지를 넣는 방법은 마음에 드는 사진을 복사해주고, drawable에 붙여넣기를 해주면 됩니다!! 간단하게 완성! 실행해보면..! www.youtube.com/watch?v=fmiwEfFrjsM&list=PLC51MBz7PMywN2GJ53aF0UO5fnHGjW35a&index=4 hyogeun-an.. 2020. 12. 30.
728x90