Java

    상속과 컴포지션

    이펙티브 자바책에 상속보다는 컴포지션을 사용해라 라는 주제가 있다. 이 주제를 보며 어? 그런가? 라는 생각이 들어 정리해 보았다. ㅋㅋㅋ,,, 상속? 상속은 is-a 관계를 나타낸다. 예를 들면, 자동차가 차량 클래스로부터 상속받는 경우, 자동차는 차량이라고 할 수 있다. 장점 코드 재사용: 부모 클래스의 기능을 자식 클래스가 상속받기 때문에, 중복된 코드를 작성할 필요가 없어 코드 재사용성이 높아진다. 확장성: 자식 클래스는 부모 클래스의 특성을 확장하거나 변경할 수 있다. 새로운 메서드를 추가하거나 기존 메서드를 재정의하여 새로운 동작을 추가할 수 있다. 폴리모피즘(Polymorphism) 구현: 상속을 통해 여러 클래스가 동일한 인터페이스를 공유하고, 이를 통해 다형성을 구현할 수 있다.(객체지향..

    if-else vs try-catch: 언제 어떤 것을 사용해야 할까?

    코드를 짜다 예외처리를 할 때 어느 순간에는 if else 어떤 순간엔 try catch를 사용하고 있다는걸 발견하게 되었다. 순간 왜 이렇게 왔다갔다 하지 생각해보니 정확하게 쓰임세를 이해하지 못했다고 느껴 정리해봤다. 코드의 제어와 예외 처리로 그럼 차이점을 살펴보자. 'if - else': 조건부 분기 if else 문은 어떤 변수나 상황에 대한 조건문을 태우기 위해 사용되는 문법이다. if (조건) { // 조건이 참일 때 실행되는 코드 } else { // 조건이 거짓일 때 실행되는 코드 } 언제 사용하지? 다양한 조건에 따라 다른 동작을 수행해야 할 때 데이터 유효성 검사 또는 입력 값의 처리 프로그램의 흐름을 제어하고 조건에 따라 다른 동작을 수행해야 할 때 'try - catch': 예외처..

    [Java] Java 8에서 함수형 프로그래밍이 도입된 이유

    CS 공부를 하고 있는데 Stream은 함수형 프로그래밍이란 것을 알게 되었다. 그때 든 생각이 어 왜 자바는 명령형 프로그래밍인데 Stream은 함수형 프로그래밍이지?라는 궁금증이 들어서 찾아보았다. 그럼 일단 명령형 프로그래밍부터 알아보자 명령형(Imperative) 프로그래밍 명령형 프로그래밍이란 프로그램의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종이다. 이 패러다임에서는 프로그램의 상태를 변경하기 위해 명령어를 사용하며, 명령문이 순차적으로 실행되면서 프로그램의 상태가 변화한다. 쉽게 설명하자면, 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이라고 볼 수 있다. 명령형 프로그래밍에서는 프로그램이 수행해야 할 작업을 명시적으로 기술하며, 명령문의 순서에 따라..

    [Java] copyOf(), copyOfRange(), arrayCopy()

    배열을 복사하기 위해 for문을 사용하다 시간초과가 떠서 다른 방법을 찾다가 알게되었다. copyOf(), copyOfRange(), arrayCopy() 는 배열을 복사하는 방법이다. copyOf() copyOf() 메서드는 java.util.Arrays 클래스에 포함된 배열 복사 메서드이다. java.util 패키지에 포함되어 있으므로 Arrays의 메서드들을 사용하기 위해서는 import가 필요하다. import java.util.Arrays;지정한 배열을 인덱스 0부터 원하는 길이만큼 복사한다. 원본 배열이 입력한 길이보다 클 경우 입력한 길이 이후의 인덱스는 제거되어 copy 되고, 원본 배열이 입력한 길이보다 작을 경우 원본 배열에서 존재하지 않는 인덱스 이후의 값은 배열의 타입 기본값으로 초..