변수 & 상수
var - 변수(insert, delete, update)
var a:Int = 1 [변수명:변수타입 형태로 작성]
var a:Int? [?를 사용함으로써 null값 허용]
a = 12 사용 가능
val - 상수(변하지 않는 값, select)
val a:Int = 11
a = 22 사용 불가
주석
한줄 - ctrl + /
범위 - ctrl + shift + /
출력
· print("input = ")
// val input = readLine()
· println("You input : " + input)
· println("You input : $input")
$ + 변수 : 변수 값을 출력
· println("${input}을 출력하세요")
input값과 문자를 연결해서 출력하려면 input을 {}로 묶어주어야함
입력
val read = Scanner(System.`in`) * `는 ~밑에 있는 문자
val number = read.nextInt()
var a = 1 val str1 = "a = $a" val str2 = "a = ${a + 1}" println("str1: \"$str1\", str2: \"$str2\"") > str1: "a = 1", str2: "a = 2" val num1 = 5 // Int로 추론 val num2 = 3 val num3:Int = num1 + num2 println("num1 + num2 = $num3") > num1 + num2 = 8 // 문자열 비교 == equals var str3:String = "hello" var str4 = "world" var str5 = "hell" str5 += "o" println( "${ str3 == str5 }" ) > true // 값을 비교 println( "${ str3 === str5 }" ) > false // 다른 객체이므로 false println( "${ str3 === str4 }" ) > false
? !!
? - null 값을 포함할 수 있다
!! - null 값이 아님을 강조
val name:String = "홍길동"
val name2:String = name // 에러 - String?과 String은 다름
val name3:String? = name // 정상
val name4:String = name!! // 정상 - !!를 쓰면서 String?을 String타입으로 변환
toString() toInt()
var a:Int = 12
var s = a.toString()
println(s) > 12 // 문자로 출력
var num:Int = s.toInt() // Java - parseInt()
println("${num + 1}") > 13
배열
arrayOf
var array = arrayOf(10, "안녕하세요", true) // 다양한 자료형 사용 가능
println(array) > 배열 주소값 출력
println(array.contentToString()) > [10, 안녕하세요, true]
println(arrays.toString(array)) > [10, 안녕하세요, true]
println(array[2]) > true
println(array.get(2)) > true
println(2 in array) > true
// 제네릭
var arrayInt = arrayOf<Int>(10,20,30)
var arrayString = arrayOf<String>("십", "이십", "삼십")
var array2 = Array(3, {33}) > (크기){들어갈 값}
print(array2.contentToSTring()) > 33, 33, 33 출력
var array3 = arrayOf(1,2,3,4,5)
println("${array3.size}") > 5
println("${array3.sum()}") > 15
array3[0] = 10
println(array.contentToString()) > [10, 2, 3, 4, 5]
for(n in array3){ println(n) } > 10 2 3 4 5 (값들이 세로로 나열되어 출력)
for(i in array3.indices){ print("$i : ${array3[i]}")
> 0 : 10, 1 : 2, 2: 3, 3 : 4, 4 : 5
// filter
val array4 = arrayOf(1, -2, 3, -4, 5, 0)
array4.filter{e -> e>0}.forEach{e -> print("$e")}
println() > 1 3 5
val result = array.filter{e -> e>0}
println(result) > [1, 3, 5]
val fruits = arrayOf("banana", "pear", "apple", "kiwi", "avocado")
fruits
.sortedBy{it} // 오름차순
.map{it.toUppercase()} // 대문자
.forEach{print(it)} > APPLE AVOCADO BANANA KIWI PEAR
println(fruits.contains("apple")) > true
// 조건문
when{ "apple" in fruits -> println("Apple이 있습니다")} > Apple이 있습니다
dto, vo
data class Product(val name:String, val price: Double) // 한줄 끝
getter setter는 내부적으로 생성
class앞에 public으로 생략가능
name 필드는 private으로 생성
fun main(args:Array<String>){
var cls = Person("길동", "홍")
println(cls.getFullName()) > 길동 홍
cls.firstName = "수길"
println(cls.getFullName()) > 수길 홍
var bird = Bird()
bird.color = "red"
println("${bird.color}") > red
bird.sing("long")
}
class Person{
var firstName:String
var lastName:String
constructor(firstName:String, lastName:String){
this.firstName = firstName
this.lastName = lastName
}
fun getFullName(): String{
return "$firstName $lastName"
}
}
class Bird{
var wing:Int = 2
var length:String = "short"
var color:String = "blue"
fun sing(vol:String) = println("sing vol: $vol") > long
}
fun main(args:Array<String>){
val base1 = Base("abc", "123", 24)
println(base1.toString()) > Base(id='abc', pwd='123', color=24)
val base2 = Base("bcd", "234")
println(base2.toString()) > constructor(bcd:String, 234:String, 22:Int)
}
class Base(val id:String, val pwd:string, val age:Int){ // 기본 생성자
constructor(id:String, pwd:String) : this(id, pwd, 22){ // 보조 생성자
println("$id:String, $pwd:String, $age:Int") > id:'abc', pwd:'123, age:24
}
override fun toString() :String{
return "Base(id='$id', pwd='$pwd', age=$age)"
}
}
if, for, switch(when), while
//if
var num:Int = 50
val str = if(num > 30){
"abc"
}else{
"bcd"
}
// == val str = if(num > 30){ "abc" }else{ "bcd" }
//삼항연산자(Java)
int num = 50
String str = (num > 30) ? "abc":"bcd"
// kotlin에는 삼항 연사자가 없음
var num:Int = 30
val str = if(num > 30) "abc" else "bcd"
val max = if(a > b) a else b // a 보다 b가 크면 a, 아니면 b
// switch(Java)
String s = ""
int num = 3
switch(num){
case 0:
s = "abc"
break;
case 1:
s = "bcd"
break;
default:
s = "xyz"
}
// kotlin(when)
val a1:Int = 3
val s = when(a1){
0 -> "abc"
1 -> "bcd"
else -> "xyz"
}
val score = 85.0
var grade:Char = 'F'
when(score){
in 90.0..100.0 -> grade = 'A'
in 80.0..89.9 -> grade = 'B'
in 70.0..79.9 -> grade = 'C'
!in 70.0..100.0 -> grade = 'F'
}
// for
val array = arratIf(1, 2, 3)
for(number in array){
println(number)
}
for(i in 0 until 100){ // 0 until 100으로 쓰면 0 <= until < 100으로 자동 표기
println(i)
}
for(i in 0 .. 100){ // ..는 0 <= .. <= 100으로 양쪽 숫자 모두 포함
println(i)
}
// while, do while
var w:Int = 0
while(w < 10){
println("w: $w")
w++
}
w = 0
do{
w++
println("w:$w")
}while(w < 10)
// continue, break
for (i in 1..5){
if(i == 3) break
println(i) > 1, 2까지 출력
}
for(i in 1..5){
if(i == 4) continue
println(i) > 1,2,3,5 출력
}
'Kotlin' 카테고리의 다른 글
[Android] GoogleMaps (0) | 2022.04.03 |
---|---|
[Kotlin] 가위바위보 (0) | 2022.02.22 |
[kotlin] 2 (0) | 2022.02.09 |
댓글