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개의 댓글

관련 채용 정보