[UMC] 1μ£Όμ°¨πŸ’» - λΆ€μŠ€νŠΈμ½”μŠ€ μ½”ν‹€λ¦° μˆ˜κ°•(2)

MadelineπŸ‘©πŸ»β€πŸ’»Β·2022λ…„ 9μ›” 21일
0

kotlin study

λͺ©λ‘ 보기
2/19

λΆ€μŠ€νŠΈμ½”μŠ€ μ½”ν‹€λ¦° ν”„λ‘œκ·Έλž˜λ° κΈ°λ³Έ1

2μž₯. λ³€μˆ˜μ™€ μžλ£Œν˜•, μ—°μ‚°μž

1. λ³€μˆ˜

-λ³€μˆ˜ μ„ μ–Έ
1) val
: λ§Œμ•½ μ—¬λŸ¬λΆ„μ΄ μ‚¬μš©ν•  λ³€μˆ˜μ˜ 값이 λ³€κ²½λ˜μ§€ μ•Šμ•„μ•Ό ν•  λ•Œ μ‚¬μš©

val username: String = "Kildong"
λ³€μˆ˜μ΄λ¦„ μžλ£Œν˜• κ°’

ex)

2) var
: λ³€μˆ˜μ˜ 값이 λ³€κ²½λ˜μ–΄μ•Ό ν•  λ•Œ μ‚¬μš©

ex)


3κ³Ό 같이 μ»΄νŒŒμΌλŸ¬λ„ μ•Œ 수 μžˆλŠ” μžλ£Œν˜•(:[ String])은 μƒλž΅ν•΄λ„ λœλ‹€.
μžλ£Œν˜•μ„ ν™•μΈν•˜λ €λ©΄ Ctrl+Shift+P둜 λ‹€μŒκ³Ό 같이 확인할 수 μžˆλ‹€.

3) λ³€μˆ˜ μ„ μ–Έ 예
val username = "Kildong"
//μžλ£Œν˜•μ„ μΆ”λ‘ ν•˜μ—¬ String으둜 κ²°μ •
var username
//μžλ£Œν˜•μ„ μ§€μ •ν•˜μ§€ μ•Šμ€ λ³€μˆ˜λŠ” μ‚¬μš©ν•  수 μ—†μŒ
val init: Int
//μ‚¬μš© μ „ ν˜Ήμ€ μƒμ„±μž μ‹œμ μ—μ„œ initλ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™”ν•΄μ•Όν•¨
val number = 10
//numberλ³€μˆ˜λŠ” Intν˜•μœΌλ‘œ μΆ”λ‘ 

4) λ³€μˆ˜ 이름 μ§€μ„λ•Œ μ£Όμ˜μ‚¬ν•­

-λ³€μˆ˜ 이름은 123abc와 같이 숫자둜 μ‹œμž‘ν•˜λ©΄ μ•ˆ λ©λ‹ˆλ‹€.
-λ³€μˆ˜ μ΄λ¦„μ—λŠ” while, if와 같이 μ½”ν‹€λ¦°μ—μ„œ μ‚¬μš©λ˜λŠ” ν‚€μ›Œλ“œλŠ” μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
-λ³€μˆ˜ 이름은 의미 μžˆλŠ” 단어λ₯Ό μ‚¬μš©ν•˜μ—¬ λ§Œλ“œλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
-μ—¬λŸ¬ 단어λ₯Ό μ‚¬μš©ν•˜μ—¬ λ³€μˆ˜ 이름을 지을 경우 카멜 ν‘œκΈ°λ²•(Camel Expression)을 μ‚¬μš©ν•˜μ„Έμš”.
ex) camelCase, numberOfBooks
-클래슀, μΈν„°νŽ˜μ΄μŠ€ 등은 μŒλ΄‰ 낙타/ 파슀칼 ν‘œκΈ°λ²• μ‚¬μš©
ex)AnimalCategory, CarEngine

2. μžλ£Œν˜•

1) κΈ°λ³Έν˜•
int
string
float
double

2) μ°Έμ‘°ν˜•: 동적 곡간에 데이터λ₯Ό λ‘” λ‹€μŒ 이것을 μ°Έμ‘° => μ½”ν‹€λ¦°
Int
Long
Float
Double

보톡 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ μžλ£Œν˜•μ€ κΈ°λ³Έν˜• μžλ£Œν˜•κ³Ό μ°Έμ‘°ν˜• μžλ£Œν˜•μœΌλ‘œ κ΅¬λΆ„ν•˜λ©° 코틀린은 μ°Έμ‘°ν˜• μžλ£Œν˜•μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

