*JAVA* 59

[java] StringPool

자꾸 까먹는거 위주로 메모... String 클래스 - 불변클래스 toString() : Object의 메소드로 원래는 16진수형태의 주소값이 반환되나 String 클래스에서는 실제 담겨 있는 문자열이 반환되도록 오버라이딩 되어있다. cf. 배열의 경우, to String() 참조하는 주소값 반환 따라서 Arrays.toString(배열) 써야 안에 값이 출력됨 hashCode() : Object의 메소드로 원래는 16진수의 주소갑을 10진수 형태로 변환해서 int형으로 리턴해주는 메소드 But, String 클래스에서는 주소값을 변환해주는 것이 아닌, 실제 담긴 문자열을 기반으로 해시코드값을 만들어 반환 => 실제 문자열을 주소값 10진수 정수형태로 반환하도록 오버라이딩! cf. String의 진짜 주..

*JAVA* 2022.02.07

[java] 제네릭스(Generics)

컴파일시 타입을 체크해주는 기능 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 객체의 형변환을 사용할 필요가 없다. => 내가 사용하고 싶은 타입만 사용할 수 있게 해준다. 1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있습니다 2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다.

*JAVA* 2021.11.22

[java] 컬렉션 프레임웍 - ProperTies

특징 - 키와 값을 String 타입으로 제한한 Map 컬렉션이다. - 프로퍼티(~.properties)파일을 읽어 들일 때 주로 사용한다. 프로퍼티(~.properties)파일 - 옵션 정보, 데이터베이스 연결 정보, 국제화(다국어)정보를 기록한 텍스트 파일로 활용 - 어플리케이션에서 주로 변경이 잦은 문자열을 저장해서 유지 보수를 편리하게 만들어 줌 - 키와값이 = 기호로 연결되어 있는 텍스트 파일로 ISO 8859-1 쿤자셋으로 저장 - 한글을 유니코드로 변환되어 저장 그러면 왜 우리는 String, String으로 다뤄야하는것인가?? Properties의 용도 => 파일 입출력 하기 위함 key + value 세트 파일로 기록한다던가, 파일로부터 읽어오는 용도로 많이 사용됨 => .properti..

*JAVA* 2021.11.22

[java] 컬렉션 프레임웍 - HashMap

Map 컬렉션의 특징 및 주요 메소드 키(key)와 값(value)으로 구성된 Map.Entry객체를 저장하는 구조 키와 값은 모두 객체 키는 중복될 수 없지만 값은 중복 저장 가능 ※ 키 객체는 hashCode()와 equals()를 재정의해서 동등 객체가 될 조건을 정해야 한다. (중복을 방지하기 위해) 그래서 보통은 키타입으로 String을 많이 사용 [표현법] Map map = new HashAMap(); 객체 추가 - V put(K key, V value) : 주어진 키와 값을 추가, 저장이 되면 값을 리턴 객체 검색 - boolean containsKey(Object key) : 주어진 키가 있는지 여부 - boolean containsValue(Object value) : 주어진 값이 있는지..

*JAVA* 2021.11.22

[java] 컬렉션 프레임웍 - HashSet

- 수학의 집합에 비유될 수 있다. - 저장순서가 유지되지 않는다. - index 개념 없음(순서 보장 X) - 객체를 중복해서 저장할 수 없다. - 하나의 null만 저장할 수 있다. HashSet 특징 : 값이 추가될 때마다 equals()메소드와 hashCode()로 비교 후 둘 다 결과가 true일 경우 동일 객체로 판단 equals() : 현재 객체의 주소값을 비교해서 결과 반환 (같으면 true) hashCode() : 현재 객체의 주소값을 해싱해서 10진수로 반환 총정리! HashSet에 객체를 담을 때 내부적으로 equals메소드랑 hashCode 메소드를 기준으로 값이 일치하는지를 비교하고 담는다. => equals결과가 true이면서(그리고) hashCode의 값도 일치한다면 동일객체로..

*JAVA* 2021.11.21

