강의에서는 안드로이드 스튜디오로 되어 있는데
나는 인텔리제이를 사용하여 작업 환경을 세팅하였다.
fun main() {
val name = "Kotlin"
println("Hello, " + name + "!")
for (i in 1..5) {
println("i = $i")
}
}
fun hello() {
println("hello")
}
fun add(a : Int , b : Int) : Int{
return a+b
}
함수를 만들 때는 fun을 사용하여 생성한다.
파라미터가 없다면 변수 타입을 설정하지 않아도 되지만
있다면 함수 add() 와 같이 변수 설정을 해주어야 한다.
자바와 다른 점은 int가 아닌 Int로 타입 첫 글자가 대문자이다.
val과 var
val : value라는 상수의 변하지 않는 값
var : 변수(variable)의 약자이며 변하지 않는 값
fun hi(){
val a : Int = 3
var b : Int = 10
// a = 100 -> 뷸가
b = 20
var c = 200
val d = 300
var name = "young"
var myname : String = "zero"
//타입은 생략 가능
val dan :String="hello"
val dan1 = "ttt"
}
자바스크립트의 const 와 var 차이와 비슷하다.
여기서는 val과 var
변수 선언할 때, 타입은 생략이 가능하며,
val은 한번 생성하면 바꿀 수 없다.
String Template
//String Template
fun main() {
val name = "Young"
println("My name is $name")
println("My name is ${name}")
}
My name is Young
My name is Young
둘 다 같은 결과가 나온다.
차이는 '$name' 은 문자열 템플릿의 일부분으로 사용한다.
$ 뒤를 바로 변수로 인식하는데,
` ${name} `는 좀 더 명확한 변수 참조 방식이다.
중괄호를 사용한 방식을 사용하는 편이 더 좋다.
val name = "Alice"
println("My name is $name and I'm awesome") // "My name is Alice and I'm awesome"
println("This is dollar: $100") // "This is dollar: 100", 여기서 $100는 변수가 아니라 $와 100으로 인식됨
println("This is dollar: ${'$'}100") // "This is dollar: $100", 여기서 ${'$'}는 문자 $로 인식됨
println("My name is ${name.toUpperCase()}") // "My name is ALICE"
fun main() {
val name = "Young"
val lastname = "Kim"
println("My name is ${name + lastname}")
println("Is it true? ${1==0}")
//println("This is 2$a")
println("This is 2\$a")
}

이런식으로 변수 두개를 이어 붙일 수도 있다.
'$' 가 보이게 하고 싶다면 역슬레시 ' \ '를 사용하면 된다.
조건문
fun main() {
val result = maxBy(10, 20)
println(result) // 출력: 20
val result2 = maxBy2(50, 20)
println(result2) // 출력: 50
}
fun maxBy(a : Int, b : Int) : Int {
if (a > b) {
return a
}else
return b
}
fun maxBy2(a: Int, b: Int): Int = if (a > b) a else b
fun checkNum(score: Int) {
when (score) {
0 -> println("this score is 0")
1 -> println("this score is 1")
2 -> println("this score is 2")
else -> println("this score is not 0")
}
var b: Int = when(score){
1 -> 1
2 -> 2
else ->3
}
when(score){
in 90..99 -> println("You are genius")
in 50..80 -> println("Not bad")
else -> println("You don't have enough")
}
}
자바의 스위치 함수랑 비슷하게 사용할 수 있다.
가독성이 더 좋은 거 같다.
when 은 코틀린에서 자주 사용되는 조건문인데,
각 조건에 따라 -> 해당 내용을 프린트한다.
else 는 그 외의 조건에 해당시, 출력된다.
var b: Int = when(score) {
1 -> 1
2 -> 2
else -> 3
}
이 코드는 변수를 저장하기 위한 조건을 설정한 것이다.
score 가 1이면 b 에 1 을 넣는다.
score 가 2이면 b 에 2 을 넣는다.
when(score) {
in 90..99 -> println("You are genius")
in 50..80 -> println("Not bad")
else -> println("You don't have enough")
}
이 코드는 범위를 조건에 넣은 것이다.
score 값이 90 부터 99 일때, 해당 내용을 프린트.
이하, 이상으로 숫자 범위는 각각 포함되어진다.
Array and List
fun array() {
val array = arrayOf(1, 2, 3)
val list = listOf(1, 2, 3)
val array2 = arrayOf(1, 2, "hello")
val list2 = listOf(1, "hello kotlin", 3)
array[0] = 3
//list[0] = 2
var result = list.get(0)
// 또는 var result = list[0]
}
배열과 리스트를 각각 선언하는 코드이다.
리스트는 불변(immutable) 리스트로, 값들을 변경할 수 없다.
배열은 가변(mutable) 자료구조이므로 요소를 변경할 수 있다.
`arrayOf`와 `listOf`는 다양한 타입의 값을 가질 수 있다.
여기서 array2와 list2는 Int와 String 타입의 값을 혼합해서 가지고 있다.
fun arrayOperations() {
var arrayList = arrayListOf(1, 2, 3)
arrayList.removeAt(arrayList.size - 1) // [1, 2]
arrayList.add(0, 4) // [4, 1, 2]
}
해당 코드는 가변 리스트를 생성하여,
마지막 인덱스의 요소를 제거하고,
추가하는 내용이다. -> 0번째 인덱스에 요소 4를 추가한다.
For and While (반복문)
while
fun stwhile() {
val students = arrayListOf("Anna", "Babillon","Selly", "Stella")
for (name : String in students){
println(name)
}
}

