전체 글787 [Java]문자열 상수 풀(String Constant Pool)이란? 문자열 상수 풀(String Constant Pool) Java는 문자열 상수 풀 또는 문자열 풀이라고 불리는 특수한 저장 공간을 가지고 있습니다. 문자열 상수 풀은 Java의 힙 영역에 존재하는 특수한 공간으로 문자열 리터럴을 저장하는 용도로 사용됩니다. 문자열 리터럴이 생성될 때마다 JVM은 해당 문자열이 문자열 상수 풀에 존재하는지 확인합니다. 문자열 상수 풀에 해당 문자열이 존재하지 않으면, 해당 문자열을 문자열 상수 풀에 저장하고 존재하면 저장하지 않습니다. 위 내용을 이해하기 쉽게 다음 소스 코드를 살펴봅시다. int num = 10; boolean bool = false; String str = "Hello"; Java의 기본 타입(byte, char, short, int, boolean, .. Java/문자열 2022. 5. 19. [C#]중첩 클래스(Nested Class) 중첩 클래스(Nested Class) 클래스 내부에서 클래스를 정의할 수 있습니다. 이러한 클래스 구현 방식을 중첩 클래스라고 합니다. 중첩 클래스를 사용하여 클래스를 그룹화할 수 있으며, 클래스의 사용 범위를 제한할 수 있습니다. class OutsideClass { // ... class InsideClass { // ... } } OutsideClass 내부에 InsideClass 클래스를 정의했으므로 OutsideClass는 중첩 클래스입니다. 중첩 클래스를 사용하는 이유 클래스를 논리적으로 그룹화할 수 있습니다. 특정 클래스 내부에서만 사용되기 때문에 코드를 더 쉽게 파악할 수 있으며, 유지 관리가 쉽습니다. 특정 클래스 내부에서만 사용되므로 클래스 구조가 단순해집니다. 중첩 클래스 예제 다음은.. C# 2022. 5. 19. [C#]Partial 클래스(Partial Class) Partial Class Partial Class는 C# 2.0에 도입된 기능으로 클래스를 여러 파일에 정의할 수 있습니다. 클래스의 내용을 다른 파일로 분할할 수 있지만 논리적으로는 하나입니다. 응용 프로그램이 컴파일될 때 분할된 파일이 결합되기 때문입니다. 클래스를 여러 파일로 분할하려면 partital 키워드를 사용하여 Partial Class로 정의합니다. Partial Class 예제 다음 예제는 Partial Class를 구현하는 방법을 설명합니다. Person.cs라는 클래스 파일을 프로젝트에 추가하고 아래 소스코드를 Person.cs 클래스 파일에 붙여 넣습니다. partial class Person { // 필드 private string _name; private int _age; //.. C# 2022. 5. 18. [C#]메서드 숨기기(Method Hiding) 메서드 숨기기(Method Hiding) 부모 클래스 멤버를 숨기기 위해 new 키워드를 사용하는 것을 메서드 숨기기(Method Hiding)라고 합니다. 메서드 숨기기는 자식 클래스가 부모 클래스의 메서드를 다시 구현하기 위해 사용되며, 메서드 재정의(Method Overriding)와 유사합니다. 메서드 재정의는 부모 클래스의 메서드를 가상 메서드(Virtual Method)로 선언하여 자식 클래스에서 재정의할 수 있도록 합니다. 메서드 숨기기는 부모 클래스의 메서드가 가상 메서드(Virtual Method)로 선언되지 않더라도 부모 클래스의 메서드를 다시 구현할 수 있습니다. 메서드 숨기기 예제 다음 예제는 자식 클래스에서 new 키워드를 사용하여 메서드를 다시 구현합니다. class Parent.. C# 2022. 5. 16. [C#]가상 메서드(Virtual Method), Virtual 키워드 가상 메서드(Virtual Method) Virtual 키워드를 소개하기 전에 객체 지향 프로그래밍(OOP)의 특징인 상속과 재정의에 대해 이해하고 있는지 알아봅시다. 메서드 재정의는 상속과 밀접하게 관련 있는 객체 지향 프로그래밍의 특징입니다. 자식 클래스에서 부모 메서드의 매개 변수 및 반환 타입을 재정의하는 것을 메서드 재정의라고 합니다. C#에서 메서드 재정의를 허용 하기 위해 부모 클래스의 메서드를 virtual 키워드로 선언합니다. virtual 키워드로 선언된 메서드는 가상 메서드라고 부르기도 하며, 가상 메서드가 자식 클래스에서 재정의될 수 있음을 알립니다. 즉, virtual 키워드는 메서드 재정의를 허용하기 위해 사용됩니다. virtual 키워드 사용 방법 재정의가 허용되는 메서드에 v.. C# 2022. 5. 16. [C#]봉인 클래스(Sealed Class) 및 봉인 메서드(Sealed Class) 봉인 클래스(Sealed Class) 클래스가 다른 클래스에 상속되는 것을 원하지 않을 때 해당 클래스를 봉인 클래스(Sealed Class)로 선언할 수 있습니다. 봉인 클래스는 sealed 키워드로 선언합니다. // 봉인 클래스입니다. sealed class Parent { } // 봉인 클래스는 상속될 수 없습니다. class Child : Parent { } class Program { static void Main(string[] args) { } } 실행 결과 위 예제에서 sealed 키워드를 사용하여 밀봉 클래스 Parent를 만들었습니다. 밀봉 클래스는 다른 클래스에 상속될 수 없으므로 컴파일 에러가 발생합니다. 봉인 클래스 특징 봉인 클래스와 추상 클래스는 다릅니다. 봉인 클래스는 추상 .. C# 2022. 5. 15. [티스토리]누적 방문수 20만 달성 누적 방문수 20만 달성 2022년 5월 9일 월요일 누적 방문수 20만 달성하였다. 2022년 3월 초중순 10만 달성했으니 대략 한 달 하고 3주일 후 20만 달성한 걸로 보인다. 10만 달성 기념 포스팅을 메인 블로그가 아니라 서브 블로그에 작성해서 정확히 언제 10만 달성했는지 모르겠네... 현재 서브 블로그는 폐쇄하였다. 현재 평일 기준으로 3,000 트래픽, 주말 기준 1,000 트래픽 유입되고 있다. 수익은 1,000 트래픽 기준으로 1~2달러라고 생각하면 된다. 그러므로 평일은 3~6달러, 주말은 1~2달러 수익이 발생한다. 5월에는 100달러 달성할 수 있을 거라고 예상했는데, 아무리 봐도 안될 거 같다. 5월 수익은 대략 90~95달러 예상하고 있다. 앞으로의 계획 20만 달성해서 기분.. 티스토리/블로그 결산 2022. 5. 15. [C#]구조체(Struct) 구조체(struct) 구조체는 struct 키워드를 사용하여 값 형식(Value Types)을 정의하고 클래스는 class 키워드를 사용하여 참조 형식(Reference Types)을 정의합니다. 값 형식(Value Types) 값이 스택(Stack) 영역에 할당됩니다. 참조 형식(Referenct Types) 값이 힙(Heap) 영역에 할당됩니다. 스택(Stack) 영역은 값이 할당된 힙의 메모리 주소를 참조합니다. 구조체 정의 struct 키워드를 사용하여 구조체를 정의합니다. struct Person { public string name; public int age; } Person 구조체 내부에는 name과 age라는 필드가 존재합니다. 구조체에는 변수뿐만 아니라 메서드, 인덱서도 존재할 수 있습.. C# 2022. 5. 15. [JavaScript]Promise 병렬 처리 JavaScript 특징 Promise 병렬 처리하는 방법을 알아보기 전에 JavaScript의 두 가지 특성부터 알아봅시다. 싱글 스레드(single-thread) JavaScript는 싱글 스레드(Single-Thread) 방식이므로 명령어 또는 코드가 순차적으로 실행됩니다. 그러므로 동시에 2개 이상의 함수를 실행시킬 수 없습니다. 이벤트 루프(Event Loop) JavaScript는 싱글 스레드 방식으로 동작하므로 이론적으로 비동기 작업이 불가능합니다. 하지만, 싱글 스레드가 이벤트 루프에 의해 처리되므로 멀티 스레딩(Multi-Thread) 방식으로 동작하는 것처럼 보여줍니다. Promise Promise는 비동기 처리에 사용되는 객체입니다. JavaScript 특성인 이벤트 루프의 규범을 따.. JavaScript/JavaScript 문법 2022. 5. 13. [Java]기본 메서드 또는 디폴트 메서드(Default Method) 기본 메서드(Default Method) Java 8에 도입된 기본 메서드는 default 키워드를 사용하여 인터페이스(interface)에서 메서드를 구현하는 것입니다. 기본 메서드 도입 이전에는 인터페이스에 추상 메서드만 작성할 수 있었습니다. 추상 메서드는 메서드 본문이 없는 메서드입니다. 다음 예제는 인터페이스 내부에 메서드 본문이 없는 추상 메서드가 존재하므로 정상적으로 컴파일됩니다. public interface InterfaceTest { void printValue(String val); } 하지만, 다음 예제는 추상 메서드에 메서드 본문이 존재하므로 컴파일 에러가 발생합니다. public interface InterfaceTest { void printValue(String val) { .. Java 2022. 5. 12. [Java]메서드 참조(Method reference) 메서드 참조(Method reference)란? Java 8에 도입된 메서드 참조는 class::methodName 구문을 사용하여 클래스 또는 객체에서 메서드를 참조할 수 있습니다. 람다식(Lambda Expression)의 가장 큰 장점 중 하나는 코드가 짧아진다는 것인데, 람다식에 메서드 참조를 사용하면 코드를 더 간결하고 가독성 있게 만들 수 있습니다. // 람다식 str -> str.toString() // 메서드 참조 String::toString // 람다식 str -> str.length() // 메서드 참조 String::length // 람다식 (int x, int y) -> x.compareTo(y) // 메서드 참조 Integer::compareTo 메서드 참조는 이중 콜론(::)을.. Java 2022. 5. 11. [Java]제네릭 함수형 인터페이스(Generic Functional Interface) 제네릭 함수형 인터페이스(Generic Functional Interface)란? 제네릭 함수형 인터페이스는 함수형 인터페이스의 추상 메서드에 제네릭 타입을 사용하여 모든 타입을 허용하거나 타입에 대해 제약이 존재하는 인터페이스입니다. 람다식에서 타입 설정 불가능 람다식(Lambda expression)에 매개변수의 타입과 반환 타입을 설정할 수 없습니다. 다음 예제를 통해 알아봅시다. 다음은 Integer 타입의 두 매개변수를 가지며, Integer 타입의 값을 반환하는 추상 메서드가 존재하는 함수형 인터페이스입니다. @FunctionalInterface public interface IntegerFunctionInterface { Integer process(Integer x, Integer y); .. Java/함수형 인터페이스 2022. 5. 10. 이전 1 ··· 31 32 33 34 35 36 37 ··· 66 다음