[java] 컬렉션 프레임웍 - Iterator

컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스 - 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것 - 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용 - List와 Set이 구현을 했다. - List와 Set이 구현한 인터페이스 Collection에 iterator()가 정의 되어 있기때문에 Map에는 iterator()가 없다. - ListIterator는 Iterator의 접근성을 향상시킨 것 (단방향 → 양방향) : previous() 이전 요소도 알 수 있다.(List 인터페이스를 구현한 컬렉션에서만 쓰일 수 있음. 잘 쓰이진 않음) - boolean hasNext() : 읽어 올 요소가 남아있는지 확인한다. 있으면 ..

*JAVA* 2021.11.21

[java] 컬렉션 프레임웍 - LinkedList

- 연속적인 배열과 달리 LinkedList는 불연속적으로 존재하는 데이터를 연결(link) - 배열의 단점을 보완 크기변경불가를 가능하도록 추가,삭제시간을 향상시킴 객체본인 다음 객체가 누군지 알고 있음(Node) * doubly linked list - 이중 연결리스트, 접근성 향상 LinkedList의 단점이라 함은 데이터 접근성이 나쁘다. 요소 다음의 요소만 알고 있기때문. 그를 보완하여 나온것이 doubly linked list 객체 이전요소와 다음의 요소를 알 수 있음(앞뒤로) * doubly circular linked list - 이중 원형 연결리스트 ArrayList vs. LinkedList 순차적으로 데이터를 추가/삭제 - ArrayList가 빠름 비순차적으로 데이터를 추가/삭제 - ..

*JAVA* 2021.11.21

[java] 컬렉션 프레임웍 - ArrayList

- List 인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용 - ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일 ArrayList와 달리 Vector는 자체적으로 동기화처리가 되어 있다. - 데이터의 저장공간으로 배열을 사용한다. (배열기반) - 객체 제거하게 되면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨짐 - boolean add(Object o) : 객체 추가하기 - void add(int index, Object element) : 특정 인덱스에 추가 - Object set(int index, Object element) : 특정 인덱스의 요소 수정 - Object remove(int index) : 리스트 안의 요소 삭제 - int s..

*JAVA* 2021.11.21

[java] ObjectInputStream / ObjectOutputStream

객체 입출력 보조 스트림 객체단위를 파일에 출력하고자 할 때 필요한 보조스트림 문자 입력/출력 스트림에는 사용할 수 없다. ObjectInputStream ois = new ObjectInputStream(바이트입력스트림); ObjectInputStream oos = new ObjectOutputStream(바이트출력스트림); oos.writeObject(객체); //객체 출력 객체타입 변수 = (객체타입) ois.readObject(); //객체 입력 직렬화가 가능한 클래스(Serializable) 자바는 Serializable 인터페이스를 구현한 클래스만을 직렬화할 수 있도록 제한 ; 직렬화란 클래스의 모든 필드들을 바이트스트림을 통해 출력시키기위한 일직렬로 byte화한 모양새이다. writeObje..

*JAVA* 2021.11.21

[java] StringBuffer, StringBuilder

문자열 결합 연산 + String은 내부의 문자열을 수정할 수 없다. (불변클래스) 문자열을 추가하거나 삭제해서 수정시 또다른 객체를 생성. 메모리의 불필요한 낭비가 발생 그것을 보완해서 나온것이 StringBuffer/Stringbuilder - StringBuffer 버퍼(buffer : 데이터를 임시로 저장하는 메모리)에 문자열을 저장한다. 버퍼 내부에서 추가, 수정, 삭제 작업을 할 수 있다. 멀티 스레드환경에서 사용가능 - StringBuilder StringBuffer와같이 버퍼에 문자열을 저장하고 추가,수정,삭제 작업 모두 가능하다. 단 하나 차이점은 단일 스레드환경에서 사용 가능 - append() : 문자열데이터 끝부분은 문자열 추가 - insert(int offset, ....) : 문..

*JAVA* 2021.11.21