var sum : Int = 0
for (i in 1..10) {
sum += i
}
println(sum) //55
i in 1..10 //1<= i <= 10
i in 1 until 10 //1<= i < 10
i in 100 downTo 10 // 100>= i >= 10
범위 함수에서 정수가 포함되는지 유의하기!
fun iswhile(){
var index = 0
while (index < 10){
println("current index is $index")
index++
}
}

for
fun isfor() {
for (index in 1..10 ){
println("current index is $index")
}
print("\n")
for (index1 in 1..10 step 2){
println("current index is $index1")
}
}

다음과 같이 for문을 사용할 수 있다.
step 이라는 것을 사용하면 그 수만큼 건너 뛰어진다.
NonNull 과 Nullable
코틀린(Kotlin)에서는 Null Pointer Exception(NPE)을 방지하기 위해 Null-safety 기능을 제공한다.
이를 통해 변수의 null 가능성을 명시적으로 선언할 수 있다.
fun nullcheck() {
// NPE : Null Pointer Exception
var name: String = "young"
var nullName: String? = null
// Non-null 변수는 직접 호출 가능
var nameInUpperCase: String = name.toUpperCase()
var nameInLowerCase: String = name.toLowerCase()
// Nullable 변수는 안전한 호출 연산자 ?. 사용
var nullNameUpperCase: String? = nullName?.toUpperCase()
// nullName이 null인 경우 "Default"로 설정
var nullNameUpperCaseWithDefault: String = nullName?.toUpperCase() ?: "Default"
println("nameInUpperCase: $nameInUpperCase")
println("nameInLowerCase: $nameInLowerCase")
println("nullNameUpperCase: $nullNameUpperCase")
println("nullNameUpperCaseWithDefault: $nullNameUpperCaseWithDefault")
}

NonNull 변수
NonNull 변수는 null 값을 가질 수 없는 변수이다.
코틀린에서 기본적으로 모든 변수는 NonNull로 선언된다.
이러한 변수는 값을 반드시 가져야 하며, null을 할당하려고 하면 컴파일 오류가 발생한다.
var name: String = "John" // NonNull 변수
name = null // 컴파일 오류 발생
Nullable 변수
Nullable 변수는 null 값을 가질 수 있는 변수.
코틀린에서 Nullable 변수는 타입 뒤에 ?를 붙여 선언한다.
이러한 변수는 null 값을 가질 수 있으며, null일 가능성을 고려하여 코드를 작성해야 한다.
var nullableName: String? = "Jane" // Nullable 변수
nullableName = null // 허용됨
'Front-end Develop' 카테고리의 다른 글
| HTML 구조 (2) | 2024.07.23 |
|---|