기초
-
출처 Developer Roadmaps Step by step guides and paths to learn different tools or technologies roadmap.sh
프론트엔드 로드맵 2024. 4. 8. -
출처 Developer Roadmaps Step by step guides and paths to learn different tools or technologies roadmap.sh
백엔드 로드맵 2024. 4. 8. -
요즘 이직을 앞두고 이곳저곳 면접을 보는 중입니다. 오늘은 면접 중에 나온 질문에 대해 포스팅을 남겨볼까 합니다. 추상클래스 하나 이상의 추상 메소드를 포함하는 경우 이것을 추상 클래스라고 말한다. 다만 추상 클래스에 반드시 추상 메소드가 있어야 하는 것은 아니다. 이러한 추상 클래스는 abstract로 정의되어 사용된다. 그렇다면 추상 메소드란 무엇이고, 추상 클래스는 어떤 경우 사용될까? 먼저, 추상 메소드는 선언만 되어 있고 구현되어 있지 않은 메소드를 말한다. 그렇기 때문에 추상 클래스는 인스턴스화가 불가능하다. abstract class Champion { public abstract void chooseOne(); } chooseOne()로 선언되어 있는 메소드는 추상 메소드이다. 그리고 추상..
[Java]추상클래스와 인터페이스 2021. 11. 9. -
재귀함수(Recursion) 메소드 정의시 자기 자신을 재참조하는 방법(=재귀호출) 무한 루프에 빠질 수 있는 위험이 있다. 스택 메모리를 차지하기 때문에 반복적 호출로 인해 스택 메모리가 커지게 되면 StackOverflow가 발생한다. 알고리즘 표현시 반복문보다 구현이 용이할 수 있다. 아래는 재귀함수의 단적인 예이다. package com.company; public class Recursion { public static void main(String[] args) { Danger(); } public static void Danger() { System.out.println("실행"); Danger(); } } 이 경우 무한 루프에 빠져 StackOverflowError를 내뱉는다. 때문에 재귀..
[알고리즘]재귀함수(Recursion) 2020. 2. 1. -
자바에서 문자열을 비교할 때 주로 사용하는 "=="와 "equals"는 비교할 때 사용된다는 점에서 공통점이 있지만 비교 방식에는 차이가 있다. ==는 객체의 주소를 비교하는 연산자이며 equals는 객체의 값을 비교하는 함수이다. String aDrink = new String("Americano"); String bDrink = new String("Americano"); String cDrink = "Americano"; a의 아메리카노, b의 아메리카노, c의 아메리카노가 있다고 할 때 "equals" 함수는 각각의 "아메리카노"라는 값을 비교하는 것이다. 따라서 아래 코드는 true를 반환한다. 만약 b의 "레몬에이드"였다면 false를 반환했을 것이다. if(aDrink.equals(bDrin..
[Java]==와 equals 2018. 9. 3. -
Iterator List와 빼먹을 수 없는 것이 Iterator 인터페이스이다. Iterator는 자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화한 것이다.컬렉션 프레임워크란 데이터를 저장하는 클래스들을 표준화한 설계이다.컬렉션 프레임워크는 아래 그림과 같이 데이터를 저장하는 구조에 따라 3가지 인터페이스로 구성된다. Set, List, Map은 어떤 데이터들의 집합체라고 볼 수 있다. Set과 List는 데이터의 그룹(Collection)이다.Set은 순서를 유지하지 않는 데이터의 집합이다. 데이터의 중복이 허용되지 않고 HashSet, TreeSet 등이 있다. List는 순서를 유지하는 데이터의 집합이다. 데이터의 중복이 허용되며 Vector, LinkedList..
[Java]Iterator 2018. 8. 28. -
자바에서는 리스트 인터페이스로 Linkedlist(연결리스트), ArrayList(배열리스트), Vector를 제공한다. VectorJava 1.0부터 이어져온 리스트 객체로 배열 형태를 이룬다.데이터 추가시 공간을 두 배로 확보하기 때문에 메모리를 많이 잡아먹는다.동기화가 항상 이루어지기 때문에 하나의 스레드가 하나의 자원을 이용하는 경우 성능이 저하된다.※스레드(Thread) : 여러가지 작업을 동시에 수행하는 것 ArrayListArrayList는 이름 그대로 데이터를 배열(Array) 구조로 가지고 있는 객체이다. 아래 그림과 같이 내부적으로 인덱스를 가지고 있어 검색이 용이하다.데이터의 추가 또는 수정, 삭제 시 내부적으로 임시 공간을 만들어 데이터를 저장한다. 때문에 대량의 데이터를 추가 또는..
[Java]ArrayList와 LinkedList(+Vector) 2018. 8. 24. -
Array와 ListArray(배열)와 List(리스트)는 자료구조의 개념으로서 데이터의 관리 또는 적재(추가 또는 수정)에 있어 서로 차이가 있다. 배열배열은 인덱스를 이용해 원하는 요소을 찾는 특징이 있다. 때문에 인덱스는 고정값이어야 한다. 배열은 정적으로 선언되어 사용된다.배열 초기화시 메모리에 할당되어 속도가 빠르다. 리스트리스트는 동적인 관리가 가능하다.요소를 추가 또는 수정할 때마다 메모리 재할당이 일어나기 때문에 속도가 느린 단점이 있다. 아래 그림에서 인덱스 0과 1 사이에 'B'라는 요소를 추가하려고 한다.데이터를 알파벳 순서에 따라 A, B, C, D로 추가하려는 의도이다. 리스트를 이용하면 매우 쉽게 요소를 추가할 수 있다.간단한 예제 코드를 하나 만들어 보았다. 1234567891..
[Java]Array와 List 2018. 8. 23.