fun main(args:Array<String>){
println("Hello world!")
}
fun max(a:Int,b:Int)=if(a>b) a else b
위와 같이 식이 본문인 경우 함수에서 반환타입을 지정하지 않아도 식을 분석해서 반환타입을 지정할 수 있다.
val name="ttomy"
//
val name:String
//
val name:String="ttomy"
타입 선언이나 변수의 초기화 둘 중 하나는 반드시 해야 한다. 아니면 타입추론을 할 수가 없다.
val의 참조 그자체는 불변이지만 val이 참조하는 객체의 내부는 변경될 수 있다.
fun main(args:Array<String>){
val name="ttomy"
println("Hello, ${name} ")
}
프로퍼티란?
필드와 접근자를 한데 묶어 프로퍼티라 함
코틀린에서는 프로퍼티로써 선언이 되면 게터,세터가 없어도 필드명으로 접근이 가능하다.
class person{
private final String name;
public void person(String name){
this.name=name;
}
//getter
}
data class Person(val name:String)
-> 프로퍼티의 선언은 val or var을 사용.
class Person(
val name:String,
var isMarried: Boolean
)
val person=Person("hum",false)
println(person.name)
프로퍼티의 접근자를 직접 작성할 수도 있다.
enum class Color(
val r:Int,val g:Int,val b:Int
){
RED(255,0,0), YELLOW(255,255,0),BLUE(0,0,255);
//상수목록과 메소드 정의 사이에 세미콜론 사용 필수
func rgb()=(r*256+g)*256+b
}
for(i in 1..100 ){
println(i)
}
..는 범위의 끝 값을 포함함 ->위에서는 100도 프린트
for(i in 1..100 step 2 ){
println(i)
}
//1 3 5 7 9...
foo.?bar() 과 같이 호출하면 호출값이 null이면 호출이 무시되고 결과값이 null이 된다. null이 아니라면 일반 메소드 호출처럼 bar()이 리턴이 결과값이 된다.
플랫폼 타입은 코틀린이 널 관련 정보를 알 수 없는 타입을 말한다.