일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 카페
- 백준알고리즘
- kotlin
- 프로그래머스
- 알고리즘
- 림프절전이
- 갑상선암
- 코틀린
- 임파선전이
- Compose
- java
- 방사성 동위원소 치료
- 안드로이드
- firebase
- leetcode
- 수술
- 전이
- 저요오드식
- 방사성동위원소치료
- android auto
- Android Compose
- 자바
- MYSQL
- Android
- 폐CT
- 맛집
- 객체
- 입원
- 동위원소치료
- 정렬 알고리즘
- Today
- Total
목록Java & Kotlin (13)
새우버거의 개발 블로그

코틀린에서는 특정 연산자나 언어 기능이 미리 정해진 이름의 함수와 연결되도록 하는 규칙을 관례(convention)라고 합니다. 이러한 함수명을 정의하면 해당 연산자를 사용할 때 자동으로 그 함수가 호출됩니다. 1. 산술 연산자 오버로딩1) 이항 산술 연산 오버로딩코틀린에서는 더하기, 빼기, 나누기 등 이항 산술 연산자를 오버로딩할 수 있습니다. 연산자마다 미리 정해진 함수명을 사용해 구현되어야 하고, 반드시 operator 키워드를 붙여야 합니다.식함수 이름a * btimesa / bdiva % bmod / rema + bplusa - b minus 두 피연산자의 타입이 반드시 같을 필요 없고, 반환 타입도 자유롭게 정할 수 있습니다. 관례를 따르는 확장함수도 가능합니다. data class Point..

1. 널 가능성 (nullability)널 가능성(Nullability)은 코틀린 타입 시스템의 특징 중 하나로 NullPointerException과 같은 오류를 방지하는 데 도움을 줍니다. 코틀린을 비롯한 최신 프로그래밍 언어들은 변수나 객체가 null이 될 수 있는지 여부를 컴파일 시점에 미리 검사하여 런타임에서 발생할 수 있는 잠재적인 오류를 효과적으로 줄여줍니다. 이를 통해 코드의 안정성과 안전성을 높일 수 있습니다. 1) 널이 될 수 있는 타입코틀린과 Java의 가장 중요한 차이는 코틀린이 널이 될 수 있는 타입을 명시적으로 지원한다는 것입니다. 널이 될 수 있는 타입은 프로그램 안의 프로퍼티나 변수에 null을 허용하게 만드는 방법입니다. 아래와 같은 Java 함수에 null을 넘기면 Nu..

1. 람다 식과 멤버 참조1) 람다 소개함수형 프로그래밍에서는 함수를 값처럼 다루기 때문에 클래스의 인스턴스를 함수에 넘기는 대신 함수를 직접 다른 함수에 전달할 수 있습니다. 람다 식을 사용하면 함수를 선언할 필요없이 코드 블록을 직접 함수의 인자로 전달할 수 있기 때문에 코드가 간결해집니다.// Javabutton.setOnClickListner(new OnClickListener() { @Override public void onClick(View view) { // ... }});// 람다button.setOnClickListenr { //... } 람다 식의 문법중괄호 {}로 감쌉니다.인자 목록은 괄호 없이 바로 작성하며, 화살표(->)로 인자 목록과 람다 본문을 구..
1. 클래스 계층 정의1) 코틀린 인터페이스코틀린 인터페이스는 interface 를 사용합니다. 코틀린 인터페이스 안에는 추상 메소드 뿐만 아니라 구현이 있는 메소드도 정의할 수 있습니다.interface Clickable { fun click()} Clickable를 구현하는 모든 클래스는 click에 대한 구현을 제공해야 합니다. Java에서는 상속을 할 때, extends와 implements 키워드를 사용하지만, 코틀린에서는 콜론(:)을 붙입니다. override 변경자는 상위 클래스, 인터페이스에 있는 프로퍼티나 메소드를 오버라이드한다는 표시로 코틀린에서는 필수로 사용해야 합니다.class Button : Clickable { override fun click() { }}..

1. 코틀린에서 컬렉션 만들기코틀린은 자체 컬렉션을 제공하지 않고, Java 컬렉션과 똑같은 클래스를 사용합니다.val set = hashSetOf(1, 7, 54)val list = arrayListOf(1, 7, 54)val map = hashMapOf(1 to "one", 7 to "seven", 54 to "fifty-four")println(set.javaClass)println(list.javaClass)println(map.javaClass)// class java.util.HashSet// class java.util.ArrayList// class java.util.HashMap 따라서 Java에서 코틀린 함수를 호출하거나 코틀린에서 Java 함수를 호출할 때, 서로 변환할 필요가 없습니..

