본문 바로가기

Computer Science/JAVA10

[JAVA] String, StringBuffer, StringBuilder, StringJoiner 차이 String, StringBuffer, StringBuilder 차이를 알아보려고 한다. 문자열을 다루기 위해서 함수는 기본적으로 String와 StringBuilder 컬렉션 메서드들은 암기해두는 것을 추천! 목차 1. 정의 및 함수 비교 2. StringBuffer와 StringBuilder 속도 비교 3. StringJoiner 존재 이유 1. 클래스 정의 및 함수 비교 String 클래스 : 불변하다는 특징 때문에, 문자열 변경 시 이전과 다른 메모리 주소에 새로운 문자열이 써진다. 주요 함수 함수 반환값 설명 charAt(int idx) char 인덱스에 존재하는 문자 반환 indexOf(char ch) indexOf(String str) int 앞에서부터 찾고자 하는 값의 인덱스를 반환 못찾을.. 2022. 10. 21.
[JAVA] 제너릭과 List 제너릭 알고리즘 : 컬렉션에 적용할 수 있는 메서드이다. - static으로 선언된 함수 집합 - 요소 타입에 관계 없이 사용 가능 - 컬렉션 중에서 조건을 만족하는 경우에 사용 가능 리스트 알고리즘 : 리스트에 적용할 수 있는 메소드이다. - 리스트 상속 모든 클래스에 적용 가능 - sort(), shuffle(), reverse(), rotate(), swap(), replaceAll(), fill(), binarySearch() 메소드 등 위의 두가지를 동시에 적용할 수 있는 예시 ① Collections.sort 함수 : 리스트를 상속한 모든 컬렉션 객체를 사용 가능 - sorting한 결과를 정렬 - 전제 조건은 list의 요소 타입이 Comparable Interface를 상속해야 한다. (비.. 2020. 11. 20.
[JAVA] 기본 클래스, Object 기본 클래스, Object 클래스 : 최상위 슈퍼 클래스이며 모든 메소드가 Object 메소드를 상속하고, Object의 일반 메소드를 오버라이드하여 사용할 수 있다. (메소드 종류) - protected Object clone() throws CloneNotSupportedException : 객체의 복사를 생성하여 리턴한다. - public boolean equals(Object obj) : 주어진 다른 Object obj가 동일 여부를 리턴해준다. - public final Class getClass() : 객체의 런타임 클래스를 돌려준다. - public int hashCode() : 객체의 해시 코드 값을 반환한다. - public toString() : 객체를 문자열로 반환한다. ① Clone.. 2020. 11. 20.
[JAVA] 컬렉션이란? 제너릭을 이용하는 대표적인 사례 >> Collection Framework 컬렉션이란? : 여러 개의 요소를 묶어 하나의 단위로 만드는 객체이다. (=자료구조) - 인터페이스 : 추상 클래스 - 구현 : 구체클래스 - 알고리즘 : 함수의 집합 컬렉션 프레임워크가 필요한 이유 : 모든 SW는 데이터를 여러 개 모아서 관리하는 기능을 포함한다. (CRUD, Create/Read/Update/Delete) 리스트, 큐, 집합, 맵과 같은 형태로 제공할 수 있는데, 재사용 가능성이 크므로 라이브러리로 제공한다. -> 다양한 자료구조의 코드 간에 중복 제거(재사용의 최대화) // 우리가 여태 사용해 왔던 ArrayList 또한 컬렉션 프레임워크에 해당한다. 자바의 컬렉션 프레임워크 장점 1) 계층적 인터페이스 사.. 2020. 11. 3.
[JAVA] 제너릭이란? "인터페이스의 한계" 인터페이스를 통해 공통 기능을 가지는 클래스를 구별하지 않고 사용할 수 있다. 또한 슈퍼 클래스의 역할을 하고, 가상 함수 동적 바인딩을 통해 다형성을 가진다. 하지만 만약 구체 클래스를 통해 각 클래스를 구별해야 할 경우엔 어떻게 해야 할까? 다운 캐스팅을 통해 구체 클래스를 구별해야한다. 다운 캐스팅의 문제점 1) 컴파일러가 다운 캐스팅의 오류를 발견하지 못한다. 2) 실행 시 타입이 맞지 않으면 TypeCastException 오류를 발생시킨다. 3) 실행 시 타입을 검사하는 instanceof 메서드는 매우 비싼 연산이다. 4) 잦은 다운 캐스팅 자체가 가독성이 저하된다. 위와 같은 다운 캐스팅의 문제점을 가지기 때문에 우리는 "제너릭"이 필요한 것이다. 제너릭이란? : 클래.. 2020. 11. 3.
[JAVA] 추상화란? 추상화란? : 소프트웨어에서 구체적이고 개별적인 것이 아니라 "개념"이나 "표준"과 같은 추상화된 코드를 작성하여 재사용성을 높이는 것 - 상속 : 공통부분을 뽑아서 슈퍼 클래스로 만드는 것이 상속 - 인터페이스 : 상속에서 한걸음 더 나아가 개념(기능)만을 추출 예를 들어, Item, User, Order 가 존재하고, 각 객체 클래스의 코드 재사용을 위한 공통 부분(readAll, printAll, matches 등)을 뽑아서 만든 것이 Manager 클래스이다. 상속은 다중 상속이 불가하므로 Manager 클래스의 객체 요소들을 만들어 Item, User, Order 클래스들을 관리하는데, 각 클래스 간의 이용을 쉽게 이용하기 위해 Manageable 인터페이스를 사용하여 "기능"들만 추출한다. M.. 2020. 10. 23.