반응형

공부 136

변수 선언하기 - Java 예제

변수 선언하기(declaration)변수(Variable)는 이름이 붙은 저장소를 의미한다. 즉, 어떤 값을 저장하기 위한 메모리 공간에 이름을 붙인 것이다. 변수를 사용하기 위해서는 변수를 선언해야 하며 변수를 선언할 때에는 타입을 명시해주어야 한다.변수를 선언하기 위해서는 int, char 와 같은 키워드를 사용한다. 예를 들어 이름이 'letter' 라는 char 타입의 변수를 선언하는 것은 아래와 같다.char letter;이 코드는 컴퓨터에게 "char 타입의 데이터를 저장할 수 있는 메모리 공간을 확보하고, letter 라는 이름을 붙여라." 라고 명령하는 것과 같다. 아래 그림과 같이 letter라는 저장소를 만드는 작업을 변수 선언 이라고 볼 수 있겠다.문제Solution class에 키워..

Java 자료구조(Data Structure) - 그래프 (Graph) & 그래프 서치 (Graph Search)

그래프(Graph)란?자료구조에서 그래프는 여러 개의 점들이 서로 복잡하게 연결 되어있는 관계를 표현한 자료 구조 이다.그래프의 구조직접적인 관계가 있는 경우 두 점 사이를 이어주는 선이 있다.간접적인 관계라면 몇 개의 점과 선에 걸쳐 이어진다.하나의 점을 그래프에서는 정점(vertex)이라고 표현하며, 하나의 선은 간선(edge)라고 한다.인접 행렬그래프 표현 방식 중 하나로 인접 행렬은 서로 다른 정점들이 인접한 상태인지를 표시한 행렬로 2차원 배열의 형태로 나타낸다. 만약 A라는 정점과 B라는 정점이 이어져 있다면 1, 이어져 있지 않다면 0 으로 표시한 일종의 표이다.위의 그래프를 인접 행렬로 표시하면 다음과 같은 2차원 배열로 나타낼 수 있다.int[][] matrix = new int[][]{..

Java 자료구조(Data Structure) - Binary Search Tree & Tree traversal

Binary Search Tree트리 구조는 편리한 구조를 전시하는 것 외에 효율적인 탐색을 위해 사용하기도 한다.많은 트리의 모습 중 가장 간단하고 많이 사용하는 이진트리(binary tree)와 이진 탐색 트리(binary search tree)에 대해 알아보자.먼저 이진 트리(Binary tree)는 자식 노드가 최대 두 개인 노드들로 구성된 트리이다. 이 두 개의 자식 노드는 왼쪽 자식 노드와 오른쪽 자식 노드로 나눌 수 있다. 이진 트리는 자료의 삽입, 삭제 방법에 따라 정 이진 트리(Full binary tree), 완전 이진 트리(Complete binary tree), 포화 이진 트리(Perfect binary tree)로 나뉜다.이진 탐색 트리(Binary Search Tree)이진 탐색..

Java 자료구조(Data Structure) - 트리(Tree)

자료구조 Tree 란?자료구조 Tree는 이름 그대로 나무의 형태를 가지고 있다. 정확히는 나무를 거꾸로 뒤집에 놓은 듯한 모습을 가지고 있다. 그래프의 여러 구조 중 단방향 그래프의 한 구조로 하나의 뿌리로부터 가지가 사방으로 뻗은 형태가 나무와 닮았다고 하여 트리 구조라고 불린다.트리 구조는 데이터가 바로 아래에 있는 하나 이상의 데이터에 무방향으로 연결된 계층적 자료구조이다. 데이터를 순차적으로 나열시키는 선형 구조가 아니라 하나의 데이터 아래에 여러 개의 데이터가 존재할 수 있는 비선형 구조이다. 트리 구조는 계층적으로 표현이 되고 아래로만 뻗어나가기 때문에 사이클이 없다.Tree의 구조와 특징트리 구조는 루트(Root)라는 하나의 꼭지점 데이터를 시작으로 여러 개의 데이터를 간선(edge)로 연..

Java 자료구조(Data Structure) - 큐(Queue)

Queue 란?큐(Queue)는 사전적인 의미로 줄을 서서 기다리다, 대기 행렬 이라는 뜻으로 볼 수 있다. 톨게이트를 나란히 지나가는 자동차들을 큐 자료구조의 데이터로 비유할 수 있다. 가장 먼저 진입한 자동차가 가장 먼저 톨게이트를 통과한다. 다시말해 가장 나중에 진입한 자동차는 먼저 도착한 자동차가 모두 빠져나가기 전까지 톨게이트를 빠져나갈 수 없다.  Queue의 구조자료구조 Queue는 Stack과 상반되는 개념으로 먼저 들어간 데이터가 먼저 나오는 FIFO(First IN First Out) 혹은 LILO(Last In Last Out) 특징을 가지고 있다. Queue에 데이터를 넣는 것은 enqueue, 꺼내는 것을 dequeue 라고 한다. Queue의 특징FIFO(First In Firs..

Java 재귀(Recursion)란?

재귀함수란?재귀의 사전적 의미는 '원래의 자리로 되돌아가거나 되돌아옴.' 이다. 정의를 참고하여 재귀를 코드로 표현한다면 다음과 같이 작성할 수 있을 것이다.public void recursion() { System.out.println("This is"); System.out.println("recursion!"); recursion();}recursion 메서드를 호출하면 자기자신을 끝없이 호출하며 같은 코드가 계속해서 실행되는 것을 볼 수 있다. 이 recursion 메서드처럼 자기 자신을 호출하는 함수를 재귀함수라고 한다. 재귀함스를 잘 활용하면 반복적인 작업을 해야하는 문제를 좀 더 간결한 코드로 풀어낼 수 있다.재귀함수의 장점은,불빌요하게 여러 개의 반복문을 사용하지 않기 때문에 코드가 ..

Java 스레드(Thread)란? 자바 기초 배우기

프로세스(Process)와 스레드(Thread)프로세스는 실행중인 애플리케이션을 의미한다. 프로세느는 데이터, 컴퓨터 자원, 스레드로 구성이 되는데, 스레드는 데이터와 애플리케이션이 확보한 자원을 활용하여 소스 코드를 실행한다. 즉 스레드는 하나의 코드 실행 흐름 이라고 볼 수 있다. 메인 스레드(Main thread)자바 애플리케이션을 실행하면 가장 먼저 실행되는 메서드는 main 메서드이며, 메인 스레드가 main 메서드를 실행시켜준다. 메인 스레드는 main 메서드의 코드를 처음부터 끝까지 차례대로 실행시키며 코드의 끝을 만나거나 return 문을 만나면 실행을 종료한다. 멀티 스레드(Multi-Thread)하나의 프로세스는 여러 개의 스레드를 가질 수 있고 이를 멀티 스레드 프로세스라 한다. 여러..

Java Optional Class 란? 자바 기초 배우기

Optional은 NullPointerException(NPE) 즉 null 값으로 인해 에러가 발생하는 현상을 객체 차원에서 효율적으로 방지하고자 도입되었다.  OptionalOptional 클래스는 모든 타입의 객체를 담을 수 있는 래퍼(Wrapper) 클래스이다.public final class Optional { private final T value; // T타입의 참조변수}Optional 객체를 생성하려면 of() 또는 ofNullable()을 사용한다. 참조변수의 값이 null 일 가능성이 있다면 ofNullable() 을 사용한다.Optional opt1 = Optional.ofNullable(null);Optional opt2 = Optional.ofNullable("123");Syste..

Java 스트림(Stream) 이란? 자바 기초 배우기

스트림(Stream) 이란?스트림은 배열, 컬렉션의 저장요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. 스트림을 사용하면 List, Set, Map 등 다양한 데이터 소스로부터 스트림을 만들 수 있고 이를 표준화된 방법으로 다룰 수 있다. 스트림 도입 배경데이터를 효과적으로 다루고 원하는 모양대로 데이터로 가공하기 위해 for문과 Iterator를 활용한다. 다만 이런 방식들은 두 가지 큰 문제점이 있는데 첫 번째로 코드가 길고 복잡해질 수 있다. 아래 예를 확인해보자. Iterator를 사용한 반복처리import java.util.Arrays;import java.util.Iterator;import java.util.List;public class PrintNumberOpera..

Java 람다식(Lambda Expression)이란? 자바 기초 배우기

람다식(Lambda Expression)람다식은 함수형 프로그래밍 기법을 지원하는 자바의 문법 요소이다. 람다식은 간단히 말해서 메서드를 하나의 식(expression)으로 표현한 것으로 코드를 매우 간결하면서 명확하게 표현할 수 있다는 큰 장점을 가지고 있다.다음의 예를 살펴보자.//기존 메서드 표현 방식void sayhello() { System.out.println("HELLO!")}//위의 코드를 람다식으로 표현한 식() -> System.out.println("HELLO!") 람다식에서는 기본적으로 반환 타입과 이름을 생략할 수 있다. 그러한 이유때문에 종종 이름없는 함수, 익명함수(anonymous) 라 부르기도 한다.아래의 예시를 통해 메서드를 람다식으로 만드는 방법에 대해 살펴보자. int..

반응형