var/val(๋ถ๋ณ) ์ ๊ตฌ๋ณํ ๊น
๋ณํ๋๊ฒ ๋ง์ผ๋ฉด ๋ฌธ์ ๋ฅผ ์์ผํฌ ํ๋ฅ ์ด ๋๋ค.
์ฝ๋๋ถ์์ ์ฉ์ด
ํ๋ก๊ทธ๋จ์ ์์ ์ฑ๊ณผ ์ฝ๋ ๋ถ์์ ์ฉ์ดํจ์ ์ฆ๊ฐ์ํค๊ธฐ ์ํด ์ฌ์ฉ
Kotlin์ ๊ธฐ๋ณธ ์๋ฃํ๋ ๊ฐ์ฒด ์ทจ๊ธ์ ํ๋ค. ์?
์ด๋ ์ด๋ฌํ ์๋ฃํ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์์ฑ์ ์ ๊ทผํ ์ ์๋๋ก ํ๊ธฐ ์ํจ์ด๋ค.
์ด๋ก์จ ๊ธฐ๋ณธ ์๋ฃํ๊ณผ ๊ฐ์ฒด์ ์ฐจ์ด๋ก ์ธํ ํผ๋์ ์ค์ด๊ณ ํต์ผ์ฑ์ ํ๋ณดํ ์ ์๋ค.
Kotlin์ Java์ JVM์ ๊ฐ๊น์ง๋ง, Kotlin์ Java๋ณด๋ค ๋ ๋์ ์์ค์ ์ถ์ํ ๊ณ์ธต์ ๊ฐ์ง๊ณ ์๋ค.
์ฝํ๋ฆฐ์ jvm์ฌ์ด์ ํํฐ(์ถ์ํ๊ณ์ธต)๊ฐ ์๋ค.java์์ ๊ฐ์ฒด๋ฉด jvm๋ ๊ฐ์ฒด/ ์ฝํ๋ฆฐ์ ์ค๊ฐ์ ์ธต์์ ๋ณํ ๊ฐ๋ฅ
๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด๋ก ํํํ๋ ์ด์
Kotlin์ "๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด" ์ฒ ํ์ ์ ์ฉํ์ฌ ๊ฐ๊ฒฐํ๊ณ ์ผ๊ด๋ ํ๋ก๊ทธ๋๋ฐ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ก ์ธํด ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ณธ ์๋ฃํ๊ณผ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถํ๋ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์๋ค. ์ฌ๋์ด ๋ณผ๋ ๋ชจ๋ ๊ฑธ ๋ค ๊ฐ์ฒด๋ผ๊ณ ํ๋๊ฒ ํธํ๊ธฐ๋๋ฌธ
Tools-Kotlin-Kotlin REPL๋ก ๋ค์ด๊ฐ๋ฉด ์ธํฐํ๋ฆฌํฐ ํ์์ผ๋ก
์ฌ์ฉํ ์ ์๋ค.
์ฃผ์
/*
/*
์ฃผ์ ์์ ์ฃผ์ ๊ฐ๋ฅํ๋ค.
*/
*/
๋ณ์
- readline(): ํ์ค์ ๋ ฅ์์ ํ์ค์ ์ฝ์ด ๋ฌธ์์ด๋ก ๋ฐํํ๋ ํจ์
- !!:๋์๋ ๋จ์ธ (์์ ๊ฒฐ๊ณผ๊ฐ null์ด ์๋์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋จ์ธํ์ฌ ์ค)
- toInt(): ์์๋ฌธ์์ด์ Int๊ฐ์ผ๋ก ๋ณํ
fun main() {
val a = readLine()!!.toInt()
val b = readLine()!!.toInt()
print(a+b)
}
์คํ๊ฒฐ๊ณผ
10
23
33
toInt()๋ก ์ ๋ ฅ๋ ๋ณ์ a๋ฅผ Intํ์ผ๋ก ๋ณํํด์ค๋ค.
fun main() {
val a = readLine()!!
val b = readLine()!!
print(a+b)
}
์คํ๊ฒฐ๊ณผ
10
23
1023
๊ธฐ๋ณธ์ ์ผ๋ก readLine()์ผ๋ก ๋ฐ์ ๊ฐ์ ๋ฌธ์์ด์ด๋ฏ๋ก ์คํ๊ฒฐ๊ณผ๊ฐ 1023์ด ๋์จ๋ค.
ํ์ ์ถ๋ก
val n = 15
val text = "Hello"
์ ๋ฌธ์ฅ์ ์๋๋ฌธ์ฅ์ ํ์
๋ช
์๋ฅผ ์๋ตํ ํํ์ด๋ค.
val n:Int = 15
val text:String = "Hello"
fun main() {
val a:Int = readLine()!!
val b:String = readLine()!!
print(a+b)
}
2๋ฒ์ค์์ ์๋ฌ์ด๋ค. readLine()์ผ๋ก ๋ฐ์ ๊ฐ์ ๋ฌธ์์ด์ธ๋ฐ Int๋ก ์ถ๋ก ํ๊ณ ์๊ธฐ ๋๋ฌธ
fun main() {
val a
val b
a= readLine()!!.toInt()
b= readLine()!!.toInt()
print(a+b)
}
์ค๋ฅ
์ด๊ธฐ๊ฐ์ ์๋ตํ ์์๋ ๋ฐ๋์ ํ์
์ ๋ช
์ํด์ผ ํ๋ค.
fun main() {
val a:Int
val b:Int
a= readLine()!!.toInt()
b= readLine()!!.toInt()
print(a+b)
}
fun main() {
val n: Int
print(n+1)
}
n์ ์ด๊ธฐํ ์ํค์ง ์์์ผ๋ฏ๋ก ์ปดํ์ผ์ค๋ฅ
์๋ณ์
์๋ณ์๊ท์น
•์๋ณ์๋ ์ค์ง๋ฌธ์,์ซ์,๋ฐ์ค๋ฌธ์(_)๋ง ํฌํจํ๋ค.
•์ซ์๋ก ์๋ณ์๋ฅผ ์์ํ ์๋ ์๋ค.
•๋ฐ์ค๋ก๋ง ์ด๋ค์ง ์๋ณ์๋ ์ด๋ฏธ ์์ฝ๋ ์๋ณ์์ด๋ฏ๋ก ์ฌ์ฉํ์ง ์๋๋ค.
•ํ๋ํค์๋(val,fun๋ฑ)์ ์๋ณ์๋ก ์ฌ์ฉํ ์์๋ค
•์ญ๋ฐ์ดํ๋ก ๊ฐ์ธ๋ฉด ๊ฐ๋ฅํ์ง๋ง ๊ถ์ฅ ํ์ง ์์
๊ฐ๋ณ๋ณ์
val๋ก ์ ์ธํ ๋ณ์๋ ํ๋ฒ ์ด๊ธฐํํ๋ฉด ๊ฐ์ ๋ฐ๊ฟ ์ ์๋ ๋ถ๋ณ๋ณ์ (immutablevariable)
fun main() {
val n = 1
n = n + 1
println(n+1)
}
์ค๋ฅ
•์ด๊ธฐํ์ดํ๋ก๊ฐ์๋ฐ๊ฟ์์๋๋ณ์๋var๋ก์ ์ธ
fun main() {
var n = 1
n = n + 1
println(n+1)
}
•์ต๋ํ val์ ๋ง์ด ์ฌ์ฉํ๋ ์ฝ๋๊ฐ ์ข์์ฝ๋์ด๋ค.
์ฐ์ฐ์์ฐ์ ์์
์ฐ์ ์์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก
์ ์ ๋ฆฌํฐ๋ด
10์ง์
val n= 12345
val m = 34_721_19
Long๋ฆฌํฐ๋ด(๋งจ ๋ค์ L)
val hundred = 100L
2์ง์(์์ 0b๋ฅผ)
val bin = 0b1010
16์ง์(์์ 0x๋ฅผ)
val bin = 0x1010
์ต์๊ฐ/์ต๋๊ฐ
Short.MIN_VALUE
INT.MAX_VALUE
๋ถ๋์์์ ์ (Double (64 bit) / Float (32bit) )
10์ง ์์ ๋ฆฌํฐ๋ด(Double)
val pi = 3.14
val a=.25
val b= 1.
e1,E1: 10์ 1์น
Float(๋ค์ f๋ F ๋ถ์)
val pi: Float = 3.14f
์์
๋ถ๋์์์ ์์ MIN_VALUE๋ ์์์ ์ผ๋ก ํํํ ์ ์๋ 0์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์, MAX_VALUE๋ ๊ฐ์ฅ ๋จผ ์์
Double.POSITIVE_INFINITY: 100์ 0์ผ๋ก ๋๋ ๊ฒ
Float.NEGATIVE_INFINITY: -100์ 0์ผ๋ก ๋๋ ๊ฒ
Double.NaN: 0์ 0์ผ๋ก ๋๋ ๊ฒ (Not a Number)
๋๋จธ์ง ์ฐ์ฐ์์
์์ด ์์๋ฉด ๋๋จธ์ง๋ ์์
์ฐ์ ์ฐ์ฐ์ ํ ๋ณํ
์๋ก๋ค๋ฅธ ํ๋ผ๋ฆฌ ์ฐ์ฐ ํ ์ ๋ ํํ ๊ฐ์ด ๋์ ํ์ผ๋ก ๋ณํ๋๋ค.
int+byte -> int / float+double ->double
๋นํธ ์ฐ์ฐ
์ฐ์ฐ | ๋ป | ์์ | ๊ฒฐ๊ณผ |
shl | ์ผ์ชฝ ์ํํธ | 13(1101) shl 2 | 52: 00110100 |
shr | ์ค๋ฅธ์ชฝ ์ํํธ | 13(1101) shr 2 | 3: 000011 |
ushr | ๋ถํธ ์๋ ์ค๋ฅธ์ชฝ ์ํํธ | 13 ushr 2 | 3: 000011 |
and | ๋นํธ ๊ณฑ | 13(1101) and 19(10011) | 1: 000001 |
or | ๋นํธ ํฉ | 13 or 19 | 31: 000011111 |
xor | ๋นํธ ๋ฐฐํํฉ | 13 xor 19 | 30: 000011110 |
inv | ๋นํธ ๋ฐ์ (inversion) | 13.inv() | -14: 1....1110010 |
๋ฌธ์ ํ์ Char
val z='z'
val newline ='\n'
val pi='\u03C0'
์ ๋ณํ
toByte().toChar().. ๋ฉ์๋๋ฅผ ํตํ์ฌ ํ๋ณํ
7.toByte()
945.toChar() //a
(-2.5).toInt() //-2
๋ถํ์ ๊ณผ ๋ ผ๋ฆฌ์ฐ์ฐ
val hasErrors = false
val testPassed:Boolean = true
์ฐ์ฐ
!: ๋ ผ๋ฆฌ ๋ถ์
or,and,xor: ์ฆ์ ๊ณ์ฐ ๋ ผ๋ฆฌ์ -> ๋ค ๊ณ์ฐ
||,&&: ์ง์ฐ ๊ณ์ฐ ๋ ผ๋ฆฌ์ ->์์๊ฒ ์ถฉ์กฑํ๋ฉด ๋ค์๊ฑฐ ๋ณด์ง๋ ์์.
( x == 1 ) or ( y == 1 )
( x == 1 ) || ( y == 1 )
๋น๊ต์ ๋๋ฑ์ฑ
NaN๋ ์ด๋ค ์์๋ ๊ฐ์ง ์๊ณ , ์์ง ์๊ณ , ํฌ์ง ์๋ค
Double.Nan == Double.Nan //F
Double.Nan != Double.Nan //T
Double.Nan <= Double.Nan //F
Double.Nan < Double.POSITIVE_INFINITY //F
Double.NAN.isNaN() //T
2,5๋ฒ์ค๋ง True
๋ฌธ์์ด ๋ฆฌํฐ๋ด/ ๋ฌธ์์ด ํ ํ๋ฆฟ
๋ฌธ์์ด์ String ๊ฐ์ฒด๋ก ๋ฌธ์ ๋ฐฐ์ด์ด ์๋๋ค. ๋ฌธ์์ด์ ํ๋ฒ ์ ํด์ง๋ฉด ๋ฐ๋์ง ์๋๋ค.
val str:String = "Hello"
C์ ๋ง์ฐฌ๊ฐ์ง๋ก \(์ด์ค์ผ์ดํ ์ํ์ค)๋ฅผ ์ด์ฉํ์ฌ ํน์ ๋ฌธ์ ํํ
val text = "Hello \n This is \"multiline\" string "
println("\u03C0 3.14") -> ∏ = 3.14
๋ฌธ์์ด ํ ํ๋ฆฟ
๋ฌธ์์ด ๋ด๋ถ ${}์ ์ค๊ดํธ ์ฌ์ด์ ํํ์ ๋ฃ๊ธฐ. $๋ด๋ถ ์คํ ๋ด์ฉ์ด ๋ฌธ์์ด ๋ด๋ถ์ ์นํ๋์ด ์ ๋ ฅ๋จ
println("Hello,$name! Today is ${Date()}")
ํ ํ๋ฆฟ์ ๊ฐ๋จํ ๋ณ์ ๋ฃ์ ๋๋ ์ค๊ดํธ ์๋ต ๊ฐ๋ฅ
๋ก์ฐ ๋ฌธ์์ด
์ด์ค์ผ์ดํ ์ํ์ค ์์ด ๋ฌธ์์ด ์์ฒด๋ฅผ ๊ทธ๋๋ก ์ ๋ ฅ
๋ฐ์ดํ 3๊ฐ๋ก ๋ฌธ์์ด ๋๋ฌ์.
์์์ ๋ฌธ์์ด ํํ ๊ฐ๋ฅ
val message= """
Hello,$name!
Today is ${Date()}
""".trimIndent()
//trinIndent(): ๋ฌธ์์ด ์ค๊ฐ์ ์๋ ๋์ด์ฐ๊ธฐ๋ฅผ ์์ ๋ผ
๊ผญ ์ด์ค์ผ์ดํ ์ํ์ค๊ฐ ํ์ํ ๋๋ ${}๋ฅผ ์ด์ฉ
๊ธฐ๋ณธ ๋ฌธ์์ด ์ฐ์ฐ
String ๋ด์ ํ๋กํผํฐ(๋ณ์)
"Hello".length
"Hello".lastIndex
์คํ๊ฒฐ๊ณผ
5
4
๊ฐ๋ณ ๋ฌธ์ ์ ๊ทผ(๋ฌธ์์ด ๋ด์ฉ์ ๋ณ๊ฒฝ์ ๋ถ๊ฐ)
val s = "Hello!"
println(s[1]) //e
println(s[10]) //StringIndexOutOfBoundException
s[1] = 'i' //Error
๋ฌธ์์ด๋ก์ ํ๋ณํ
val sum = 10
val str = "The sum is:" + sum = "The sun is:" + sum.toString()
= "The sun is:$sum"
๋ฌธ์์ด ๋๋ฑ์ฑ ๋น๊ต ๋ฐ ์ฌ์ ์ ์์ ๋น๊ต
๋ฌธ์์ด์ ์๋ฏธ์ ๋๋ฑ์ฑ ๋น๊ต๋ "==", "!=" ์ฌ์ฉ
๋ด์ฉ๋น๊ต "==" , "!="
val s1 = "Hello"
val s2 = "He" +"llo"
println(s1 == s2) // True
๋ฌธ์์ด์ด ๋์ผ ๊ฐ์ฒด ๊ฐ๋ฆฌํค๋์ง๋ "===","!==" ์ด์ฉ
println(s1 === s2 ) // False์ธ๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ์ต์ ํ๋ฅผ ๋๋ฌด ์ํด์ True๊ฐ ๋์ฌ์๋ ์๋ค. ์๋ฆฌ๋ง ์ดํด
๋ฌธ์์ด์ ์ฌ์ ์ ์์ ๋น๊ต๋ "<",">" ์ฌ์ฉ
println("abc"<"bca") //true
println("123">"34") //false
๋ฌธ์์ด ํจ์
ํ๋ณํ ํจ์๋ค: toByte().toShort()....
๋ฐฐ์ด
๋ฐฐ์ด ์ ์ ๋ฐ ์ด๊ธฐํ
๋ฐฐ์ด ๊ฐ์ฒด์ ๊ธธ์ด๋ฅผ ๋๋ฆด ์๋ ์๋ค.
๋ฐฐ์ด ์ ์ํ๊ธฐ
val a = emptyArray<String>() //์์ด ๋น์ด์๋ค.
val b = arrayOf("hello","world") //length๋ 2, Type์ ํ์
์ถ๋ก ์ ์ํด String์ด ๋๋ค.
val c = arrayOf(1,4,9)
c=[1,4,9]๊ฐ ์๋๋ผ ๋ฐ์ฑ๋๋ค.
intArrayOf๋ก ํด์ผ c=[1,4,9] ๋ก ๋ค์ด๊ฐ๋ค.
๋๋ค ํจ์๋ฅผ ํตํ ๋ฐฐ์ด ์ด๊ธฐํ
fun main() {
val size = readLine()!!.toInt()
val squares = Array(size){(it + 1) * (it + 1)}
println("${squares[0]} ${squares[1]} ${squares[2]}")
}
3์
๋ ฅ์ ์คํ๊ฒฐ๊ณผ
1 4 9
it์ 0์ ๋์ ํ์ผ๋ฏ๋ก 1*1 =1
it์ 1์ ๋์ ํ์ผ๋ฏ๋ก 2*2=4
it์ 2๋ฅผ ๋์ ํ์ผ๋ฏ๋ก 3*3=9
๋ฐ์ฑ์ ํผํ๊ธฐ ์ํ ์ต์ ํ
fun main() {
val size = readLine()!!.toInt()
val squares = IntArray(size){(it + 1) * (it + 1)}
println("${squares[0]} ${squares[1]} ${squares[2]}")
}
3์
๋ ฅ์ ์คํ๊ฒฐ๊ณผ
1 4 9
๊ฒฐ๊ณผ๋ ๊ฐ์ผ๋ ์ต์ ํ ์ฐจ์ด.
๋ฐฐ์ด์ ์ฐ์ฐ
String๊ณผ ๋น์ทํ ์ฌ์ฉ๋ฒ
val squares = arrayOf(1,4,9,16)
squares.size //4
squares.lastIndex //3
squares[3] //16
๋ฐฐ์ด ์์์ ๋ณ๊ฒฝ(String์์๋ ๋ถ๊ฐ)
squares[2] = 100 //1,4,100,16
๋ฐฐ์ด์ ๋์ ๊ณผ ๋ณต์ฌ
๋ฐฐ์ด์ ๋์ ์ ์ฐธ์กฐ์ ๋ณต์ฌ๋ฅผ ํตํ ๋ฐฐ์ด ๊ฐ์ฒด์ ๊ณต์
val numbers = squares
numbers[0] = 1000
println(squares[0]) //1000
๊ณต์ ๋ฅผ ํผํ๊ธฐ ์ํด์๋ copyOf() ํจ์๋ฅผ ํตํ์ฌ ๋ณต์ฌ๋ณธ์ ์์ฑํด์ผ ํ๋ค.
val numbers = squares.copyOf()
numbers[0] = 1000
println(squares[0]) //squares์๋ ์ํฅ ์์
squares.copyOf(2) //์์์ 2๊ฐ ์์๋ก๋ง ๋ฐฐ์ด ์ฌ๋ณธ ์์ฑ
squares.copyOf(5) //๋ถ์กฑํ ๋ถ๋ถ์ 0์ด ์ฑ์์ง: 1,4,9,16,0
copyOf()๋ ๋ฐ์ฑ
copyOf()์์ฐ๋ฉด ์ํฅ ์ค๋ค.
๊ฐ์ ๊ฑธ ๊ฐ๋ฆฌํจ๋ค.
๋ฐฐ์ด์ ํ์
๋ฐฐ์ด์ ํ์ ์ด ํ๋ฒ ์ ํด์ง๋ฉด, ๋ค๋ฅธ ํ์ ์ ๋ฐฐ์ด์ ์ฐธ์กฐํ ์ ์๋ค.
var a = arrayOf(1,4,9,16)
a = arrayOf("one","Two") //Error
๋ฐฐ์ด์ ์์ฑํ๋ฉด ๊ทธ ๊ธธ์ด๋ฅผ ๋ฐ๊ฟ ์ ์์ง๋ง + ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ์์๋ฅผ ์ถ๊ฐํ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ ์๋ ์๋ค.
val a = intSrrayOf(1,2,3)
val b = a + 4
val c = a + intArrayOf(5,6) //a,b,c ๋ชจ๋ ๋ค๋ฅธ ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ
๋ฐฐ์ด์ ๋น๊ต
"=="์ฐ์ฐ์์ "!=" ์ฐ์ฐ์๋ ๋์ผ ๊ฐ์ฒด์ธ์ง ์ฌ๋ถ๋ง ํ๋จ
intArrayOf(1,2,3) == intArrayOf(1,2,3) //false
๋ด์ฉ ํ๋จํ๊ธฐ ์ํด์๋ contentEquals()ํจ์ ์ด์ฉ
intArrayOf(1,2,3).contentEquals(intArrayOf(1,2,3)) //true
๋ฐฐ์ด ๊ด๋ จ ํจ์
isEmpty : ๋ฐฐ์ด ๋น์๋์ง ๊ฒ์ฌ
isNotEmpty : ๋ฐฐ์ด์ ์์๊ฐ ์๋์ง ๊ฒ์ฌ
indexOf : ์ธ์์ ์ผ์นํ๋ ์ต์ด์ ๋ฐฐ์ด ์์ดํ ์ ์ธ๋ฑ์ค ๋ฐํ (์์ผ๋ฉด -1)
'๐ปโโ๏ธ์ ๊ณต๊ณต๋ถ > ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋กํผํฐ (0) | 2023.09.15 |
---|---|
ํด๋์ค (0) | 2023.09.09 |
ํจ์ (2) | 2023.09.02 |
์ฝํ๋ฆฐ ๋ฌธ๋ฒ (0) | 2023.08.31 |