목록자바 (4)
공부하는 스누피
멤버 클래스(member class) / 중첩 클래스(nested class) 다른 클래스 안에 정의된 클래스. 자신을 감싼 outer class에서만 쓰여야 하고, 그 외에 쓰임새가 있다면 top-level 클래스로 만들어야 한다. (클래스 파일 하나 더 만들란 얘기다.) 종류: static 멤버 클래스, non-static 멤버 클래스, 익명 클래스, 지역 클래스 static 멤버 클래스를 제외한 나머지는 다 inner class에 해당한다. 정적 멤버 클래스 (static member class) 다른 클래스 안에 선언되고, outer 클래스의 private 멤버에도 접근할 수 있다. 바깥 인스턴스와 독립적으로 존재할 수 있다. 멤버 클래스에서 바깥 인스턴스에 접근할 일이 없다면 정적 멤버 클래스로..
equals 메서드는 Object 클래스에 정의되었지만, 객체 인스턴스 간 논리적 동치를 확인하기 위해 종종 재정의된다. 이 메서드를 재정의한다면 반드시 hashCode 메서드도 재정의해야 한다. hash를 사용하지 않는 클래스라도 Hash 기반의 자료구조의 요소일 경우 hashCode를 사용하게 되기 때문이다. Object 클래스에서는 equals 메서드를 단순 주소값 비교로만 사용한다. ==와 같은 역할을 한다고 보면 된다. Object를 상속받은 String같은 클래스의 경우 부모 클래스의 equals 메서드를 그대로 쓸 수는 없다. "hi"와 "hi"가 논리적으로는 같은 문자열인데 다른 String 인스턴스 변수에 들어 있으면 주소값을 비교해 다른 객체라는 결과가 나와버린다. 그래서 String뿐..
1. 의존 주입 Dependency Injection 한 클래스가 다른 클래스의 메소드를 실행할 때 이를 '의존'한다고 표현한다. 의존 관계는 변경에 의해 영향을 받는 관계로, B 클래스가 A 클래스의 메소드를 실행할 때 A 클래스에 변경이 이루어지면 B 클래스에 영향이 가게 된다. 여기서 B 클래스의 메소드를 실행하는 C 클래스가 있다면, 이 변경은 C 클래스까지 전파된다. 의존 관계를 구현하기 가장 쉬운 방법은 B 클래스에서 A 클래스 객체를 직접 생성하는 방법이다. DI(Dependency Injection)는 의존하는 객체를 직접 생성하지 않고 의존 객체를 전달받는 방식을 사용한다. 즉, DI란 의존하는 객체를 전달받아서 사용하는 패턴이다. DI는 의존 객체 변경이 유연하다는 것이 큰 장점인데, ..
https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 생각 과정 - 완주자, 참가자 한명씩 이름을 비교하려면 시간복잡도가 O(n^2)이나 된다. - 순회를 최대한 적게 하는 방법=> 이름 첫글자로 사전을 만들어서 비교하자 => 이차원 배열로 만들었지만 요소 삭제/추가하는 과정에서 한번 순회가 필요함. - ArrayList 배열로 만들면 추가적인 for문 없이 사전을 간편하게 관리할 수 있음...