Programming Languages/Java 13

[JAVA] 자바 기본형 타입 종류와 크기

자바의 기본형 변수는 메모리 스택 영역에 그 값을 바로 저장한다.(별도의 힙 메모리 영역에 값을 저장하고, 스택 영역의 변수가 이를 참조하는 참조형 변수와 차이) 이 기본형 변수의 크기 단위는 바이트(1바이트=8비트)로 표시한다. 8비트는 2^8 = 256개의 값을 표현할 수 있다.이 값들은 부호가 있을 때와 없을 때 범위가 달라지는데,각 자료형이 얼마의 값 범위를 내포하는지 알아보자.  1) 부호가 있는 경우 (Signed)-부호가 있는 형 종류 : byte, short, int, long-가장 왼쪽의 비트를 부호 비트로 사용한다.-정수형 데이터 타입에서 음수와 양수를 모두 표현 가능-부호 비트가 0이면 양수, 1이면 음수(= 2의 보수(2's complement) 표기법)-범위 계산법 :  -2^(n..

[JAVA] BufferedReader, BufferedWriter 사용해야 하는 이유

자바에서 입력은 Scanner 통해 받고,출력은 System.out.println("") 을 통해 한다. 평상시에는 이러한 입,출력이 문제가 되지 않지만 특정 상황의 경우 이것을 쓰는 것이 적합하지 않을 때가 있다. 바로 코딩테스트와 같은 시간 제한이 주어진 상황에서 컴파일이 완료되어야 하는 경우이다.원래 쓰던 대로 하면 시간 초과 오류가 뜬다.이 때 오류를 해결할 수 있는 방법은 입, 출력을 더 빠르게 받는 것이다!나는 코딩 테스트로 인해 이 방법을 알아보면서StringBuffer가 성능이 좋은 이유가 있듯이, BufferReader가 더 빠른 이유가 궁금해졌다. ■ 버퍼링 개념버퍼링은 데이터를 한 번에 조금씩 읽거나 쓰는 대신, 더 큰 덩어리로 읽거나 쓰는 방법이다. 이렇게 하면 디스크나 네트워크 같..

[Java] 자바 상속 구현 / extends, implements의 차이? / 개념과 사용법 정리

자바는 객체 지향 언어다. 객체 지향 언어 중 가장 큰 특징은 인데, 이러한 상속을 구현하는 형태를 간단히 정리하고자 한다. (객체 지향 언어에 대한 개념은 아래 글을 참고하면 좋다.) [JAVA] 객체 지향 언어(Object-Oriented Programming, OOP) 란? 자바는 객체 지향 언어(Object-Oriented Programming, OOP)이다. 객체 지향 언어(Object-Oriented Programming, OOP) 란? 현실 세계의 개체를 프로그램으로 표현하고 이러한 개체 간의 상호 작용을 통해 소프트웨어 hansjour.tistory.com 1. extends와 implements 개념 설명 자바에서 클래스와 인터페이스 간의 관계를 나타내는 방식이다. 1) extends :..

[JAVA] 객체 지향 언어(Object-Oriented Programming, OOP) 란?

자바는 객체 지향 언어(Object-Oriented Programming, OOP)이다. 객체 지향 언어(Object-Oriented Programming, OOP) 란? 현실 세계의 개체를 프로그램으로 표현하고 이러한 개체 간의 상호 작용을 통해 소프트웨어를 개발하는 방법론. 클래스를 사용하여 데이터와 해당 데이터를 처리하는 메서드를 하나의 단위로 묶고, 이를 통해 모듈화되고 재사용 가능한 소프트웨어를 구축할 수 있다. -절차적 프로그래밍 방식 => 순서대로만 처리하고 결과를 내는 방식 -구조적 프로그래밍 방식 => 프로그램을 함수단위로 나누고 함수끼리 호출하는 방식으로, 큰 문제를 해결하기 위해 문제를 작은 단위들로 나누어 해결한다. (Top-Down 방식) -객체 지향 프로그래밍 방식 => 구조적 ..

[JAVA/알고리즘] 깊이 우선 탐색 (DFS) 이란? / 자바 사용 예시 총 정리

탐색 : 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 어떤 메모리 구조를 가졌느냐에 따라 효율적인 탐색 방법이 갈리긴 하지만, 일반적으로 탐색에 쓰이는 알고리즘 중 대표적인 DFS에 대해 알아보도록 하겠다. 깊이 우선 탐색(DFS)은 이진 트리 구조를 기반의 효율적인 탐색 방법 중 하나이다. Depth First Search = 깊이 우선 탐색이라고도 부르며, 그래프와 트리의 깊은 부분을 우선적으로 탐색하는 알고리즘이다. ▷ 깊이 우선 탐색(DFS) 의 특징 -다음 분기로 넘어가기 전 해당 분기를 완벽하게 탐색하는 방식이다. -스택 메모리 구조에 기초하여 구현이 간단하다. -검색 대상 그래프가 크거나 경로의 특징을 저장해둬야 하는 문제에 유리 리프 노드(시작 정점)부터 시작해 정점과 연결 된 모든..

[JAVA/자료구조] Iterator와 반복문 / 자바에서 Iterator 사용하기

오늘은 자바의 Iterator의 개념과 장/단점을 알아보려고 한다. 먼저, Iterator가 무엇을 말하는지 살펴보자. 1. 개념 JAVA Iterator란? : 컬렉션 프레임워크(Collection Framework)에 저장된 데이터를 순회하는 인터페이스이다. 컬렉션 프레임워크는 List, Set, Map, Queue, ArrayList, Stack, LinkedList 등을 뜻한다. 2. 의의 -우리가 쓰는 웬만한 자료구조의 상위 개념에 속하는 인터페이스로, Iterator 문법 하나로 자료 구조의 일반적인 순회가 가능하다. 3. 대표 메소드 .hasNext() //다음 요소가 있는지 확인, return값 true/false .next() //다음 요소 호출 .remove() //요소 삭제 선언은 I..

[JAVA/자료구조] 자바 연결리스트 사용법 (Linked List) 구현 / 예제 정리

▷ 연결 리스트 (Linked List)란? 연결 리스트(Linked List)는 연결 리스트, 링크드 리스트는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다. 연결 리스트에서 수행되는 작업은 값 추가, 삭제, 검색 등이 있다. 자세한 구현 방법은 아래 글을 통해 소개하겠다. 먼저 연결리스트의 개념에 대해 정리한 글은 다음과 같다. 자료 구조의 기본인 배열과 연결 리스트의 장단점과 차이점 등을 정리한 글이다. (언어와는 상관 없이 기본 개념을 참고하기 좋은 글이니 참고하도록 하자.) [C언어/자료구조] 포인터 - 연결 리스트(Linked List) / 배열과 차이점 / 개념 정리 오늘은 C언어의 자료 표현 방식 중 '포인터와 연결 리스트(Linked ..

[JAVA/자료구조] 자바 큐 Queue 사용법 / 큐의 특징과 예시 총 정리

▷ 큐(Queue)이란? 큐(Queue)는 FIFO(퍼스트 인 퍼스트 아웃) 원리를 기반으로 구성된 요소들의 집합을 나타내는 추상적인 데이터 유형이다. 큐는 스택과 다르게 양방향 자료구조이다. 즉 출구, 입구가 따로 따로 존재한다는 것이다. 스택의 삽입,삭제가 top에서 모두 이루어진다면 큐는 -큐의 가장 앞 부분을 가리키는 front -큐의 가장 뒷 부분을 가리키는 rear 에서 삽입, 삭제가 이루어진다. 큐에서 수행되는 작업은 다음과 같다. 큐의 rear에 데이터를 추가하는 add/offer, 큐의 front의 데이터를 제거하고 null값으로 채우는 poll, 제거만 하는 remove, 초기화하는 clear 큐의 맨 앞(front)에 있는 요소를 제거하지 않고 액세스하는 peek ▷ 큐(Queue)의..

[JAVA] 문자열 String | StringBuffer | StringBuilder 각 차이점 - 성능의 차이!

자바에서 문자열을 사용할 때 여러가지 방법이 존재한다. char 형태를 이어붙여 문자열을 만들어야하는 C/C++와는 달리, 자바에서는 기본으로 문자열이 제공되어 상대적으로 매우 편리하다. 우리가 가장 많이 알고 있는 기본 형태인 String 과 더불어 자바에서 문자열을 표현하는 방법은 다음과 같다. 1) String 2) StringBuffer 3) StringBuilder 먼저 세 가지 방법으로 작성한 다음 코드를 보자. public class Main { public static void main(String[] args) { String str = new String("App"); StringBuffer strbuffer = new StringBuffer("App"); StringBuilder st..

[JAVA/자료구조] 자바 Stack 사용법 / 스택 예시 총 정리 - 문자열 뒤집기, 괄호 짝 맞추기

▷ 스택(Stack)이란? 스택(stack)은 LIFO(라스트 인 퍼스트 아웃) 원리를 기반으로 구성된 요소들의 집합을 나타내는 추상적인 데이터 유형이다. 스택에서 수행되는 작업은 크게 세 가지로 구분이 가능하다. 요소를 스택의 맨 위에 추가하는 push, 스택의 맨 위 요소를 제거하는 pop, 스택의 맨 위에 있는 요소를 제거하지 않고 액세스하는 peek ▷ 스택(Stack)의 특징? 스택 구조는 위로 쌓아 올린 동전 혹은 접시와 같다. LIFO(Last-In First-out) > 스택에 마지막으로 추가된 요소가 가장 먼저 제거 (가장 나중에 쌓은 접시가 먼저 제거 됨) 스택의 한쪽 끝에서만 액세스 가능 > 일반적으로 스택의 'top'이라고 하는 한쪽 끝에서만 추가 및 제거된다. 일정한 시간 복잡성 ..