자바에서 추가한 언어
다양한 플랫폼에서 돌아감
nullable인것이 특징이다
왜 장점인지 모르겠다?
jvm을 이용한다 ⇒ 자바 가상 머신 상에서 동작하는 앱을 만들 수 있다.
코틀린의 장점
1.정적언어이다.
컴파일러가 자료형에 대한 오류를 미리 잡을 수 있다.
2.널포인터로 인한 프로그램의 중단을 예방 할 수 있다.
“개발자들은 코틀린의 이런 특징을 npe에서 자유롭다” 라고 한다.
npe = null pointer exception
3.데이터형 선언시 널 가능한 형식과 불가능한 형식 지원
4.자바와 완벽하게 상호운영이 가능하다.
애초에 자바 가상머신상에서 돌기 때문에
5.함수형 프로그래밍 과 객체지향프로그래밍 둘다 사용 가능
6.세미콜론 생략 가능 ㅋㅋㅋㅋㅋ
변수 선언 방법
val/var (변수이름) : (자료형) = (대입할 값)
ex) val username : String = “kildong”
cf) 1.항상 자료형의 첫글자는 대문자이다
string(x)
String(o)
2.변수 이름의 첫 글자는 항상 소문자이다
val =value 의 약자이고 불변값이다
var=varable의 약자이고 변할 수 있는 값이다
val username =3 과 같은코드에서 변수의 자료형이 추론 가능하다면 자료형을 생략하여도 문법상 문제가 발생하지 않는다
자료형엔 기본형(primitive data type)과 참조형(reference type)이 존재한다
기본형: 스택에서 바로 접근한다.
참조형 :동적공간 힙에서 스택의 주소값을 가져서 참조 주소를 가진다
unsigned int(c언어)==UInt(kotlin)
2-2
1.자료형 생략
ex)val num05= 127(Int 형으로 추론한다)
val num08= 12342523523523532523(long 형으로 추론)
2.접미사 접두사 사용
val exp01 = 123(Int 형으로 추론)
val exp02 = 123L(접미사 L을 사용해 long형으로 추론)
val exp03=0x0F (접두사 0x를 사용해 16진 표기가 사용된 Int 형으로 추론)
val exp04 = 0b00001011(접두사 0b를 사용해 2진 표기가 사용된 Int형으로 추론)
src파일이 만약 sourceroot로 변환되어 있지 않는다면 패키지 생성이 불가하다.
[Kotlin] 인텔리제이(IntelliJ) new package, class 없는 경우 해결
자료형.MIN_VALUE—-자료형의 최소값
자료형.MAX_VALUE—-자료형의 최대값
음수의 이진수 표현 방법
-6의 이진값 0000 0110
-값 뒤집기 1111 1001
-1을 더한다 1111 1010
cf)1을 더한 이유는 그래야 msb를 제외하고 0이 되기 때문이다
새로운 자료형
이름:Boolean
형식: 논리형
크기 : 1비트
값의 범위: ture,false
println(”str1: \”str2\””)
틀린 이유는 “의 방향의 영향을 받는다
올바른 코드 이다
코틀린의 변수선언은 기본적으로 null을 허용하지 않는다
cf) null 가능한 선언
val a:Int? =null(여기서 Int와 Int?는 완전히 다른 자료형이다)
var b:String?=null
만약 사용할 수 없는 null인 변수에 접근하면서 발생하는 예외
NPE(nullpointerexception)
오류:Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
해결)세이프티콜이 필요하다
세이프티콜 형식 : 변수?.멤버
세이프티콜의 역할은 만약 변수에 널값이 들어가 있다면 바로 널을 반환하고
아니라면 멤버를 처리한뒤 값을 반환한다
cf) 넌널 단정 기호: !!.
컴파일러가 널이 아니라고 무조건 판단하고 컴파일함
단축키:alt+enter ⇒ 빠른 수정 .즉 다른 코드를 추천해줌
elvis 연산자 ⇒ “ ?: ”
ex) val len =str1?.length ?:-1