κΈ°λ³Έν˜•(Primitive Data Type)은 말 κ·ΈλŒ€λ‘œ κ°€κ³΅λ˜μ§€ μ•Šμ€ μˆœμˆ˜ν•œ μžλ£Œν˜•μ„ λ§ν•˜λ©° ν”„λ‘œκ·Έλž˜λ° 언어에 λ‚΄μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ°Έμ‘°ν˜•(Reference Type)은 객체λ₯Ό μƒμ„±ν•˜κ³  동적 곡간에 데이터λ₯Ό λ‘” λ‹€μŒ 이것을 μ°Έμ‘°ν•˜λŠ” μžλ£Œν˜•μ„ λ§ν•©λ‹ˆλ‹€ . μžλ°”μ—μ„œλŠ” int, long, float, double λ“± κΈ°λ³Έν˜•κ³Ό String, Date와 같은 μ°Έμ‘°ν˜•μ„ λͺ¨λ‘ μ‚¬μš©ν•˜μ§€λ§Œ μ½”ν‹€λ¦°μ—μ„œλŠ” μ½”λ”©ν•  λ•ŒλŠ” μ°Έμ‘°ν˜•λ§Œ μ‚¬μš©ν•˜λ©° 이것은 λ‹€μ‹œ μ½”ν‹€λ¦°μ˜ μ„±λŠ₯ μ΅œμ ν™”μ— 따라 JVM에 μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ μ½”ν‹€λ¦° μ»΄νŒŒμΌλŸ¬μ—μ„œ κΈ°λ³Έν˜•μœΌλ‘œ λŒ€μ²΄λ©λ‹ˆλ‹€.

u = unsigned

_ 언더 μŠ€μ½”μ–΄λŠ” 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šμ•„ μ–΄λ””λ“  넣어도 λœλ‹€!

3) IEEE λ°©μ‹μ˜ 뢀동 μ†Œμˆ˜μ  μ œν•œ

이 λ•Œ λ‹€λ₯Έ μ΄μ•ΌκΈ°μ§€λ§Œ, IntelliJ λ‹€μš΄ λ°›κ³  λ‚˜μ„œ 처음 ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€κ³ , νŒ¨ν‚€μ§€λ₯Ό λ§Œλ“œλŠ” 예제λ₯Ό ν’€λ €κ³  ν–ˆλŠ”λ°, νŒ¨ν‚€μ§€ 생성 λ²„νŠΌμ΄ μ—†μ–΄μ„œ λ‹Ήν™©ν–ˆλ‹€.
=>ν•΄κ²°: src νŒŒμΌμ„ μš°ν΄λ¦­ν•˜μ—¬ [Mark Directory as - Source Root]둜 μ„€μ •ν•΄μ£Όλ©΄ ν•΄κ²°λœλ‹€!

3. μžλ£Œν˜•μ˜ μ΅œμ†Œ, μ΅œλŒ€

**κΏ€νŒ: [Alt + Shift + 선택뢀뢄] : λ™μ‹œ νŽΈμ§‘ κ°€λŠ₯!!

1) 2의 보수: 음수 계산은 μ ˆλŒ“κ°’μ˜ μ΄μ§„μˆ˜μ— 값을 뒀집고 1을 λ”ν•œλ‹€.
ex_ -6(10)
6의 2진값: 0000 0110(2)
κ°’ 뒀집기: 1111 1001(2)
1을 λ”ν•˜κΈ°: 1111 1010(2)
=> κ°€μ‚° μ—°μ‚°λ§ŒμœΌλ‘œ λΊ„μ…ˆμ„ ν‘œν˜„ν•  수 있음(속도가 λΉ λ₯΄λ‹€)

2) 논리 μžλ£Œν˜•
Boolean: 1λΉ„νŠΈ, true, false

val isOpen = true
val isUploaded: Boolean//μ„ μ–Έλ§Œ ν•œ κ²½μš°λŠ” μžλ£Œν˜• λͺ…μ‹œ

3) 문자 μžλ£Œν˜•
Char: 2λ°”μ΄νŠΈ(16λΉ„νŠΈ)
val ch = 'c'
val ch2: Char

4) λ¬Έμžμ—΄
String으둜 μ„ μ–Έλ˜λ©°, String Poolμ΄λΌλŠ” 곡간에 ꡬ성

===: μ°Έμ‘° 비ꡐ

λ¬Έμžμ—΄μ˜ λ‚΄μš©μ΄ κ°™μœΌλ©΄ 같은 곳을 μ°Έμ‘°ν•œλ‹€.

val s1 = "a is $a"//String μžλ£Œν˜•μ˜ s1을 μ„ μ–Έ, μ΄ˆκΈ°ν™”

λ¬Έμžμ—΄μ— ν‘œν˜„μ‹ μ‚¬μš©ν•œ 것

4. NULL

*μ½”ν‹€λ¦°μ˜ λ³€μˆ˜ 선언은 기본적으둜 null을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
val a: Int = 30
//μ΄ˆκΈ°ν™”κ°€ ν•„μˆ˜

=> null κ°€λŠ₯ν•œ μ„ μ–Έ

val a: Int? = null
var b: String? = null

=>NPE: μ‚¬μš©ν•  수 μ—†λŠ” null인 λ³€μˆ˜μ— μ ‘κ·Όν•˜λ©΄ λ°œμƒν•˜λŠ” μ˜ˆμ™Έ

