코틀린 배워보자 Kotlin! [1] 헬로세계, 변수, 함수

달의꿈·2020년 6월 10일
0

음.. 첫 글은 그냥 코틀린을 하고 싶었어요.
뭐 그냥 개인 공부용이에요^^

Kotlin은 Java보다 간결하고 안정성있는 언어라고 합니다.
근데 Java를 잘 안써봐서 어어어어어어엄청 와닿지는 않ㅎ

웅~~ 그건 써보면서 깨닫는거얌~~ 바로 가시져!

대부분의 언어와 같이 코드는 main함수에서 시작합니다. 함수는 function의 약자인 fun. 코틀린 개발자가 함수를 만드는 것은 재미있어요~라고 만들었다는 썰이

fun main() {
    println("Hello world!")
}

출력
Hello world!

솔직히 너무 간단하다; 내부에서 어떻게 돌아가는지는 연습하는 입장에선 일단 노 알빠지만 Java에서 System.out.println보다 타자상에서 3배의 효율을 보이는(?) 프린트 함수를 제공하는거져.

그럼 몇 가지 연습을 더 해봅시다.

변수

코틀린에서 변수는 키워드
val(VALue, 고정형 변수=상수, 처음 한 번만 할당)과
var(VARiable, 변수, 반복 할당 가능)
을 제공합니다. Java나 C에서는 시작이 변수이고 키워드 final이나 const를 붙여 상수로 지정하는 것에 반해

코틀린은 안정성을 목적으로 변수 var보다 상수 val의 사용을 권장하기 위해 상수 키워드의 편의성을 강조한 것으로 볼 수 이따!

때문에 개발자들은 보다 비교적 편하게 상수를 지정할 수 있다는 것이져! 비교코드---

java에서 :

int v;		//변수
final int V = 10;	//상수...너무김;

c(c++)에서 :

int v;		//변수
const int V = 10;	//상수...너무김;

kotlin에서 :

var v: Int	//변수
val V: Int	// 상수...키워드 하나만 써두됨 ㅎ
/*
아 그리고 kotlin은 Type을 명시하면 
val이어도 처음에 초기화를 할 필요는 업슴다
*/

기본타입

코틀린에서는 위의 Int외에도 Byte, Short, Long등의 기본타입을 제공합니다. 이들은 모두 정수를 나타내며 바이트만 다르죠. 위 내용은 다 알다시피 귀찮아서 많이 생략하구 숫자에 아무 표시도 안붙으면 Int로 인식하므로, 명시적으로 롱이다 라고 붙여줄라면 L을 붙입니다. 즉,

val oneInt = 1 // Int로 추론
val oneLong = 1L // Long으로 추론

소숫점의 타입도 알다시피 Float, Double을 제공합니다. Float은 6-7자리까지, Double은 15-16자리까지의 정확도를 제공하는 듯. 이 역시 일반적인 숫자는 Double로 추론하므로 Float로 하게 하려면 F는 필수.

val e = 2.7182818 // Double로 추론
val eFloat = 2.7182818F // Float으로 추론

근데 지금까지 우리가 아는 c나 java와는 다른 점은 이런 기본타입과는 다르게 대문자로 시작한다는 점? 코틀린은 최신식 언어답게 이런 기본형 타입까지 클래스로 취급. ㄹㅇ 객체지향 언어에 가깝다고 볼 수 있네요. 그래서인지 암시적 형변환에 조금 자유롭지 못합니다. 예를 들어

fun main() {
	fun printChar(c: Char) { print(c) }
    
    printChar('d') //ok
    printChar(100) //이거 불가능
}

와 같이 아스키코드 d가 100이랑 똑같은지 못알아먹음;; 아마 일부러 못알아먹게 의도한거 같긴 한데 무튼 자기 타입과 완전히 일치해야만 컴퓨터가 알아먹을 수 있단 것이져. 근데 이렇게 자동으로 형변환이 안되면 개발자들이 엄청난 불편함을 호소하며 다른 언어로 갈아타려고 하겠져? 그래서 코틀린은

엄청난 양의 명시적 객체변환 함수를 제공합니다(!!)

toByte()
toShort()
toInt()
toLong()
toDouble()
toFloat()
toChar()
...

웬만하면 형변환 자동으로 안될테니 너님이 알아서 다 하라는... 그래서 이걸 이용하면

var a = 2L.toInt().toByte().toChar().toDouble().toFloat().toInt()
// 돌고돌아 변수 a에는 Int가 할당.

형 뭐해???

암튼 이렇게 직관적으로 형변환을 내가 하면서 코드를 짜기 때문에 코드 안정성이 조금 높아진다는 특징이 있다고 할 수 있습니다.

함수

함수는 fun키워드로 여러 매개변수를 받아서 적절히 반환시킬 수 있습니다. 코틀린의 특징은 Scala나 Pascal 언어와 같이 기본타입이 뒤에 정의된다는 점만 알면 되겠슴니다!

fun sum(a: Int, b: Int): Long {
	return (a + b).toLong() // Long형 반환
}
fun sum2(a: Int, b: Int) = (a + b).toLong()

return으로 반환시켜도 되고, =을 이용해서 할당한다는 느낌으로 이용해도 상관이 없습니다.

흠... 근데 갑자기 든 생각이
이제 충분히 많이 쓴 것 같고 졸리군여.
이정도면 본전 뽑았으니 나중에 2편을 이어서 써야겠네요.
굳밤

Reference

Kotlin Language Guide : https://kotlinlang.org/docs/reference/basic-syntax.html

profile
Everything to me

0개의 댓글