Language 40

[Kotlin In Action] 변수 코틀린에서 변수를 선언할 때, 자바와 달리 자료형 대신 키워드로 변수 선언을 시작합니다. 또 상황에 따라 뒤에 오는 타입을 명시하거나 생략하게 허용합니다. 변수를 선언하는 키워드는 두가지가 있습니다. var variable라는 의미를 가집니다. mutable(가변) 참조를 저장하는 변수로 활용됩니다. 값이 바뀔 수 있습니다. 자바의 일반변수에 해당합니다. 한번 초기화하면 타입이 고정됩니다. Int 타입으로 처음 초기화 되면 Int형 변수가 됩니다. val value라는 의미를 가집니다. immutable(불변) 참조를 저장하는 변수로 활용됩니다. val로 선언된 변수는 일단 초기화하고 나면 재대입이 불가능합니다. 자바의 final에 해당됩니다. 초기화 조건(분기)에 따라 다른 여러 값으로 초기화 할 수 .. Language/Kotlin In Action 2021. 4. 13.
[Kotlin In Action] 함수 코틀린 함수의 특징 fun를 키워드를 사용하여 함수를 정의합니다. 파라미터 이름 뒤에 파라미터의 타입을 작성합니다. 함수를 최상위 수준에 정의 할 수 있습니다. 자바처럼 꼭 클래스 안에 함수를 넣을 필요가 없습니다. 배열도 일반적인 클래스와 마찬가지입니다. 자바와 달리 배열 처리를 위한 문법이 따로 존재하지 않습니다. println과 같은 래퍼 함수를 제공합니다. 줄 끝에 세미콜론을 붙이지 않아도 됩니다. 식이 본문인 함수, 블록이 본문인 함수 두가지가 될 수 있습니다. 식이 본문인 함수의 반환 타입만 생략이 가능합니다. 블록이 본문인 함수는 반환타입을 지정해야 합니다. 블록이 본문인 함수의 경우 Unit 타입의 경우 반환타입이 생략 가능합니다. 식이 본문인 함수의 경우 굳이 반환 타입을 지정해 주지 않.. Language/Kotlin In Action 2021. 4. 13.
[Java] 다형성 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미합니다. 예를 들어 키보드라는 클래스에 누른다라는 동작이 있습니다. 그렇다면 ENTER를 누르는 것과 ESC, SPACE를 누르는 것은 서로 다른 동작을 하게 됩니다. 이러한 동작을 다형성이라고 합니다. 다형성에 대해 가장 많이 언급되는 것이 상속과 Overriding, OverLoading입니다. OverLoading에 대해서는 의견이 분분하다고 많은 책들에서 언급되지만 예시에 포함하도록 하겠습니다. Overloading 같은 이름을 가지지만 매개변수의 개수 또는 타입에 따라 서로 다른 동작 방법을 하는 것을 오버로딩이라고 합니다. public class Printer { public void print(int nu.. Language/Java 2021. 1. 1.
[Java] 실행 데이터 영역 (Runtime Data Area) 자바 실행 데이터 영역 (Runtime Data Area) Runtime Data Area는 JVM 이 프로그램을 수행하기 위해 할당 받는 메모리 영역이라고 할 수 있습니다. 실제 성능 문제에 직면했을 때, 대부분의 문제점은 Runtime Data Area에서 발생 하는 경우가 많습니다. Memory Leak 이나 Garbage Collection 인 경우를 그 예로 볼 수 있습니다 . 이러한 문제가 발생할 때, 이 문제가 왜 발생한 것인지 어디에서 발생한 것인지 확인하는 것은 쉽지 않습니다. 이 경우 Runtime Data Area 아키텍처를 이해한다면 해당 문제를 분석하는데 도움이 될 것입니다. Runtime Data Area는 크게 다섯 가지 영역으로 나뉘게 됩니다 . 그것은 PC Register,.. Language/Java 2020. 12. 27.
[Java] 자바 클래스 로더 자바 클래스 로더 자바 프로그램은 한 개 혹은 그 이상의 클래스들의 조합으로 실행됩니다. 그리고 실행 시 모든 클래스 파일이 한 번에 로딩되지 않고 요청되는 순간 로딩됩니다. 자바의 클래스 로더는 자바의 큰 장점 중 하나로 컴파일타임이 아닌 런타임에 Class를 로딩할 수 있게해주는 기술입니다. 바이트 코드를 읽어 들여 class 객체를 생성하는 역할을 담당합니다. 즉, 클래스 로더는 클래스가 요청될 때 파일로부터 읽어 메모리로 로딩하는 역할을 하며 자바 가상 머신의 중요한 요소 중 하나입니다. 자바 런타임 환경(JRE)의 일부입니다. 클래스 로더는 Loading, Linking, Intialize의 순서로 진행됩니다. 로딩( Loading ) 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절.. Language/Java 2020. 12. 26.
[Java] 자바란? ( Java ) 자바란? ( Java ) 운영체제에 독립적 Java로 작성된 애플리케이션은 JVM이라는 가상의 기계에서 동작하기 때문에, Java는 운영체제와 하드웨어에 독립적입니다. 따라서 한번 작성하면 어디에서나 실행이 가능합니다. Write Once, Run anyWhere 하지만 Java 애플리케이션이 동작하는 JVM은 각 OS마다 다른 JVM이 존재하기 때문에 운영체제에 종속적입니다. JVM을 한단계 더 거치고, 하드웨어에 맞게 컴파일 된 상태가 아니기 때문에 해석(Interpret) 과정을 거치기 때문에 속도가 느리다는 단점이 있습니다. 하지만 JIT 컴파일러와 향상된 기술로 속도의 격차가 많이 줄어들었습니다. 객체지향 Java는 상속, 추상화, 다형성, 캡슐화의 특징을 가진 객체 지향 언어( Object-O.. Language/Java 2020. 12. 25.
[Kotlin] 일급함수(First-class citizen) 코틀린의 함수는 일급함수입니다. 일급함수는 아래와 같은 조건을 만족하는 것을 말합니다. 변수나 데이터를 할당 할 수 있어야 한다. (variable) 객체의 인자로 넘길 수 있어야 한다. (parameter) 객체의 리턴값으로 리턴 할 수 있어야 한다. (return value) 변수나 데이터를 할당 할 수 있어야 한다. val test: () -> String = { "function" } 객체의 인자로 넘길 수 있어야 한다. val test: () -> String = { "function" } fun func(f: () -> String): Unit { println("$f") } 객체의 리턴값으로 리턴 할 수 있어야 한다. fun func(): () -> Unit { return { println.. Language/Kotlin 2020. 9. 16.
[Kotlin] 스코프함수 (Scope Function) 코틀린 표준 라이브러리는 객체의 컨텍스트 내에서 코드 블럭을 실행하기 위한 목적만을 가진 함수를 제공합니다. 이런 함수들은 람다식으로 호출할 때, 임시로 범위를 형성합니다. 이 범위 내에서는 객체의 이름이 없어도 객체에 접근할 수 있습니다. 이러한 함수를 스코프 함수라고 하고 스코프 함수는 새로는 기능을 제공하는 것이 아니라 코드의 가독성을 향상 시키는 역할을 합니다. 스코프 함수는 apply, run, with, also, let이 있고 이 함수들은 임시로 생성된 객체의 코드블럭을 실행합니다. 함수는 객체의 컨텍스트를 참조하는 방식, 리턴값으로 사용여부를 판단합니다. 컨텍스트 객체(Context Object) 스코프 함수의 람다식 내에서 컴텍스트 객체는 참조 이름으로 사용할 수 있습니다. 람다 수신자(.. Language/Kotlin 2020. 9. 8.
[Kotlin] 열거형 클래스 (Enum Class) 열거형 클래스를 쓰는 이유 코드가 단순해 진다. 가독성이 좋다. 서로 관련 있는 상수들을 모아 심볼릭한 명칭의 집합으로 정의한 것 새로운 열거형을 선언하면, 내부적으로 Enum 클래스형 기반의 새로우누 클래스형이 만들어짐. 클래스처럼 보이게 하는 상수 // 이름으로만 정의 가능 enum class Suit { CLUBS, DIAMONDS, HEARTS, SPADES } // 이름과 프로퍼티로 정의 가능 enum class Denomination(val initial: String, val score: Int) { ACE("A", 11), TWO("2", 2), THREE("3", 3), FOUR("4", 4), FIVE("5", 5), SIX("6", 6), SEVEN("7", 7), EIGHT("8",.. Language/Kotlin 2020. 9. 8.
[Java] JVM Architecture 동작원리 Java의 동작 원리를 알기 위해서는 JDK,JRE,JVM을 알아야 합니다. JDK ( Java Development Tool) Java 응용 프로그램 개발 및 실행에 사용되는 완전한 개발 환경. JRE 및 개발 도구가 모두 포함되어 있습니다. JRE ( Java Runtime Environment ) Java 애플리케이션을 실행하는 데 필요한 JVM (Java Virtual Machine) 및 자바 클래스 라이브러리(Java Class Libraries)와 자바 클래스 로더(Java Class Loader)가 포함됩니다. JVM ( Java Virtual Machine ) Java를 실제로 실행시키는 도구이다. 자바 어플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행한다. 그.. Language/Java 2020. 6. 7.