fun main(args: Array<String>){
println("Hello World")
}
(args : Array<String>)
fun max(a:Int,b:Int):Int{
return if(a>b) a else b
}
fun max(a:Int,b:Int):Int
{ return if(a>b) a else b }
코틀린의 if는 문이 아니라 식이다. (물론 문으로도 활용 가능하다)
식은 값을 만들어 내며 다른 식의 하위 요소로 계산에 참여 할 수 있는 반면
문은 자신을 둘러싸고 있는 가장 안쪽 블록의 최상위 요소로 존재하며 아무런 값을 만들어내지 않는다는 차이가 있다.
위 예제를 식으로 변경하면
fun max(a:Int,b:Int) = if(a>b) a else b
로 이용 할 수 있다.
val a = "가나다라마바사" //타입 생략
val a:String = "가나다라마바사" // 타입 명시
식이 본문인 함수와 마찬가지로 컴파일러가 초기화 식을 분석해서 타입 추론을 해준다.
- val(값을 뜻하는 value에서 따옴):
a. 변경 불가능한 참조를 저장하는 변수
b. 초기화가 되면 재 대입이 불가능하다.
c. 자바로 따지면 final 변수- var(변수를 뜻하는 variable에서 따옴):
a. 변경 가능한 참조다.
b. 변수의 값을 바꿀 수 있다.
c. 자바의 일반 변수에 해당 된다.
- val 변수는 블록을 실행 할 때 한번만 초기화 되어야 한다. 조건에 따라 val 값을 다른 여러 값으로 초기화 할 수 있다.
val message :String
if(true){
message = "abcd"
} else{
message + "efgh"
}
- val 참조 자체는 불변일지라도 객체의 내부 값은 변경이 가능하다.
val a = arrayList("a","b","c") //불변 참조를 선언
a.add("d") //참조가 가리키는 객체 내부를 변경
코틀린에서 키워드 $를 통해 변수를 문자열 안에 이용이 가능하다.
val a = "world" println("hello $a")
result = hello world
$문자를 문자열에 넣고 싶으면 $ 앞에 \를 삽입해야 한다.
- 복잡한 식은 {} 중괄호를 이용해서 문자열 템플릿안에 넣을 수 있다.
ex) val apple = Apple()
println ("apple color = ${apple.color()})- 한글 문자열 템플릿에서는 유니코드 변수 이름으로 인해 컴파일러가 오류를 내놓을 수 있다.
한글 문자열 변수를 중괄호에 넣어서 이용하는게 좋다.
ex) val hello ="안녕하세요"
println("korean hello = ${hello})