| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 오버라이드
- 초기화 미루기
- 통합개발환경
- 스프링부트2.7.9
- 접근제한자
- 인텔리제이
- dbms
- 맥북M1
- 컴패니언
- 타입별칭
- 스프링부트 버전
- Kapt
- typeAlias
- 버전의 중요성
- 람다함수
- while문
- 로그캣
- when문법
- for문
- 안드로이드 스튜디오
- 오브젝트
- lateinit
- downto
- 코틀린
- 엘비스
- MySQL
- 널 안전성
- do while문
- Until
- 반복문
- Today
- Total
목록분류 전체보기 (21)
좌충우돌 코딩
참... 맥북 M1은 탈도 많고 은근 이슈도 많은 것 같다. 아름답게 오류를 표출해주신다. xecution failed for task ':app:kaptDebugKotlin' 에러가 나서 그래들에 Room 라이브러리 관련 문제가 있는 것으로 판단. 이것 저것 삽질을 해봤지만 소용이 없었고 단 한줄기 빛을 찾았다. dependencies에 kapt "org.xerial:sqlite-jdbc:3.34.0"을 추가해주면 깔끔하게 어플리케이션이 구동이 된다. 그럼 이만~~!
정해진 타입들이 있죠? 예를 들면 Int, String 등등... 그러다면 MyType이란 타입을 아시니요??? 존재하지 않는 타입입니다. 하지만 이걸 사용할 수 있는 것이 타입 별칭이라는 것이죠. fun main() { var result: MyType = 10 > 20 println("$result")// false } typealias MyType = Boolean MyType 이라고 타입 별칭을 사용해서 불리언타입으로 지정했습니다. MyType이란 타입은 없지만 제가 만들어서 사용을 했습니다. 결과는 false로 나오는 것을 알 수 있습니다. 이처럼 자신만에 타입을 지정해서 사용할 수 있죠. 그럼 이만~~~
코틀린만 람다 함수가 있는 것이 아니죠. 코틀린의 형인 자바에게도 있고 자바스크립트에도 람다 함수가 있습니다. 이러하듯이 많은 프로그래밍 언어에서 제공하는 익명 함수입니다. // 일반 함수 선언 fun sum1(num1, num2): Int { return num1 + num2 } // 람다 함수 val sum2 = {num1: Int, num2: Int -> num1 + num2} 람다 함수는 리턴문이 필요가 없이 마지막 라인 반환됩니다. val sum2 = {num1: Int, num2: Int -> num1 + num2} 여기서 -> 이후가 반환값이라고 생각할 수 있습니다. 표현식이 단순하기 때문에 그렇죠 다음 코드를 보시죠 fun main() { println("결과 : ${sum(20, 30)}..
디자인 모드로 열심히 만드는 중에 거슬리는(?) 경고가 있었는데, 해결방안을 몰랐다.....;; 요즘 개발하기 좋은 이유는 통합 개발 환경(IDE)가 너무너무 잘 되어있다. 그것도 똑똑한 개발자가 만들었겠지만~ 레이아웃 에디터에서 기존에 있던 핼로우 월드 텍스트뷰를 삭제후, 새로운 텍스트뷰를 디자인창에 뿌렸을 때 나오는 경고입니다. 경고가 뭔지 궁금하면 노란색 느낌표를 눌러주면 친절하게 알려줍니다. 경고의 문구는 아래와 같습니다. Hardcoded text Hardcoded string "TextView", should use @string resource Hardcoding text attributes directly in layout files is bad for several reasons: * W..
임포트를 추가하고 삭제하는 건 조금 귀찮죠...? Log를 전부 삭제했음에도 임포트는 남아있죠. 이런 임포트를 저절로 삭제해준다면??!! 또한 추가해야할 클래스를 자동으로 추가해준다면?!!! 더할 나위 없이 멋진 개발자가 되겠죠?? 대부분 설정값을 변경하지 않는 이상 임포트 할 수 있는 것을 보여주는 기능이 기본값으로 되어있습니다. 하지만 자동추가 및 자동삭제는 설정을 해줘야지 사용이 가능합니다. 안드로이드 스튜디어에서 설정(Settings)으로 들어가줍니다. 에디터(Editor)에서 제너럴(General)로 가면 제너럴 맨 위 상단에 오토 임포트(Auto Import)가 있습니다. 자바에서 Add unambiguous imports on the fly에 체크! (자동 추가 기능) 바로 밑에 잇는 Opt..
데이터베이스라고 생각하면 실생활에서 멀게만 느껴진다. 요즘은 알고리즘이 더욱 친근감있게 다가온다랄까? 하지만 데이터베이스는 생각 외로 우리 주변에서 많은 역활을 하고 있다. 은행계좌, 카드내역, 전화기록, 문자내역 등등 많은 것들이 데이터베이스에 기록되고 있다. 이 데이터베이스는 쉽게 데이터들의 모음이라고 생각하면 된다. 데이터베이스를 말하면 빠지지 않는 것이 DBMS이다. Database Management System, 즉 데이터베이스를 관리하는 시스템을 말하는 것이다. 이로 인해서 여러 명의 사용자나 어플리케이션들과 공유하고 동시에 데이터에 접근이 가능해진다. 가장 많이 사용하는 DBMS는 MySql과 오라클DB 그리고 마리아DB가 있다. 위 3가지 중 MySql로 코딩 공부 및 Sql문도 블로그에..
프로그래밍 언어에서 변수 선언하고 그 변수에 값을 할당하는 것을 초기화라고 합니다. 근데 왜 초기화라고 할까요??? fun main() { var num println($num) } 위와 같이 코드를 작성하게 되면 어떻게 되나요?? 컴파일 에러가 발생하죠. 에러의 내용은 무엇일까요?? Kotlin: Variable 'num' must be initialized num 변수가 초기화 해야한다. 그러니까요... 왜 초기화해서 써야하냐구요~~ 컴퓨터에 자원은 한정적입니다. 무한하지 않죠. 그래서 개발자가 num 변수명을 프로젝트에서 사용하고 또다른 프로젝트에 같은 num 변수명을 사용하고 초기화를 하지 않는다면 num이라는 값에 가비지벨류가 들어가있습니다. 컴퓨터 메모리에 num를 만들어져있고 서로 다른 프로..
코틀린 언어는 null에 대한 처리에 많은 공을 들인 언어라고 합니다. 많은 프로그래밍 언어들이 프로그래밍을 하면서 항상 이슈에 중심이 바로 null 이기 때문이죠. 널은 객체가 선언되었지만 초기화가 이루어지지 않은 상태를 말합니다. 그래서 객체가 널이라는 값을 갖게 되는데, 널을 갖고 있는 객체를 사용하게 널 포인트 익셉션이 발상합니다. 코틀린 형님인 자바를 이용하여 프로그래밍 하다보면 꼭 한번 이상은 만나는 오류이죠. 그런데 코틀린은 널에 대해서 민감하게 반응한 언어라고 볼 수 있습니다. 코틀린에서 널에 대한 연산자들을 알아보죠 널 허용 ? fun main() { var value1: String value1 = null // 오류 var value2: String? value2 = null // 성..
코틀린의 다양한 클래스가 있죠. 그 중 오늘 알아볼 클래스는 데이터 클래스와 오브젝트 클래스, 컴패니언 클래스입니다. 데이터 클래스 데이터 클래스는 data 키워드로 선언하여 VO(value-object)클래스를 편리하게 이용할 수 있게 해줍니다. data class DataClass(val name: String, val age: Int) 데이터 클래스는 데이터를 다루는데 편리한 기능을 제공하는 것이 주목적이므로 위의 코드처럼 주 생성자에 val, var 키워드로 매개변수를 선언해 클래스의 맴버 변수로 활용을 하는 것이 일반적이죠. 데이터 클래스는 객체의 데이터를 비교도 가능합니다. data class DataClass(val name: String, val age: Int) fun main() { v..
코틀린 공부를 하면서 들었던 말 중에 특이한 말이 있습니다. - "여러분들~~~ 코틀린에서의 클래스는 기본적으로 상속이 금지되어있습니다!!!" - "네에????" 네 그렇습니다. 독립심을 팍팍 키워주는 스파르타식 코틀린입니다. 나의 재산을 자녀에게 넘겨주지 않고 사회에 환원하겠다!! 기본적으로 안 되는 것이지.. 상속을 못 받지는 않습니다. 접근제한자 키워드에서도 protected가 있잖아요?! 상속을 받기 위해서는 부모클래스 앞에 open이라는 키워드를 사용해야지만 상속을 받을 수 있습니다. 사회로 치면 변호사에게 상속하겠다는 공증 느낌이랄까요?? 코드를 봅시다~ open class Parent { // 코드 } class Child: Parent() { // 코드 } 상속할 클래스는 클래스 앞에 op..