자바 50

[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] 컬렉션 프레임웍 - 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] StringTokenizer 클래스

문자열을 분리시키는 방법 1. 구분자를 제시해서 해당 문자열을 분리시키는 방법 => 배열이용 2. 분리된 각각의 문자열들을 토큰으로 취급하는 방법 => 토큰이용 - String의 split()메소드 : 반환형 Stirng[] 정규표현식을 구분자로해서 부분 문자열을 분리한 후, 배열에 저장하고 리턴 - StringTokenizer 각각의 문자열을 토큰으로 처리 java.util.StringTokenizer 클래스를 이용하는 방법 [표현법] StringTokenizer stn = new StringTokenizer(문자열, 구분자); 객체 생성 countTokens() : 반환형 int, 꺼내지 않고 남아있는 토큰의 수 hasMoreTokens() : 반환형 boolean, 남아 있는 토큰이 있는지 여부 n..

*JAVA* 2021.11.20

[java] Math 클래스

수학 계산에 사용할 수 있는 메소드와 상수필드를 제공한다. Math 클래스의 특징 - java.lang이라는 패키지 안에 존재한다. - 모든 필드와 메소드가 다 static으로 되어있다. 때문에 객체 생성없이 Math. 으로 바로 사용 가능 - 객체를 생성할 필요가 없으므로 생성자가 private이다. Math클래스의 메소드와 상수필드 - Math.PI : 원주율 상수, 3.14 - Math.abs() : 반환형 int/double, 절대값 - Math.ceil(double) : 반환형 double , 올림 - Math.round(double) : 반환형 long, 소수점 첫째자리에서 반올림 - Math.floor(double) : 반환형 double, 내림 - Math.max(a, b) : 반환형 in..

*JAVA* 2021.11.20