if문 Swift에서 if문은 조건문을 나타내는 키워드입니다. if문은 조건식이 참(true)인 경우에 코드 블록을 실행하고, 조건식이 거짓(false)인 경우에는 실행하지 않습니다. if문의 기본 구문은 다음과 같습니다: if 조건식 { // 조건식이 참일 때 실행되는 코드 블록 } 예를 들어, 다음 코드는 변수 x가 10보다 크면 "x is greater than 10"을 출력합니다. let x = 15 if x > 10 { print("x is greater than 10") } Swift에서는 if문을 확장해서 else문과 함께 사용할 수 있습니다. else문은 if문의 조건식이 거짓일 때 실행됩니다. 다음은 if-else문의 구문입니다: if 조건식 { // 조건식이 참일 때 실행되는 코드 블록..
Swift 란? Swift는 2014년 애플에서 발표한 프로그래밍 언어입니다. Objective-C 언어를 대체하기 위해 만들어졌으며, iOS, macOS, watchOS 및 tvOS 애플 플랫폼에서 개발하는 데 사용됩니다. Swift는 다양한 프로그래밍 패러다임을 지원하며, 안정성, 안전성, 효율성 등의 특징을 가지고 있습니다. 또한, 가독성이 높고 코드 작성이 간결하며, 개발 생산성을 높이는 다양한 기능들이 포함되어 있습니다. Swift의 기본 구성 요소는 변수, 상수, 데이터 타입, 함수, 클로저, 제네릭 등이 있습니다. 변수와 상수는 값을 저장하는 데 사용되며, 데이터 타입은 변수 또는 상수가 저장할 수 있는 값의 종류를 지정합니다. 함수는 특정 작업을 수행하기 위한 코드 블록이며, 클로저는 함수..
Garbage Collection(가비지 컬렉션)이란 자바 가상 머신(JVM)에서 자동으로 객체를 제거하여 메모리를 해제하는 프로세스입니다. 자바에서 객체는 동적으로 할당되며, 개발자가 명식적으로 메모리를 해제하지 않으면 더 이상 사용하지 않는 객체가 메모리에 계속 남아있을 수 있습니다. 이러한 객체를 가바지라고 부릅니다. 가비지 컬렉션은 이러한 가비지 객체들을 자동으로 식별하고, 메모리를 자동으로 해제하여 프로그램 실행 중에 메모리 누수를 방지합니다. 자바에서 가비지 컬렉션은 일반적으로 개발자가 관여할 필요가 없으며, JVM이 자동으로 수행합니다. 그러나 가끔씩 가바지 컬렉션의 성능을 최적화하거나 세부적인 제어가 필요할 수도 있습니다. 장점 메모리 누수 방지 : 가비지 컬렉션은 더 이상 사용하지 않는 ..
Java String 객체는 내장 함수를 정리하자. equals() eqauls()는 두개의 문자열이 동일한 값을 가지고 있는지를 비교하는 함수이다. a == b 와는 다르다. a == b는 문자열 변수의 주소값을 비교하는 것이다. 예시) String a = "test"; String b = a; String c = "test"; String d = new String("test"); String e = "wtf"; System.out.println(a==b);//true System.out.println(a.equals(b));//true System.out.println(a==c);//true System.out.println(a.equals(c));//true System.out.println(b=..
오늘은 static, object, companion object 차이에 대해서 공부해보자 우선 statc에 대해서 정리해보자. Java static 이란? 정적(static)은 고정된이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Static 메소드를 만들 수 있는데 다른 말로 정적 필드와 정적 메소드라고도 하며 이 둘을 합쳐서 정적멤버라고 한다.(혹은 클래스 멤버라고도 한다.) 정적 필드와 정적 메소드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버이다. 그렇기에 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스 별로 관리한다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용이 가능하다. ex) public class Main { ..
스코프 함수란? 코틀린에서는 Object Context 내에서 코트 블록을 실행하는 것이 목적인 여러 함수가 존재한다. 제공된 람다식을 사용하여 객체에 이러한 함수들을 호출하면 임시적으로 스코프(범위)가 설정된다. 이 범위에서는 해당 객체의 이름없이 접근할 수있다. 스코프 함수에는 5가지의 함수가 존재하는데, let, run, with, apply, also 공통점으로는 객체에 붙어있는 코드 블록을 실행시킨다는 것이다. 이에 차이점과 각 함수의 특징들에 대해서 정리해보자. 5가지의 함수의 정의이다. inline fun T.run(block: T.() -> R): R { return block() } inline fun with(receiver: T, block: T.() -> R): R { return ..
인라인 클래스란? 경우에 따라 비즈니스 논리가 일부 형식 주위에 래퍼를 만드는 것이 필요하다. 그러나 추가 힙 할당으로 인해 런타임 오버헤드가 발생하고 또한 래핑된 유형이 기본 유형인 경우 기본 유형은 일반적으로 런타임에 의해 크게 최적화되는 반면 해당 래퍼는 특별한 처리를 받지 않기 때문에 성능 저하가 발생한다. 이러한 문제를 해결하기 위해서 Kotlin에서는 inline class를 제공한다. 인라인 클래스는 value-based classes의 하위 집합입니다. 이는 정체성은 존재하지 않으며 값만을 보유합니다. inline class는 생성자로 단 하나의 값만 받을 수 있다. 물론 클래스내에 프로퍼티와 함수를 정의할 수도 있다. inline class UserName(val value: String..
Sealed class란 Sealed class 및 interface는 상속에 대한 더 많은 제어를 제공하는 제한된 클래스 계층을 나타냅니다. 추상 클래스로 상속받는 자식 클래스의 종류를 제한하는 특성을 가지고 있다, 즉 컴파일러에서 Sealed class의 자식 클래스가 어떤 것이 있는지 알 수 있다는 것이다. sealed interface Error sealed class IOError(): Error class FileReadError(val file: File): IOError() class DatabaseError(val source: DataSource): IOError() object RuntimeError : Error 어떤 의미에서 Sealed class 는 Enum class와 유사하다..