package base
fun main(args: Array<String>) {
var str = "test ... !!"
toPrintTest(str)
println("MAX Value " + max(10, 5))
println("MIN Value " + min(10, 5))
}
//[2]
fun toPrintTest(str: String) {
println("funtion test sucess >> " + str)
}
//[3]
fun max(num1: Int, num2: Int): Int {
return if (num1 < num2) num2 else num1
}
//[4]
fun min(num1: Int, num2: Int) = if (num1 < num2) num1 else num2
함수는
fun
키워드로 만들 수 있다.
fun
다음에 함수 이름 위치를 시킨다.
()
안에는 인자를 넣어 준다. ,(콜론) 으로 으로 구분을 해준다.
[3] 본문의 경우 블록이 본문이 함수 (중괄호로 본문을 둘러싼다)
[4] 식이 본문인 함수로 두가지 된다 (줄괄호 대신에 등호와 식)
package base
fun main(args: Array<String>) {
var str = "test" //[1]
val numOfTemp: Int = 0 //[2]
val answer3: Int //[3]
answer3 = 40
}
[1] 타입 생략 가능하다. 컴파일러가 초기화 식을 이용 유추 가능하다.
[2] 타입을 지정이 가능다.
[3] 초기화 식이 없으면 반드시 타입을 명시한다.
val
초기에 값을 할당 받으면 변하지 않는 값
var
초기에 값을 받건 말건 변하는 값
package base
fun main(args: Array<String>) {
var name : String = "Hello"
println("test sucess")
println("test sucess $name")
println("test sucess ${name}")
}
$
바로 뒤에 변수를 사용하는 방법
${}
중괄호 안에 변수를 넣는 방법
코틀린에서 기본으로 클레스 작성법
class Person (val str : String)
fun main(args: Array<String>) {
var person = Person("Test...")
println(person.str)
}
프로퍼티를 기본 언어 기능으로 제공하며 자바의 필드와 접근자 메서드를 완전히 대신함
class Person(
val name: String, // 읽기 전용(val) 프로퍼티
var isMarried: Boolean // 변경 가능(var) 프로퍼티
)
Person p = Person("Bob", false)
println(p.name)
println(p.isMarried)
p.isMarried = true
기본적으로 코틀린은 프로퍼티에 대해 다음을 생성
- 읽기 전용 프로퍼티: 비공개 필드와 필드를 읽는 공개 게터 생성
- 쓸 수 있는 프로퍼티: 비공개 필드와 공개 게터, 공개 세터 생성
프로퍼티 이름이 is로 시작할 경우
프로퍼티 이름과 동일한 게터 생성: 예, isMarried﴾﴿﴿
is 대신에 set을 사용하는 세터 생성: 예, setMarried﴾﴿
지원﴾backing﴿ 필드: 프로퍼티의 값을 저장하기 위한 비공개 필드
class Rectanble(val height: Int, val width: Int) {
val isSquare: Boolean
get() { // 프로퍼티 게터 선언, 블록 사용
return height == width;
}
val size: Int
get() = height * width // 식 사용
}
파일의 맨 앞에 package 문 사용해서 패키지 지정
파일의 모든 선언﴾클래스, 함수, 프로퍼티 등﴿이 해당 패키지에 속함
디렉토리 구조와 패키지 구조가 일치할 필요 없음 ﴾하지만, 패키지별로 디렉토리 구성이 나 음﴿
같은 패키지에 속해 있다면 다른 파일에서 임포트 없이 정의한 선언 사용 가능 다른 패키지에서 사용하려면 import 키워드로 사용할 선언을 임포트