1. 패키지 정의 가져오기
주의) 패키지는 소스코드의 맨위에 있어야함
다른 언어들과 패키지정의나 다른라이브러리를 참조하는 import가 같음
package com.dowellcomputer.myapplication0316
import kotlin.text.*
2. 기본 출력함수
package com.dowellcomputer.myapplication0316
fun main(){
println("안녕하세요")
}
코틀린의 메인함수는 fun main(){ } 형태를 지니고있으며
println함수는 출력을하고 줄바꿈을 해줌
3. 함수이용
package com.dowellcomputer.myapplication0316
fun main(args : Array<String>){
println(sum(5,4))
println(sub(5,4))
}
fun sum(a: Int , b: Int): Int {
return (a+b)
}
fun sub(a : Int , b: Int) = a-b
sum함수는 Int(정수)형을 반환하는 함수이며
메인함수에서 println(sum(5,4))부분에서 5와4를 넘겨줬으므로 반환값 5,4의 합 9가 출력이됩니다
sub함수처럼 간단하게 표현할수도있습니다 .
4. 변수선언
fun main(args : Array<String>){
var age : Int = 5
var a = 6
val name: String = "jinsol"
val id = "201921263"
}
재정의가 가능한 변수를 var
재정의가 불가능한 변수를 val
변수명뒤에 : 타입 이 오게됩니다
( var or val ) 변수명 : 타입명
하지만 파이썬과 마찬가지로 타입명을 생략하고 바로 값을넣어줄수도있습니다
var a = 6 부분은 a는 정수형타입이 될것이며
vall id 는 String(문자열) 타입이 될것입니다
5. 클래스와 객체
class HelloCLass{
var age:Int = 0
init{
println("hi2")
}
constructor() //값을 넘기지는 못하지만 초기화 가능
constructor(age:Int) { // constructor(age:Int ) // 보조생성자 값을 넘기면서 초기화가능 set
this.age = age
}
}
클래스 선언은 class 클래스명 { } 을통해 선언합니다
클래스안에 init는 클래스가 호출됐을떄 최초로 초기화되는 부분이며
constructor() 과 constructor(age:Int)가 두개가 존재하는 이유는 매우 중요합니다.
만약 메인함수에서
1번 ) var cls = HelloCLass()
2번 ) var cls2 = HelloCLass(1)
이런식으로 호출했을때
1번은 init이 된후에 age 에 0이 담기게 됩니다. 여기서 중요한점은
constructor()이 없을경우 빌드에러가 납니다
2번은 1번과마찬가지로 constructor(age:Int) { this.age = age ) 코드가 없을경우 빌드에러가 납니다.
메인함수에서 사용법은 아래와 같은방식으로 사용됩니다.
fun main(){
var cls = HelloCLass(1)
println(cls.age)
}
class Rectangle(var height: Double, var length: Double) {
var perimeter = (height + length) * 2
}
val rectangle = Rectangle(5.0, 2.0)
println("The perimeter is ${rectangle.perimeter}")
이런식으로 간단하게 표현할수도있습니다.
open class Shape
class Rectangle(var height: Double, var length: Double): Shape {
var perimeter = (height + length) * 2
}
클래스 간의 상속은 콜론 ( :)으로 선언됩니다 . . 클래스를 상속 가능하게 만들려면 open.을 키워드로 붙여줍니다.
6.문자열 문제
var a = 1
val s1 = "a is $a"
println(s1)
a = 2
println(s1)
val s23 = "${s1.replace("is", "was")}, but now is $a"
println(s23)
해당코드의 실행결과는?
실행결과 : a is 1
a is 1
a was 1, but now is 2
7. 조건문과 반복문
fun maxof(a:Int , b:Int){
if (a > b) {
return a
} else {
return b
}
}
fun maxOf(a: Int, b: Int) = if (a > b) a else b
kotlin에서 if 조건문은 자바와 같으므로 생략하겠습니다.
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
println(item)
}
listOf는 재정의가 불가능한 list입니다.
mutableListOf()은 재정의가 가능한 list입니다.
해당 for루프에서 출력결과는 items리스트의 각각 요소들이 출력될것입니다.
for(i in 1..10 step 2)
Log.d("test","반복문 i = ${i}입니다")
for(i in 10 downTo 1 step 2 )
Log.d("test","-반복문 i = ${i}입니다")
val items = listOf("apple", "banana", "kiwifruit")
var index = 0
while (index < items.size) {
println("item at $index is ${items[index]}")
index++
}
var i : Int
for(i in 1 .. 10) println("counting : {$i}")
※ kotlin에서 null값
var a : Int = null은 틀린 문법입니다
변수에 null값을 넣으려면 타입명뒤에 ?를 붙이고 null값을 넣어줘야됩니다.
var nu : Int? = 10
var nul : Int? = null
println("nu : $nu nul : $nul")
'Kotlin' 카테고리의 다른 글
[Kotlin]안드로이드 menu.Recources 를 통한 액션바 메뉴만들기(옵션메뉴) feat.버튼 돌리기 / 버튼 확대 (0) | 2021.04.21 |
---|---|
안드로이드 코틀린 문법 (자료형,변수,리스트,흐름제어,반복문) (0) | 2021.04.14 |