?. : str1이 널이 μ•„λ‹λ•Œλ§Œ μ‹€ν–‰

!!. : non-null λ‹¨μ •κΈ°ν˜Έ, 널일리가 μ—†λ‹€! 널이더라도 싀행해라!
=> 널이면 NPE λ°œμƒ
=> 쓰지 μ•ŠλŠ” 것이 μ’‹λ‹€

νŒλ‹¨λ¬Έ: 만일 str1이 널이 μ•„λ‹ˆλΌλ©΄ 길이λ₯Ό κ΅¬ν•˜κ³ , μ•„λ‹ˆλ©΄ -1 λ°˜ν™˜

=> μ„Έμ΄ν”„μ½œ(?.)-μ•ˆμ „ν˜ΈμΆœ, μ—˜λΉ„μŠ€ μ—°μ‚°μž(?:)λ₯Ό ν™œμš©ν•΄ 널을 ν—ˆμš©ν•˜λŠ” λ³€μˆ˜λ₯Ό 더 μ•ˆμ „ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€.

4. μžλ£Œν˜• 비ꡐ, 검사, λ³€ν™˜

(1) μ½”ν‹€λ¦°μ˜ μžλ£Œν˜• λ³€ν™˜

  • λ³€ν™˜ λ©”μ„œλ“œ
    val a: Int = 1
    val b: Double = a.toDouble()

toByte: Byte

toLong: Long

toShort: Short

toFloat: Float

toInt: Int

toDouble: Double

toChar: Char

-ν‘œν˜„μ‹μ—μ„œ μžλ£Œν˜•μ˜ μžλ™ λ³€ν™˜
val result = 1L + 3//Long + Int => result(Long)

(2) 비ꡐ

==: κ°’λ§Œ 비ꡐ
===: κ°’κ³Ό μ°Έμ‘° μ£Όμ†Œ 비ꡐ

  • μ½”ν‹€λ¦°μ—μ„œλŠ” μ°Έμ‘°ν˜•μœΌλ‘œ μ„ μ–Έν•œ λ³€μˆ˜μ˜ 값이 -128~127 λ²”μœ„μ— 있으면 μΊμ‹œμ— κ·Έ 값을 μ €μž₯함

(3) 슀마트 캐슀트

=> ν•„μš”μ— 따라 μžλ£Œν˜• λ°”κΎΈλŠ” Number νƒ€μž…μ΄ μ˜ˆμ‹œμ΄λ‹€

λ§Œμ•½ μ–΄λ–€ 값이 μ •μˆ˜μΌ μˆ˜λ„ 있고 μ‹€μˆ˜μΌ μˆ˜λ„ μžˆλ‹€λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒμš”? κ·Έλ•Œλ§ˆλ‹€ μžλ£Œν˜•μ„ λ³€ν™˜ν•΄λ„ λ˜μ§€λ§Œ Numberν˜•μ„ μ‚¬μš©ν•˜λ©΄ 숫자λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•œ νŠΉμˆ˜ν•œ μžλ£Œν˜• 객체λ₯Ό λ§Œλ“­λ‹ˆλ‹€. Numberν˜•μœΌλ‘œ μ •μ˜λœ λ³€μˆ˜μ—λŠ” μ €μž₯λ˜λŠ” 값에 따라 μ •μˆ˜, μ‹€μˆ˜ λ“±μœΌλ‘œ μžλ£Œν˜•μ΄ λ³€ν™˜λ©λ‹ˆλ‹€. 이와 같이 μƒμœ„ μžλ£Œν˜•μ€ ν•˜μœ„ μžλ£Œν˜•μ„ λͺ¨λ‘ ν¬ν•¨ν•˜λ―€λ‘œ ν•˜μœ„μ— μ†ν•˜λŠ” μ–΄λ–€ μžλ£Œν˜•μœΌλ‘œλ„ λ³€ν™˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ§Œ String은 Number에 μ†ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ λ³€ν™˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

(4) 검사 - isν‚€μ›Œλ“œ

val num = 256
if(num is Int){
println(num)
}else if(num !is Int){
println("Not a Int")
}

(5) λ¬΅μ‹œμ  λ³€ν™˜ - Any

  • μžλ£Œν˜•μ΄ 정해지지 μ•Šμ€ 경우
  • λͺ¨λ“  클래슀의 뿌리
  • μ–Έμ œλ“  ν•„μš”ν•œ μžλ£Œν˜•μœΌλ‘œ μžλ™ λ³€ν™˜(슀마트 캐슀트)

var a: Any = 1
a = 20L

5. κΈ°λ³Έ μ—°μ‚°μž

λŠ” κΈ°λ³Έμ μ΄λ‹ˆ μƒλž΅!!

6. λΉ„νŠΈ μ—°μ‚°μž

profile
Major interest in iOS πŸ€ & 🍎

0개의 λŒ“κΈ€