SOLID BASIC

    [JAVA] 자료구조 - Map

    Map 컬렉션 클래스 Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가진다. Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용한다. 여기서 키(key)란 실질적인 값(value)을 찾기 위한 이름의 역할을 합니다. Map이란? - Map은 리스트나 배열처럼 순차적으로(sequential) 해당 요소 값을 구하지 않고 key를 통해 value를 얻는다. - 맵(Map)의 가장 큰 특징이라면 key로 value를 얻어낸다는 점이다. -특징 1. 요소의 저장 순서를 유지하지 않음 2. key : 중복을 허용 X value : 중복은 허용 O put 자바의 맵(Map)중 가장 간단한 HashMap에 대해서 알아보자..

    [JAVA] 자료구조 - Set | Hashset

    [JAVA] 자료구조 - Set | Hashset

    Set을 지난번에 공부한 List와 비교해보자면 1. Set은 중복 값을 삽입할 수 없다. 2. Set은 특정한 순서를 가지고 있지 않다. 이제 예제를 통해 한번 알아보자. String 타입만 받는 HashSet을 선언한 뒤 set 안에 add 메소드를 사용해서 "a", "b", "b", "d" 총 4개의 값을 set 안에 넣었는데 set은 중복값을 허용하지 않기 때문에 b를 1번 넣건 200번 넣건 동일한 값은 하나만 들어가게 된다. 또한 삽입 시 순서가 없기 때문에 배열(Array)이나 List 처럼 get(인덱스)로 값을 가져올 수 없고 .Iterator를 통해 가져와야 하는데 set.iterator()로 set 값을 iterator에 담은 후 .next를 통해 하나씩 뽑아내는 식이다. 여기서 순서..

    [JAVA] 자료구조 - List | ArrayList, LinkedList 차이는 무엇일까?

    [JAVA] 자료구조 - List | ArrayList, LinkedList 차이는 무엇일까?

    List는 자바의 자료형 중 하나이다. 배열과 비슷하지만 명확한 차이점이 있다. 1. 크기를 자유롭게 설정 가능 - 배열은 처음 크기를 설정하고 나서부터는 크기 설정이 불가능하지만 리스트는 삽입과 삭제로 원하는대로 크기를 변경할 수 있다. 2. 배열은 직접 액세스(Direct access), 순차 액세스(Sequential Access) 모두 가능 | List는 순차 액세스만 가능 직접 액세스(Direct Access)는 배열의 값으로 바로 접근하는 것을 말하고 순차 액세스는(Sequential Access)는 처음부터 시작해 배열의 특정 값까지 접근하는 것을 말한다. 당연히 직접 액세스가 훨씬 더 빠르게 접근할 수 있기 때문에 배열 안에 값을 넣거나 가져올 때는 Array가 List보다 더 빠르다. 정..

    [JAVA] 제네릭 Generic

    Generic Box 클래스 public class Box { private Object obj; public void setObj(Object obj){ this.obj = obj; } public Object getObj(){ return obj; } } BoxExam 클래스 public class BoxExam { public static void main(String[] args) { Box box = new Box(); box.setObj(new Object()); Object obj = box.getObj(); box.setObj("hello"); String str = (String)box.getObj(); System.out.println(str); box.setObj(1); int val..

    [JAVA] java.util패키지 | 컬렉션 프레임워크(Collection Framework)

    [JAVA] java.util패키지 | 컬렉션 프레임워크(Collection Framework)

    컬렉션 프레임워크 java.util패키지에는 자료를 다룰 수 있는 자료구조 클래스가 다수 존재한다. 자료구조 클래스들을 컬렉션 프레임워크라고 한다. 자료구조란 자료를 저장할 수 있는 구조 책을 보관하기 위해서 책장을 이용하는 것처럼 다양한 자료들을 다양한 방식으로 관리하기 위한 방법이 필요한데, 이러한 방법을 제공하는 것을 자료구조, 컬렉션 프레임워크이다. 컬렉션 프레임워크에서 가장 기본이 되는 interface는 Collection인터페이스 Collection인터페이스는 여기에 자료가 있다라는 것을 표현. 중복도 허용하고, 자료가 저장된 순서도 기억하지 못하는 것이 Collection인터페이스. Collection이 가지고 있는 대표적인 메소드는 add(), size(), iterator() 메소드 C..

    [JAVA] StringBufffer, StringBuilder 사용법 & 차이점이 뭘까?

    [JAVA] StringBufffer, StringBuilder 사용법 & 차이점이 뭘까?

    자바에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer 그리고 StringBuilder가 있다. 비교적 간단한 연산을 수행할 시 어떤 클래스를 사용해도 OK 그렇지만 그 반대의 경우 (+ 멀티쓰레드) 에는 각 클래스의 특징을 이해하고 상황에 맞게 사용하는 것이 좋다. String - 불변의 속성 String str = "Hello"; str += "world"; 문자열 + 문자열이 가능한데 웬 불변? 이라고 생각이 들 수 있다. "Hello" 값이 들어있던 String 클래스의 참조변수 str이 추가된 문자열 "world"가 추가된 "Hello world"의 값으로 새로운 메모리 영역을 가리키게 변경되는 것이다. 그리고 처음에 선언했던 "Hello"로 할당된 메모리 영역은 갈비지..

    [JAVA] 스트링 버퍼 StringBuffer

    스트링 버퍼 아무 값도 가지고 있지 않은 StringBuffer객체를 생성 StringBuffer sb = new StringBuffer(); // 해당 스트링 버퍼에 "hello", 공백, "world"를 차례대로 추가 sb.append("hello"); sb.append(" "); sb.append("world"); // StringBuffer에 추가된 값을 toString()메소드를 이용하여 반환 String str = sb.toString(); 출력결과 : hello world StringBuffer가 가지고 있는 메소드들은 대부분 자기 자신, this를 반환 StringBuffer sb2 = new StringBuffer(); StringBuffer sb3 = sb2.append("hello")..

    [JAVA] java.lang 패키지/오토박싱

    java.lang 패키지/오토박싱 자바는 기본적으로 다양한 패키지를 지원 그중에서 가장 중요한 패키지 java.lang패키지의 클래스는 import를 하지 않고도 사용할 수 있다. java.lang패키지에는 기본형타입을 객체로 변환시킬때 사용하는 Wrapper클래스가 있다. Boolean, Byte, Short, Integer, Long, Float, Double 클래스 모든 클래스의 최상위 클래스인 Object도 java.lang패키지 문자열과 관련된 String, StringBuffer, StringBuilder도 모두 java.lang패키지 화면에 값을 출력할때 사용했던 System클래스도 java.lang패키지 수학과 관련된 Math클래스도 java.lang패키지 Thread와 관련된 중요 클래스..

    [JAVA] Object 클래스, 오버라이딩

    [JAVA] Object 클래스, 오버라이딩

    Object 모든 클래스(객체)의 부모(조상) 부모가 없는 클래스는 자동으로 Object 클래스를 상속받는다. 결국 모든 클래스는 Object를 상속받기 때문에 Object클래스에 정의된 11개의 메서드를 상속받는다. (toString(), equals(Object obj), hashCode() ...) class Tv {} // 이 클래스는 자동적으로 Object 클래스를 상속받는다. class Tv extends Object {} // 같은 코드 class SmartTv extends Tv {} 메서드 toString() 클래스의 이름과 주소를 String으로 반환한다. "클래스이름@객체의 주소" 모든 클래스가 사용 가능하다. println()안에 인스턴스 참조변수의 값을 넣은 것과 같은 결과를 반환..

    [JAVA] 예외처리( exception handing ) - (3)사용자 정의 exception

    사용자 정의 Exception Exception 클래스를 상속 받아 정의한 checked Exception 반드시 오류를 처리 해야만 하는 Exception 예외 처리하지 않으면 컴파일 오류를 발생 시킨다. RuntimeException 클래스를 상속 받아 정의한 unChecked Exception 예외 처리하지 않아도 컴파일 시에는 오류를 발생시키지 않는다. RuntimeException을 상속받은 BizException객체 public class BizException extends RuntimeException { public BizException(String msg){ super(msg); } public BizException(Exception ex){ super(ex); } } BizServ..