Kotlin - 기초

Jamwon·2021년 5월 25일
0

Kotlin_Android

목록 보기
7/30

Kotlin

코틀린은 자바를 보완하기 위해서 만들어진 언어 - 자바와 완전한 호환성

안드로이드 first언어로 선정되었다.

문법 훑어보기

fun sum(a: Int, b: Int) : Int){
	return a+b
    }

fun sum(a: Int, b:Int) = a+b

return type을 명시해준다. 2번째 함수는 표현식으로 작성한 함수이다.
두개의 sum함수가 같은 기능!

변수

val a: Int = 1
val b = 2
val c = 3.14
val d: String
코틀린에서는 타입추론이 가능하다.
d처럼 초기화를 안하면 error가 난다.. (null 때문에)
val e:String?
var d: String = "초기화" 이렇게 초기화를 해줘야된다.

val 은 두번초기화 할수가 없고 var로 해야지 여러번 초기화해줄수있다.

Type

정수형 : Byte, Short, Int, Long
실수형 : Float , Double
char
String
Boolean Boolean? = null 뒤에 ?가 붙어있으면 null,True,Flase가 가능핟.
등이 있고 자바에있는 type들과 호환이 된다.

for 반복문

for (i in 1..5){
	println(i)
}

for (i in 6 downTo 0 step 2) {
	println(i)
}

for (i in 1..5 step 3){
	println(i)
}

val numberList = listOf(100,200,300)
for (number in numberList){
	println(number)
}

순서대로 출력값은 1 2 3 4 5 // 6 4 2 0 // 1 4 // 100 200 300 이다

1..5 은 1~5 의 range를 뜻한다.
downTo - 위에서부터 아래로
step - 2의 간격으로
코틀린도 index 0번째다.
untill - 0~untill 10 이라고 하면 0부터 10전까지

if 문

var max:Int
if (a>b){
	max =a
    }else{
    max = b
    }
    
val max = if(a>b){
	print("choose a ")
    a
    }else{
    print("choose b")
    b
}

밑의 if문은 표현식으로 표현한 것이다.

when 문

switch 문 대신 when 문이 있다.

when(x){
	1 -> print("x ==1")
    2 -> print("x ==2")
    else->{
    	print("1,2,가 아닙니다")
    }
}

when (X){
	0,1-> print("x는 0이나 1")
    else-> print("다른것들")
    }
when (x){
	in 1..10-> print("x는 1부터 10 범위안에 있음")
    !in 10..20 -> print("x는 10부터 20범위안에 없음")
    }
when (x){
	is Int -> print("x는 int형이다"
    }

이런식으로 사용가능

kotlin vs Java 코드

null safe

코틀린에서는 null safe 한 코드를 쉽게 작성할수있다.

val b:Int? = 100
b?.sum() -> b가 null인경우에 실행하지 않는다.

val c: Int = 100
c.sum() -> 애초에 nullsafe함

scope function

코드를 좀더 읽고싶게 해주는 것 ex) let run with apply also

Apply 함수

객체를 초기화할때 사용함 코틀린에서는 this생략가능
val person = Person().apply{
firstName = "abd"
lastName ="etf"
}
코틀린에서는 이런식으로 쓰인다

Person person = new Person();
person.firstName = "abd";
person.lastName = "etf;

Also 함수

객체가 파라미터를 통해서 전달 람다의 입력값으로 전달 it으로 전달

Random.nextInt(100).also{
print("getRandomInt() 생성됨 $it")
}

value를 생략하고 출력가능
디버깅하는 용도로드 쓰임

Let 함수

val number: Int?
val sumNubmerStr = number?.let {
	"${sum(10,it)}"
    }

null이 아닌객체에서 람다를 실행할때 사용
code block의 실행결과가 반환된다.

위와같이 number가 null이 아닐때만 let뒤의 문장이 실행이된다!

With 함수

val person = Person()

with(person){
	work()
    sleep()
    println(age)
    }
 

person안의 객체 함수나 변수를 with으로 사용할수있다.(한번에)

Run 함수

val result = service.run {
	prot = 8080
    query()
    }

run함수는 어떤값을 계싼하거나 객체구성과 결과계산이 한번에있을때 유용하게 쓰인다.

5가지의 scope 함수들 실제로 써봐야지 감이잘올거같다!

Data Class

data class Object(val s:String) 와 같이 선언

코틀린에서는 getter 와 setter보다 객체에 직접 접근해서 쓴다.

Lambda expression

코틀린이 함수형 언어에 가까운 특징을 가지고있기때문에
함수에 함수를 전달하고 전달된 함수에서 함수를 실행시킬수있다.

ex) button.setOnClickListener { } 와같이 쉽게 구현가능

lateinit, lazy init

nullsafe 한 코드를 사용하기 위해서 non-null Type으로 변수를 선언한다. 하지만 초기값이 없는 변수를 선언할때 lateinit을 사용한다.

lateinit var lateinitNumber: Int -전역변수로 선언

나중에 초기화를 안해주면 실행이되지 않는다.

lazy init은 나중에 사용이될때 선언해줄때 쓰인다.

val lazyNumber : Int by lazy{
100
}

사용하기 전까지 lazyNumber 변수에 100이 할당되지 않음

View를 나중에 할당할때 많이쓰인다.

이 외에도 여러가지가 있다! 예전에도 따로 코틀린 기본적인 것들을 공부했었는데 요즘 개발하면서 너무 주먹구구식으로 개발하는거같아서 패스트캠퍼스에서 kotlin강의를 구매해서 보기로했다...
돈주고 강의듣기 진짜 싫었는데..

꾸준히해보자

profile
한걸음씩 위로 자유롭게

0개의 댓글