본문 바로가기

전체 글

(26)
JAVA Collection Framework 3: HashSet을 통한 Hash 탐구 hashCode()와 equals()의 오버라이딩. 도대체 다른 컬렉션들은 안하는 짓을 왜! 귀찮게 HashSet을 구현할 땐 해야하는지 의문이 생겨 찾아보게 되었다. 찾다보니 설명을 다 들었던 것이라는 걸 깨달아서 놀랐다. 내가 이해를 못하고 들었을 뿐. HashSet은 동일한 값을 허용하지 않는다. 이를 위해서 기존에 가지고 있는 값에 동일한 것이 있는지 확인이 필요하다. 특히 HashSet에 넣는 값이 객체라면, Object 객체로부터 내려오는 equals(), hashCode() 메서드를 오버라이딩 해야 하는데 그 이유는 객체 자신과 Object를 비교하고 1. 객체의 hashCode() 를 호출해 비교하고 그 값이 같다면, 2. equals() 를 호출해 동일한 객체인지 확인하기 때문이다. (즉..
JAVA Collection Framework 2: HashMap Map - HashMap key + value 를 세트로 담음 해시함수로 해시테이블에 데이터 저장하고 검색함 = 해시함수에 키를 넣으면 해시코드로 바꿔 그 위치에 줄줄이 저장 저장, 검색 (서랍에 번호 붙여 관리하는 것처럼) 데이터 추가 .put(key, value) 순서 유지 X 키값 중복 허용X 키 값이 있는 데이터 반환 .get(Object key) 담겨 있는 객체 갯수 반환 .size() 해당 키 값 찾아 새로운 value 값으로 수정 .replace(key, value) 해당 키 값 찾아 키, 값 세트 삭제 .remove(Object key) 전체 목록 출력하고 싶다면? → Iteratore 호출 불가: List, Set 계열만 사용 가능 → KeySet 혹은 MapSet 이용
JAVA Collection Framework 1: ArrayList, HashSet Collection Framework란? 자바를 배울 때 배열을 배우게 된다. 컬렉션은 이 배열을 좀 더 진화시켰다고 생각하면 된다. 배열처럼 여러 요소를 한 그룹으로 묶어 효율적으로 사용하기 위해 쓰인다. 다만 배열은 한 번 크기를 고정하면 수정하기 힘든데, 컬렉션은 크기가 가변적이기 때문에 배열을 단점을 극복할 수 있다. API의 한 종류로 자료 구조를 담당하는 알고리즘을 인터페이스로 구현해 놓았다. + 컬렉션은 제네릭과 함께 주로 사용 된다. 예) ArrayList list = new ArrayList(); 대부분의 자바 컬렉션 프레임워크(Collection Framework)에는 객체만 저장할 수 있다. 이는 제네릭스(Generics)를 통해 보장된다. 제네릭스를 사용하여 컬렉션을 선언할 때, 해..
JAVA API 2: Warpper 클래스 Wrapper 클래스 : 기본 자료형 변수를 객체로 변환 기본 자료형을 감싸 객체로 만든다는 의미의 Wrapper 클래스 기본자료형 Wrapper클래스[객체] boolean Boolean char Char byte Byte short Short int Int long Long float Float double Double * 왜 사용하는가? 객체(Object) 로 활용 : null 값을 넣거나 다형성 적용, Object 클래스 상속해 (toString() 같은) 메서드 사용 가능 객체만 사용하는 클래스, 인터페이스 사용 : Collection Framework 데이터 구조는 객체만 저장(Gemerics 타입에 객체만 사용 가능) 멀티쓰레딩 동기화 지원 시 객체 필요 래퍼 클래스는 기본형을 객체로 변환한다..
JAVA API 1: Math, String API란? 자바로 코딩할 때 필요한 기능을 미리 만들어둔 것을 말한다. 개발에 필요한 주요 기능을 미리 만들어 쉽게 쓸 수 있도록 클래스 라이브러리로 모아놓은 것이다. 개인적으로 엑셀에 함수네라고 생각했다. 누가 만들어둔 함수를 자바식으로 쓰는것 Math 클래스 : 수학적인 작업을 할 수 있게 구현 java.lang.Math 패키지 import 해서 사용한다. 특징 1. 모든 필드와 메소드가 static인 상수 ( Math m = new Math(): 만들기 불가 ) 특징 2 생성자는 private = 한번만 메모리 영역에 올려놓고 재사용 하는 개념 파이 Math.PI 절대값 Math.abs(int, doubl, long, float) 올림 Math.ceil(double) 내림 Math.floor( do..
JAVA, 다형성 예제 문제 공부 + 객체 캐스팅(Casting) 'User 클래스'과 'UserTest 클래스'를 만들고 User에서는 유저의 정보를 담고, UserTest는 메인 메서드로 값을 출력하는 기능을 하는 예제 문제를 풀었고 이해가 잘 안가는 부분만 정리하려고 한다. 예제 문제 풀기에 앞서 다형성을 공부하며 객체의 업캐스팅, 다운캐스팅을 배웠다. 1. Parent 클래스에는 parentMethod()가 있고. 2. Child 클래스에는 childMethod()가 있으며, 3. Child 클래스는 Parent 클래스 상속 위와 같은 조건 상황에서 캐스팅을 해보자. 업캐스팅 자동형변환, 자식타입 -> 부모타입 형변환(자식 클래스가 부모 클래스 타입으로 캐스팅) = 하위객체가 상위객체를 참조한다. 예시) Parent p = new Child(); p.parent..
JAVA: 객체와 클래스 Java는 객체를 기반으로 하는 객체 지향 프로그래밍(Object-Oriented Programming : OOP)이다. 자바의 객체란 자바의 클래스(인스턴스)이며, 각 객체는 식별자, 동작, 상태를 모두 일컫는다. 객체란? 예를 들어 홍길동이는 사람이있다. 홍길동은 8살인 120cm인 초등학교 2학년이다. 홍길동은 잠을 자고, 밥을 먹고, 달리기도 한다. 여기서 홍길동은 객체가 된다(즉, 세상의 모든 것이 객체가 될 수 있다). 여기서 식별자, 동작, 상태를 구별해 보자면, 식별자 상태 동작 홍길동 8살 120cm 초등학교 2학년 잠자기 밥먹기 달리기 클래스란? 클래스는 이러한 객체를 자바 프로그램 상에서 구현하기 위해 만든 코드로 만든 설계도나 틀을 말한다. 홍길동은 8살인 120cm인 초등학교 2학..
JAVA 다형성: 객체 지향 프로그램의 4가지 특징[추상화, 상속, 다형성, 캡슐화] Java는 객체를 기반으로 하는 객체 지향 프로그래밍(Object-Oriented Programming : OOP)이다. 객체 지향 프로그램에는 추상화, 상속, 다형성, 캡슐화라는 4가지 주요한 특징이 있다. 다형성이란(Polymorphism)? 그 중 다형성은 Polymorphism이라는 영어 단어에서 알 수 있듯이 다양한 형태를 뜻한다. 즉, 자바에서는 하나의 객체가 여러 타입을 가질 수 있는 것을 말한다. 예를 들어, 1. 부모클래스 public class Parent { public void parentMethod(){ System.out.println("부모메서드"); } } 2. (Parent를 상속받은) 자식클래스 public class Child extends Parent{ public v..