◎ Java/Java☕

    [JAVA] Java 개발에서 상속(Inheritance)보다 위임(Delegation)을 제안하는 이유는? [상속 구조보다 위임을 활용한 개발을 제안하는 이유]

    - 상속 구조보다 위임을 활용한 개발을 제안하는 이유 1. 상속(Inheritance)이란? 부모 클래스의 특성(메서드와 속성)을 자식 클래스가 물려받는 기법이다. (클래스 사이의 관계) 자식 클래스는 부모 클래스의 멤버를 사용하거나 확장하여 새로운 기능을 추가할 수 있으며, 계층 구조를 형성하고 코드를 재사용할 수 있다. 다만, 상속 체인이 깊어지면 클래스 간의 관계가 복잡해지고 변경 사항이 전파될 가능성이 있다. class Animal { public void eat() { System.out.println("밥먹기"); } public void move() { System.out.println("움직이기"); } } /* extends로 상속 */ class Dog extends Animal {} ..

    [JAVA] 객체 상속 시, 인스턴스는 어떤 순서로 생성될까? [super(), Object Creation in Java]

    - 객체 상속 시, 인스턴스는 어떤 순서로 생성될까? 객체를 상속하고 있을 경우, 인스턴스의 생성 순서는 어떻게 될까? 아래와 같이 Student 객체는 Person 객체를 상속하고 있다고 가정해보자. public class Person { // 내용 생략 } public class Student extends Person { // 내용 생략 } 여기서 Student 인스턴스를 생성할 경우, 아래와 같은 구조가 된다. (모든 객체는 Object 객체를 상속하고 있다.) 객체는 본인보다 상속 받은 상위 클래스를 먼저 인스턴스화 한 뒤, 마지막에 본인의 인스턴스를 생성한다. 상위 클래스의 생성자를 super()로 호출하며, 코드로 보면 아래와 같다. public class Person { public Per..

    [JAVA] Map에서 new Map과 clear()의 차이 [List 안에 Map을 담을 때 clear를 사용하면 안될까?]

    - Map에서 new Map과 clear()의 차이 for 문을 활용하여 List 안에 Map을 담는 경우, Map 객체를 하나만 생성하고 clear() 하여 재사용하는 방식을 생각해볼 수 있다. 이 방법은 좋은 방법일까? import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test { public static void main(String[] args) { List list = new ArrayList(); List list2 = new ArrayList(); Map map = new HashMap(); for(int i = 0 ; i < 3 ; i++) ..

    [JAVA] 자바(Java)에도 호이스팅(Hoisting)이 적용될까? [자바 내 변수와 메서드 선언 순서, 메서드 시그니처]

    - 자바(Java)에도 호이스팅(Hoisting)이 적용될까? - 호이스팅(Hoisting)이란? 호이스팅(Hoisting)은 주로 JavaScript와 같은 일부 언어에서 변수 선언이나 함수 선언을 해당 스코프의 최상단으로 끌어올리는 동작을 말한다. 호이스팅은 변수와 함수 선언이 실제 코드의 위치보다 앞서서 실행되는 것처럼 동작하도록 하는 것이며, 주로 컴파일러나 인터프리터의 동작 방식에 의해 이루어진다. console.log(name); // undefined. 호이스팅으로 인해 에러 발생 X var name = "yermi"; - Java에서 변수 선언 순서 Java에서 변수의 선언 순서는 변수가 사용되기 전에 해당 변수가 이미 선언되어 있어야 함을 의미한다. 변수는 선언된 위치부터 해당 블록 내에..

    [JAVA] short 타입과 byte 타입을 연산하면 어떤 결과가 나올까? [Java 연산 처리 최소 단위와 산술 변환]

    - short 타입과 byte 타입을 연산하면 어떤 결과가 나올까? Java에서 short나 byte와 같은 작은 정수형 타입은 산술 연산을 수행할 때 int 타입으로 자동으로 형변환된다. (정수형 연산 시 발생하는 오버플로우(overflow)나 언더플로우(underflow)를 방지하기 위한 것) 예를 들어, short 타입 변수 s1과 s2를 더하면 결과는 int 타입으로 자동 형변환되며, 그 결과를 다시 short 타입 변수에 대입하려면 명시적인 형변환을 수행해야 한다. [JAVA] 산술 변환(usual arithmetic conversion) [피연산자 타입 일치를 위한 자동 형변환] 1. 산술 변환(usual arithmetic conversion) 이항 연산자는 두 피연산자의 타입이 일치해야 연..