전체 글

· 객체지향
https://tech.kakaobank.com/posts/2411-solid-truth-or-myths-for-developers/ 모든 개발자가 알아야 할 SOLID의 진실 혹은 거짓기술 면접 자리에서 SOLID 5대 원칙에 대한 질문을 받아보신 분이라면 주목! 이 글에서는 SOLID 원칙의 역사와 장점, 그리고 각각의 원칙에서 중요한 점을 면접 상황 예시를 통해 가볍게 풀어보았습tech.kakaobank.com  1. 변경에 유연한 구조 '변경에 유연하다'는 말은 곧 '결합도는 낮고, 응집도는 높은 구조'를 의미합니다.예를 들어 A라는 회사의 시스템이 작은 기능 추가에도 수십 개의 테스트가 깨질 만큼 복잡하다면, 기능을 자주 추가하는 것이 어려울 것입니다. 이때 매달 새로운 기능을 출시할 수 있는 ..
이름 없는 익명 함수(Anonymous Function)로, 값처럼 취급되어 변수에 저장되거나 함수의 매개변수, 반환값으로 사용 가능.Lambda의 역할일급 시민(First-Class Citizen)으로서의 함수: 함수 자체를 값처럼 다룸.고차 함수 구현: 함수를 매개변수로 받거나 반환값으로 제공 가능.순수 함수 표현: 상태를 변경하지 않고 동일한 입력에 동일한 출력을 제공.스트림 API 활용: 선언적으로 데이터 필터링, 매핑, 집계 등을 수행.Lambda의 장점코드 간결성: 익명 클래스를 대체하여 짧고 간결한 코드 작성 가능.가독성 향상: 함수의 동작에 집중 가능해 이해하기 쉬운 코드 작성.함수형 프로그래밍 지원: 고차 함수와 조합 가능, 선언적 프로그래밍 구현.병렬 처리 용이: 스트림 API와 결합하..
객체 생성1단계: 메모리 할당new 키워드를 사용하여 Heap 영역에 메모리 할당2단계: 생성자를 사용하여 객체 초기화클래스 이름과 괄호를 사용Date now = new Date(); 객체 사용메소드 호출 등 객체 제거원시 메모리 회수메모리 할당 해제  final 클래스슈퍼 클래스로 동작하도록 설계하지 않은 클래스를 파생하는 것은 위험할 수 있음final로 선언된 클래스에서는 서브 클래스를 파생할 수 없음Java의 String, StringBuilder등의 클래스는 final로 선언됨
배열 자체를 넘기면 pass by reference배열에 있는 요소를 넘기면 pass by valuepublic class Sample { public static void changeSomething(int i) { i++; } public static void main(String[] args) { int[] i = {0}; changeSomething(i[0]); System.out.println(i[0]); }}>> 0  Enum Enum 사용 예시public enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, ..
추상화 (Abstraction)추상화는 불필요한 것을 선택하고 제거하는 것 추상화(abstraction)는 대상에 대해 맥락에서 필요한 것에 대한 최소한의 형태가 남을 때까지 불필요한 것을 제거하는 전략입니다. 좋은 추상화는 중요하지 않은 세부 사항을 제거하고 중요한 사항들에 집중할 수 있도록 합니다.   캡슐화 (Encapsulation)  데이터와 메소드의 결합데이터와 메소드를 하나의 캡슐로 결합캡슐 경계는 내부와 외부를 결정캡슐화(Encapsulation)에는 중요한 두 가지 관점이 있습니다.데이터와 기능을 단일 개체로 결합개체의 모든 멤버(메소드, 변수 등)에 대한 접근 가시성 제어 왜 캡슐화를 해야 하는가?제어 허용메소드를 통해서만 접근 가능하도록변경 허용private 데이터 타입이 변경되어도 ..
public class Sample { public static void method1() { System.out.println("Method 1"); } public void method2() { System.out.println("Method 2"); } public static void main(String[] args) { method1(); method2(); } } 위와 같이 메서드를 static으로 선언하거나 그냥 선언할 경우가 있는데,method1()은 정상 작동하지만, metho2()는 Cannot make a static reference to the non-static method metho..
보호되어 있는 글입니다.
프로그램을 짜던 중 리스트에 있는 원소가 저장되었는지 확인하고 싶어 테스트를 하고 싶은데 어떤 메소드가 좋은지 찾아보다가 contains 메소드를 찾아서 알아보았다.  먼저 아래와 같이 core.api.Assertions를 import해주는게 우선.import static org.assertj.core.api.Assertions.*;    containscontains 메소드는 단순하다.중복 , 순서에 관계 없이 값만 일치하면 테스트가 성공한다. void containsTest() { List list = Arrays.asList(1, 2, 3); // Success: 모든 원소를 입력하지 않아도 성공 assertThat(list).contains(1, 2); // Success: ..
말동말동현
동현s토리