728x90
SMALL
[Kotlin이란?]
코틀린은(Kotlin)은 IntelliJIDEA라는 통합 개발 환경을 제작한 JetBrains에서 만든 프로그래밍 언어
넷플릭스,아마존,구글은 코틀린으로 개발이 되었습니다.
코틀린 장점
1) 자료형 오류를 미리 잡을 수 있는 정적 언어 -> 자료형 추론해준다
2) NPE(Null Pointer Exception)으로 인한 프로그램의 중단 예방
3) 아주 간결하고 효율적 언어
4) 함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능(다중 패러다임 언어)
5) ; (세미콜론) 생략가능
ex 01 Variable
package ex20221118
fun main() {
//IntelliJ에서 실행시킬 코드는 main 함수 안에 작성
println("Hello~ Full Stack")
//실행 단축키 : shift +F10
// 변수 (Variable)
// 사전적 의미: 변하는 수, 변할 수 있는 수
// 프로그래밍 : 값(데이터)을 저장할 수 있는 공간
// 1. 변수 선언하는 방법
// 1) 상수인지, 변수인지 결정해주기
// val(상수: value), var(변수: variable)
// val/var 변수명 : 자료형 = 데이터 값
var age: Int = 20
var name : String = "유혜원"
//- 코틀린이 자료형을 추론하여 변수의 자료형을 생략가능
var num = 2022
// 자료형 확인 단축키 :ctrl +shift+ p
// * 자료형을 생략할 수 없는 경우 *
// 값이 할당(초기화)되어 있지 않으면 자료형을 생략할 수 없다
var str : String
str = "문자열"
// 2. 상수 선언하기
val empno = "20221118"
// empno = "123456"
}
ex 02 Variable
package ex20221118
fun main() {
// Kotlin --> Java ---> 바이트코드
// 변수명 작성 규칙
// 1) 변수명은 첫번째 글자가 숫자이면 안 된다.
// 2) 변수명은 코틀린에서 사용되는 키워드는 쓸 수 없다.
// 3) 변수명은 의미있는 단어를 사용하여 만드는 것을 지향한다.
// 4) 변수명은 카멜표기법, 클래스명 파스칼표기법
// 카멜 표기법 : numOfApple
// 파스칼 표기법 : NumOfApple
// + 변수를 사용할 때 반드시 값이 할당되어 있어야 한다는게 원칙!
// Null 값을 처리하는 3가지 방법
}
ex 03 Null
package ex20221118
fun main() {
// null 값을 그냥 넣을 수는 없다!!
val name:String? = null
// Int? , Double? ... : 물음표가 붙은 자료형은 null 값을 넣을 수 있다.
// String vs String?
// String : 기본자료형
// String? : 참조형데이터타입
}
ex 04 Null
package ex20221118
fun main() {
// null 값을 허용하는 변수 name1을 선언(String?)
var name1: String? = null
// null 값을 허용하지 않은 변수 name2를 선언(String)
var name2: String = "조자연"
// name1, name2의 문자열 길이(.length)를 출력해보자
println(name1?.length)
// ?(null 값을 허용)가 붙은 변수들은 사용하려면
// 뒤쪽에서 계속 관리를 해줘야한다. (? : 세이프 콜)
println(name2.length)
// name1에 오류 발생
// 원인 : null은 길이가 null 이므로 NPE가 발생
// 오류 해결 방법: String? 형에서는 세이프콜(?.)
// 이나 non-null 단정기호(!!.)을 사용해서 출력할 수 있다
// !!. 거의 사용하지 않는다.
// 반드시 null 값이 아니라고 판단되는 변수에만 사용가능
// !! 사용할 경우 주석으로 사용한 이유/ 경위를 기록해야함!
// 조건문을 활용해서 null을 허용한 변수 검사
// 엘비스 연순자 (Elvis) ?:
}
ex 05 자료형
package ex20221118
fun main() {
// Kotlin의 기본 자료형
// 참조 자료형으로 선언할 수 있다. (기본 자료형은 눈에 안보임)
// 저장할 때 (실행) 기본자료형인지 아닌지를 추론
// : 참조 자료형만 사용가능하지만 컴파일 과정에서
// 코틀린 컴파일러가 참조 자료형을 기본 자료형으로 대체하면서 최적화를 진행한다. (추론)
// Java에서는 기본 자료형과 참조 자료형이 구별하여 사용된다.
// int, double, char, float
// Integar, Double, Char..
// * 개념 ( 면접 기술 질문 )
// 정적 메모리 (기본 자료형) : static
// byte(2), short(4), int, double, char ...
// 저장하기 전에 필요한 메모리 공간 크기를 지정해놓고 할당
// 동적 메모리 ( 참조 자료형 ) : heap
// 실행 중에 필요한 만큼 메모리를 할당하는 기법
// 논리형, 정수형, 실수형, 문자형
// 1. 논리 자료형 ( Boolean)
// true/ false
var b1: Boolean = true
var b2: Boolean = false
// 2. 정수 자료형 (Byte, Short, Int, Long)
var num1: Int = 129
var num4: Short = 128
// 3. 실수 자료형 (Float, Double)
var num2: Double = 3.14
var num3: Float = 3.14f
// 숫자에 빨간줄이 뜨는 이유!
// : 손실 값이 발생할 수 있다 ( Double이 기본 자료형으로 사용 )
// 4. 문자 자료형 (Char, String)
var firstName: Char = '조' // ''
var lastName: String = "자연" // ""
}
ex 06 형변환
package ex20221118
fun main() {
// Kotlin에서는 자료형이 서로 다른 변수를 비교하거나 연산할 수 없다
// Kotlin에서는 자료형이 서로 다른 변수를 같은 자료형으로 만들어줘야 한다.
// 형변환 (Cast)
// 1. 자료형을 확인하는 방법
// 1-1) println(변수명 :: class.java.simpleName)
// 1-2) is : 자료형 체크하는 연산자
// instanceof랑 같은 역할: 객체타입을 확인하는 역할
// 2. 자료형 변환하는 방법
// 2-1) to자료형 : 기본타입 형변환
val num = 256
println(num::class.java.simpleName)
val str = num.toString()
println(str::class.java.simpleName)
}
ex 07 SmartCast
package ex20221118
fun main() {
// 만약에 어떤 값이 정수일 수도 있고 실수일 수도 있다면 어떻게 해야할까?
// 스마트 캐스트: 컴파일러가 자동으로 형변환
// Number
var test: Number = 12.34
println("test의 값은 $test")
println(test::class.java.simpleName)
test = 12
println(test::class.java.simpleName)// Int
// Any : Object랑 비슷
}
ex 08
package ex20221118
fun main() {
// 연산자, 제어문 (if, when)
// 항, 연산자 -> 식
// 1) 산술 연산자 : +, -, *, /, %
// 2) 대입 연산자(복합대입연산자) : =, +=, -=, /=, *=, %=
// 3) 증감 연산자: ++, -- (전치, 후치)
// 4) 비교 연산자: <, >, >= ... ===, !==
// 5) 논리 연산자: &&, ||, !
// when ** (조건문)
}
728x90
LIST
'Full Stack 교육 회고록' 카테고리의 다른 글
11/22- kotlin / Node.js (0) | 2022.11.22 |
---|---|
11/21- node.js / 오후 Kotlin (0) | 2022.11.21 |
10/20 - 프로젝트 시작(프론트엔드) (0) | 2022.11.12 |
2022년 웹 개발 로드맵 총정리 (공부순서 알려드림) (0) | 2022.10.29 |
10/11- react (0) | 2022.10.11 |