java에서 Stack과 Queue를 어떻게 사용할까? 스택 & 큐 --스택과 큐는단순하면서 유용한 자료구조로 대부분의 자료구조는 배열 or LinkedList를 이용해서 만들어졌다. 스택(Stack)은LIFO(Last In First Out) 구조로마지막에 저장된 데이터를 먼저 꺼내는 방식이고 큐(Queue)는FIFO(First In First Out) 구조로먼저 저장된 것을 먼저 꺼내는 방식이다. 스택과 큐 (+ 깊이 우선 탐색, 너비 우선 탐색)스택은 무엇이고큐는 무엇인가? 스택 (Stack) --스택은후입선출 (LIFO, Last In First Out) 자료 구조로마지막으로 들어간 데이터가 맨 처음으로 나가는 구조다. 이때 데이터를 담는 연산(데이nijy.tistory.com..
Language

Vector, ArrayList, LinkedList의 차이는 무엇일까? Vector --List 인터페이스를 구현한 클래스로순서를 유지하고, 중복 요소를 허용하는 컬렉션이다. 특징동기화를 지원하는 list 구현 클래스내부적으로 동적 배열을 사용하여 데이터를 관리배열이 가득 차면 기존 용량의 2배로 증가시킨다. 간단하게 설명하자면Vector는 그냥 객체 저장용 배열이다. 동적 배열이어도 배열이기 때문에크기를 변경하려면 새로운 배열을 생성 후, 데이터를 복사하고 주소를 옮겨서 증가시키는 것처럼 보이게 한다.그래서 처음부터 충분한 배열 크기를 생성하여 사용해야 좋다. 동기화는 멀티스레드 환경에서만 필요한 것으로싱글스레드 환경에서 vector를 사용하게 되면 성능이 떨어지게 된다.그리고 동기화 오버헤..

컬렉션은 무엇이며 List, Set, Map은 무엇일까? 컬렉션 프레임워크 (Collection Framework) --컬렉션 프레임워크는Java에서 데이터를 효율적으로 저장하고 관리하기 위해표준화된 클래스와 인터페이스의 집합을 의미한다. 컬렉션을 다루기 위한 표준화된 프로그래밍 방식 (저장, 삭제, 검색, 비교, 정렬 등)컬렉션을 쉽고 편리하게 다루게 해주는 다양한 클래스 제공 (해당 클래스는 java.util 패키지에 포함) 컬렉션 : 여러 객체(데이터)를 모아 놓은 것프레임워크 : 표준화, 정형화된 체계적인 프로그래밍 방식컬렉션 클래스 : 다수의 객체(데이터)를 저장할 수 있는 클래스표준화가 된다는 것은누가 어디서 어떻게 작성하든프로그래밍 방식이 동일하게 작성된다는 것이다.-- ..

Math 클래스는 무엇이며, 어떻게 사용할까? Math 클래스 --Math 클래스는수학적 계산에 유용한 메서드를 제공하는 유틸리티 클래스다. java.lang 패키지에 포함된 다른 클래스들과 달리Math 클래스에는 기본적으로 메서드들이 static 메서드로 이루어져 있어서객체를 생성하지 않고 클래스 이름(Math)을 통해 직접 접근하여 사용할 수 있다. Math 클래스의 생성자는 접근제어자가 private다.즉, 다른 클래스에서는 Math 객체를 생성할 수 없다는 것이다.이유- 인스턴스 변수가 없다.- 제공하는 메서드는 전부 static 메서드다.- 상수도 E, PI 총 2개만 제공이러한 이유로 객체를 생성할 필요가 없기 때문에 생성자의 접근제어자가 private인 것이다. 주요 메서드--

Wrapper 클래스란 무엇이며, 어떻게 사용할까? Wrapper 클래스 --기본 타입을 객체로 감싸기 위한 클래스를 통틀어서 부르는 용어다. 객체지향에서는 모든 것이 객체로 다루어져야 하지만 기본 타입은 예외다.하지만 기본 타입을 객체로 다뤄야 하는 경우가 생기기 때문에 Wrapper 클래스를 사용한다. 예시매개변수가 객체로 값을 요구할 때기본 타입이 아닌 객체로 값을 저장해야 할 때객체 간의 비교가 필요할 때 Java는 8개의 기본형이 존재하여 완전한 객체지향 언어라고 부를 수 없다. Wrapper 클래스 종류 래퍼 클래스는 모두 equals() 메서드가 오버라이딩 되어 있어 주소값이 아닌 객체가 가지고 있는 값을 비교한다.toString() 메서드도 오버라이딩 되어 있어 객체가 가지고 ..

StringBuffer와 StringBuilder는 무엇이며, 어떻게 사용할까? StringBuffer 클래스 --StringBuffer 클래스는"가변 길이 문자열"을 다루기 위한 클래스로String 클래스와 달리 문자열을 수정할 수 있다. String 클래스는 "불변"으로 지정한 문자열을 수정할 수 없지만StirngBuffer 클래스는 "가변"으로 지정한 문자열을 언제든 수정할 수 있다. 내부적으로 문자열을 편집하기 위한 "버퍼(buffer)"를 가지고 있으며,StringBuffer 객체를 생성할 때 해당 버퍼 크기를 지정할 수 있다. 버퍼의 크기는 이후 편집할 문자열의 길이를 고려하여 넉넉하게 잡아주는 것이 좋다.만약 문자열을 편집할 때 버퍼 길이를 넘어가게 되면다시 버퍼의 길이를 늘여주는 ..

String 클래스에서 제공하는 메서드는 무엇이 있을까? String 클래스 --문자열을 다루기 위한 대표적인 클래스로,문자열을 다룰 때 불변(immutable)성과 메모리 효율성을 제공하며, 다양한 편의 메서드를 제공한다. 불변(immutable)?말 그대로 한 번 생성된 문자열 객체는 해당 값을 변경할 수 없다.String 타입의 문자열 수정이 가능하던데?외관상으로는 수정이 되는 것 처럼 보이지만사실 새로운 String 타입의 객체를 새로 생성하고 이를 사용하도록 변경한 것이다.기존에 사용하던 String 타입의 객체는 GC로 인해 제거된다.String str1 = "Hello";str1 = "world";str1 = "Hello" + str1;// str1은 "Hello"에서 "world"..

Object 클래스는 무엇이며, 어떤 메서드를 제공할까? Object 클래스 --Object 클래스는모든 java 클래스의 최상위 부모 클래스로상속을 정의하지 않은 모든 클래스는 자동으로 Object 클래스를 상속받도록 설계되어 있다.(다른 클래스를 상속받더라도 계속 해당 부모 클래스로 올라가 보면 Object 클래스를 상속받고 있다.) 그래서 모든 클래스(객체)는 Object 클래스에서 제공하는 메서드를 사용할 수 있다. Object 클래스에는 멤버변수는 없고 오직 11개의 메서드만 가지고 있다. 메서드 종류-- equals(Object obj) --두 객체가 같은지 비교하는 메서드로, 같은 참조를 하고 있는지 비교한다.(두 객체가 같은 곳을 가리키고 있는가?) 기본 형식객체A.equa..