Android/Kotlin 18

랜덤함수 (feat. seed값이란?, set, apply)

다음은 random함수를 만들고 실행하는 간단한 프로그램을 만들었습니다. Seed값이란? Seed 즉, 난수 값을 설정하는 이유는 컴퓨터는 원래 복잡한 연산을 수행하는 것 보다 난수를 만드는 것을 더 어려워 합니다. 컴퓨터는 기본적으로 난수를 만들수 없기 때문인데요, 컴퓨터는 기본적으로 정해진 입력에 따라 정해진 값을 낼 뿐입니다. 따라서 이를 해결하기 위해 컴퓨터는 아래 나오는 난수 생성 알고리즘을 사용해 난수를 생성합니다. 이때 이 난수 알고리즘을 실행하기 위해 쓰는 수를 Seed라고 합니다. 따라서, 만약 계속 같은 seed를 사용한다면 컴퓨터는 계속 같은 패턴의 난수를 생성하게 됩니다. 다음은 for문을 이용하여 난수들을 출력해 보았습니다. 하지만 이것의 문제점이 있습니다. 다음과 같이 동일한 값..

Android/Kotlin 2021.07.20

다른 엑티비티에 데이터가 넘어갈때 알아야하는 사항들

https://developer.android.com/guide/components/intents-filters?hl=ko 인텐트 및 인텐트 필터 | Android 개발자 | Android Developers An Intent is a messaging object you can use to request an action from another app component . Although intents facilitate communication between components in several ways, there are three fundamental use cases: An Activity represents a single screen in… developer.android.com 새로운 엑..

Android/Kotlin 2021.07.11

Lambda expression

button.setOnclickListener(new View.onClickListener(){ @Override public void onClick(View view){ ``` } }) 자바에서는 다음과 같이 이벤트리스너를 표현합니다. 코틀린에서는 간단하게 표현할 수 있습니다. 하나만 이벤트처리를 해야하는 경우에는 간단하게 할 수 있습니다. 그리고 코틀린은 파라미터가 하나이면 생략이 가능하기 때문에 더욱 간단한 코드가 만들어질 수 있습니다. button.setOnclickListener{v -> }

Android/Kotlin 2021.07.05

Data Class

코틀린은 자바와 다르게 Data Class를 제공하고 있습니다. public class JavaObject { private String s; JavaObject(String s){ this.s = s; } public String getS(){ return s; } public void setS(String s){ this.s = s; } } 다음은 자바코드 예시입니다. 자바코드를 보면 알 수 있듯이, getter와 setter로 값을 접근하여 지정해야하기 때문에 번거롭고 긴 코드가 되는것을 볼 수 있습니다. 말그대로 data class는 데이터를 저장하는 목적으로 만들어진 class입니다. 일반 자바코드와 다르게 다음과 같이 간단하게 표현할 수 있습니다. data class JavaObject(val..

Android/Kotlin 2021.07.05

With 함수 & Run 함수

val person = Person() with(person) { work() sleep() println(age) } Person person = new Person(); person.work(); person.sleep(); System.out.println(person.age); with함수의 결과값은 람다의 결과값이기 때문에 person의 객체나 값을 호출할 수 있습니다. val result = service.run { port = 8080 query() } service.port = 8080 Result result = service.query() run함수는 with함수와 비슷하게 함수의 결과값을 표현한다는것에 있지만, with함수는 확장함수로 사용하는것이 불가능합니다. run함수는 확장함수로..

Android/Kotlin 2021.07.05

타입추론과 함수

타입추론이란? 변수나 함수들을 선언할 때나 연산이 이루어질때 자료형을 코드에 명시하지 않아도 코틀린이 자동으로 자료형을 추론해주는 기능입니다. 이는 변수가 선언될 때 할당된 값의 형태로 해당 변수가 어떤 자료형을 가진지 추론이 가능하기 때문입니다. 따라서, 반드시 특정한 자료형으로 지정해야하는 상황이 아니라면 대부분은 코틀린의 타입추론을 이용하여 코드량을 줄일 수 있습니다. 함수란? 함수는 특정한 동작을 하거나 원하는 결과값을 연산하는데 사용합니다. 다음과 같이 add라는 함수를 반환하는 값의 형태가 Int이므로 Int를 선언해줍니다. 그런데 이 함수는 단순히 더하는 역할만 하는 함수이므로 단일표현식함수를 사용할 수 있습니다. 방금전에 만든 함수와 같은 기능의 함수를 간단하게 표현할수 있는데요, 반환하는..

Android/Kotlin 2021.07.02

형변환과 배열

형변환이란? 하나의 변수에 지정된 자료형을 호환되는 다른 자료형으로 변경하는 기능을 말합니다. 만약, 형변환 작업없이 바로 변한값을 값 재정의 해버리면 오류가 납니다. kotlin은 자료형 간의 형변환을 지원하기 위해 형변환 함수를 제공하고 있습니다. to뒤에 반환될 자료형을 입력하면 됩니다. ex) toByte(), toShort(), toInt(), toLong() 다음과 같이 형변환 함수를 사용해주어야지 오류가 생기지 않습니다. 이러한 방식은 명시적인 형변환이라고 합니다. 형변환시 발생할 수 있는 오류를 막기 위해 다른 언어들이 지원하는 '암시적 형변환'은 지원하지 않습니다. 명시적 형변환이란? 개발자들이 직접 지정하여 형변환하는 작업을 말하는것이고 암시적 형변환이란? 변수를 할당할 시 자료형을 지..

Android/Kotlin 2021.07.02

선언방식, null 값을 사용하는 방법에 대해서(feat. null pointer exception)

클래스 이름은 파스칼 표기법을 사용합니다. (모든 단어를 대문자로 시작) ex) ClassName 함수나 변수 이름은 카멜 표기법을 사용합니다. (첫단어만 소문자로 시작) ex) functionName var val 일반적으로 통용되는 변수 언제든지 읽기 쓰기가 가능함 선언시에만 초기화 가능. 중간에 값을 변경할 수 없음 runtime시 값이 변경되는걸 원치 않는다면 val을 이용합니다. 이 현상은 일반 고전언어와 가장 큰 차이점인데요, 고전적인 언어들은 변수가 선언된 후 초기화 되지 않으면 기본값으로 초기화 되거나 값이 할당되지 않았다는 표시로 null값을 가지게 됩니다. 하지만, kotlin은 기본변수에서 null을 허용하지 않으며, 또한 변수에 값을 할당하지 않은채로 사용하게 되면 문법에러를 표시하..

Android/Kotlin 2021.07.02

Also 함수

Random.nextInt(100).also { print("getRandomInt() generated value $it") } Random.nextInt(100).also { value -> print("getRandomInt() generated value $value") } int value = Random().nextInt(100); System.out.print(value); 람다식에서 사용하는 방식인데, 매개변수를 통해서 값을 전달하는 방식입니다. 두가지 방법이 있는데, 첫번째 방법은 파라미터값이 없이 it으로 값을 출력하는 방법입니다. 두번째 방법은 파라미터 값을 value로 하고 value로 값을 출력하는 방법입니다. 이와같이 Also문은 람다식으로 사용하여 값을 반환하기 때문에 객체 유..

Android/Kotlin 2021.07.02