코틀린이란 무엇이며, 왜 필요한가?1. 코틀린의 주요 특성코틀린은 Java 플랫폼에서 돌아가는 프로그램 언어로, 이제 안드로이드 어플리케이션을 개발하는 사람이라면 대부분 Java만큼 사용하고 있는 언어입니다. Java와 코틀린은 모두 정적 타입 지정 언어이지만, 코틀린은 타입 추론, 널 안정성 등 더 편리하고 유용한 기능을 제공합니다. 1) 정적 타입 지정 언어코틀린은 Java와 마찬가지로 정적 타입 지정 언어입니다. 정적 타입 지정 언어란 변수나 함수의 타입이 컴파일 시점에 미리 결정되는 언어입니다. 예를 들어, Int 타입 변수에는 반드시 정수가 들어가야 하며, String 등 다른 타입의 값을 넣으려 하면 컴파일 오류가 발생합니다.val num: Int = 1num = "hello" // 컴파일 오..
Java에서는 문자열을 저장하는 자료형으로 String을 제공합니다. String 클래스에는 문자열 관련 작업을 할 때 유용한 다양한 메소드를 제공합니다. 대표적인 특징은 다음과 같습니다. 1. String은 불변 객체입니다. 인스턴스가 한 번 생성되면 그 값을 읽기만 가능하고, 수정이 불가능합니다. 2. String은 final class이기 때문에 상속받을 수 없습니다. 이러한 특징 때문에 Java는 문자열을 가변적으로 수정할 수 있도록 StringBuilder와 StringBuffer 클래스를 제공합니다. 이외에도 계속 생성되는 인스턴스로 인한 메모리 이슈를 생각하여 String Pool이라는 것도 고안했습니다. 이제부터 StringBuilder, StringBuffer 그리고 String Pool..
INTRO 객체 지향 언어의 특징 중 하나는 상속(Inheritance)입니다. 이것만큼 워딩 그대로 그 뜻을 잘 표현하는 것은 없는 것 같습니다. 상속은 말 그대로 한 클래스가 다른 클래스의 속성(메서드 및 필드)을 획득하는 것입니다. 보통 다른 클래스의 속성을 받는 클래스를 하위 클래스(자식 클래스), 특성을 주는 클래스를 상위 클래스(부모 클래스)라고 합니다. 상속을 이용하면 상위 클래스의 속성을 재사용하여 반복된 코드 중복을 줄일 수 있습니다. 하지만 객체 간의 속성과 관계를 잘 고려하여 상속을 이용하고, 구조를 설계하는 것이 중요합니다. 무분별한 상속은 오히려 객체 간의 결합도를 높여 유지보수와 수정이 어려워질 수 있습니다. extends 키워드 extends는 클래스의 속성을 상속하는 데 사용..
INTRO Java 프로그램은 객체를 생성하고, 메소드를 호출해서 통신하는 대표적인 객체 지향(Object Oriented) 언어입니다. 따라서 Java는 객체 지향 대표적인 특징인 캡슐화, 상속, 다형성, 추상화 등을 지원합니다. 이제부터 객체 지향 프로그래밍의 개념을 다지고, Java가 가지는 객체 지향적 특징을 하나하나 알아보려고 합니다. 객체 지향 프로그래밍 (Object Oriented Programming, OOP) 객체 지향 프로그래밍(OOP)에 대한 개념은 면접 단골 질문입니다. Java 개발자라면 OOP가 무엇인지 알고 있지만, 막상 설명을 하려고 하면 입이 잘 안 떨어지는 경우가 있습니다. (제가 그렇습니다.) 먼저, 위키 백과에서 정의된 OOP의 정의는 다음과 같습니다. 객체 지향 프..
퀵 정렬 (Quick Sort) 1. Pivot 값을 기준으로 왼쪽에서부터 검사해서 큰 값을, 오른쪽에서부터 작은 값을 발견한다. 2. 두 값을 바꾸기 연산하고, 같은 과정을 수행한다. 3. 큰 값의 index 와 작은 값의 index 가 교차하는 경우, 작은 값과 Pivot 값을 바꾸기 연산한다. → Pivot 값을 기준으로 왼쪽은 Pivot 값보다 작은 값들, 오른쪽은 큰 값들로 분할된다. 4. 분할된 영역에서 같은 과정을 수행한다. → 재귀 성격 3. 시간 복잡도 : O(𝑁𝑙𝑜𝑔𝑁) 4. 작은 값과 큰 값으로 분할을 할 수 없는 경우 = 이미 정렬되어 있는 경우 : O(𝑁²) import java.util.Arrays; public class QuickSort { int[] array = new ..