728x90

자바스터디 25

[Java] HashMap

HashMap 이란? Map 인터페이스를 구현하고 있는 대표적인 자바 클래스. key-value쌍으로 되어있다. Map의 대표적인 특징은 key는 정확히 하나의 value만 가질 수 있다. public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { } HashMap 클래스의 내부는 위와 같은 상속, 구현 관계를 가지고 있다. HashMap은 왜 필요할까? List 형태를 사용하지 않고 HashMap을 사용하는 이유는 바로 성능 때문이다. 만약 List를 사용했다면 검색하는데 있어 시간복잡도는 O(n)으로 나타날것이다. 반면 HashMap은 삽입, 검색 시간에 시간복잡도 O(1)이라는 이점을 가지고 있다. key값의 ..

JAVA 2022.01.26

[Java] StringTokenizer hasMoreTokens() nextToken()

백준 알고리즘을 하다가 Scanner 대신 Buffereader를 많이 사용하는걸 연습했었고, 그 과정에서 많이 보게된 StringTokenizer hasMoreTokens() 그리고 nextToken() 이 친구들이 무엇인지 한 번 살펴보고자 한다. 일단 여기서 자꾸 언급되는 토큰(Token) 이란? ※ 컴파일러는 번역할 경우 먼저 워드해석이라 불리는 기호열로서 입력된 소스 프로그램에서 구문 규칙에 기초하여 이름표, 연산자, 딜리미터 등의 식별을 하고, 내부데이터의 열로 변환. 이 워드해석을 하여 식별되는 단위를 실러블(syllable)이라 하며, 그 내부데이터 표현을 토큰이라함(출처: 네이버 사전) StringTokenizer - 사용자가 지정하는 구분자를 경계로하여 문자열을 나눠주는 Class - ..

JAVA 2022.01.24

[Java] 불필요한 객체 생성를 피하기 이펙티브 자바 new String

똑같은 기능의 객체를 매번 생성하는것보다는 객체 하나를 재사용하는편이 나을때가 많다. 두 코드는 과연 같을까? String str = "RomaMan";개선된 버젼 String str = new String("RomaMan");//하지 말아야할 행위! new String("RomaMan")의 경우는 실행 될때마다 String 인스턴스를 새로 만들게 된다. 생성자에 넘겨진 "RomaMan" 자체가 이 생성자로 만들어내려는 String과 기능적으로 똑같기 때문이다. 만약 이 문장이 반복문이라 빈번히 호출되는 메서드 안에 있다면 쓸데없는 String 인스턴스가 수백만개가 만들어 질 수 있다. 개선된 버젼은 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용하게 된다. 더불어 이러한 방법을 ..

JAVA 2022.01.21

[Java] Spring 토비의 스프링

정리 - 예외를 잡아서 아무런 조취를 취하지 않거나 의미 없는 throws 선언을 남발하는 것은 위험. - 예외는 복구하거나 예외처리 오브젝트로 의도적으로 전달하거나 적절한 예외로 전환 - 좀 더 의미 있는 예외로 변경하거나, 불필요한 catch/throws를 피하기 위해 런타임 예외로 포장하는 두 가지 방법의 예외 전환 - 복구 할 수 없는 예외는 가능한 빨리 런타임 예외로 전환하는것이 바람직 - 애플리케이션의 로직을 담기 위한 예외는 체크 예외로 만듬 - JDBC의 SQLException은 대부분 복구 할 수 없는 예외이므로 런타임 예외로 포장해야함 - SQLException의 에러코드는 DB에 종속되기 때문에 DB에 독립적인 예외로 전환될 필요가 있음 - 스프링은 DataAccessException..

JAVA 2021.07.26

[Spring] 1장 오브젝트와 의존관계(2)

[Spring] 1장 오브젝트와 의존관계(1) 스프링이란? 개발에 사용되는 애플리케이션 프레임워크. 개발을 빠르고 효율적으로 할 수 있도록 틀과 프로그래밍 모델, 기술 API 등을 제공 1) 애플리케이션 기본틀 - 스프링 컨테이너 독립적으 itkjspo56.tistory.com 지난 시간에 이어서... [관계설정 책임의 분리] public UserDao(ConnectionMaker connectionMaker){ this.connectionMaker = connectionMaker; } 수정한 생성자의 모습. 이전의 DConnection이 사라진 이유는 DConnectionMaker를 생성하는 코드 UserDao와 특정 ConnectionMaker 구현 클래스의 오브젝트 간 관계를 맺는 책임을 담당하는 ..

JAVA 2021.06.08
728x90