Java

1. Arrays 배열을 다루기 편리한 static 메서드 제공 a. 배열 출력 - toString(), deeptoString() toString(): 1차원 배열 출력 deepToString(): 2차원 배열 출력 int[] arr1 = {1, 2, 3, 4, 5}; int[][] arr2 = {{11, 12}, {21, 22}}; Arrays.toString(arr1); // [1, 2, 3, 4, 5] Arrays.deepToString(arr2); // [[11, 12], [21, 22]] b. 배열 비교 - deepEquals(), equals() equals(): 1차원 배열 비교 deepEquals: 2차원 배열 비교 int[] arr1 = {1, 2, 3, 4, 5}; int[] arr2..
Iterator, ListIterator, Enumeration 모두 Collection에 저장된 데이터를 접근하는데 사용되는 인터페이스 Enumeration은 Iterator의 구버젼(호환성 때문에 남아있을 뿐 잘 사용하지 않음) ListIterator는 Iterator의 접근성을 향상시킨 것(단방향 → 양방향) Iterator public class Main { public static void main(String[] args) { ArrayList list = new ArrayList(); for(int i=0; i
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 스택과 큐 LIFO, FIFO 구조를 가진다. 스택과 큐를 알아보기 전에 LIFO, FIFO 구조에 대해서 알아보자. 1. LIFO 구조와 FIFO 구조 LIFO 구조는 입구가 하나인 구조로, 가장 마지막에 들어간 요소가 가장 먼저 나오는 후입선출 구조이다. FIFO 구조는 입구와 출구가 서로 다른 구조로, 가장 먼저 들어간 요소가 가장 먼저 나오는 구조이다. 2. Stack이란? LIFO(Last In First Out) 구조(가장 마지막으로 들어간 요소가 가장 먼저 나온다.) Java에서 클래스로 구현되어 있음 스택 활용 예시 수식계산, 괄호검사, 웹브라우저 뒤로/앞으로 Java에서는 Stack 클래스를 사용하는 것을 권장하지..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. LinkedList는 ArrayList와 제공하는 기능을 거의 똑같지만 내부적으로 매우 다르게 동작한다. LinkedList의 3가지 유형을 소개하고 ArrayList와 차이점을 정리해보겠다. 1. 단방향 연결 리스트(Singly Liked List) 란? Class Node { Node next; // 다음 요소의 주소를 저장 Object obj; // 데이터 } 노드(객체)끼리의 주소(포인터)를 서로 가리키며 링크(참조)로 이어지는 구조. 메모리에 순차적으로 저장되지 않고 데이터의 순서를 link를 통해서 순서를 보장하므로 데이터 추가, 삭제시 배열을 복사하지 않고, link 만 변경해주면 되기 때문에 배열의 단점을 보완함. ..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. ArrayList이란? List 인터페이스를 구현하기 때문 데이터 저장순서가 유지되고 중복을 허용 Vector를 개선한 것으로 기능적인 면에서 동일 베이스가 배열이라서 더 이상 저장 공간이 없으면 보다 큰 새로운 배열(저장 공간)을 생성해서 기존의 배열에 저장된 내용을 새로운 배열로 복사(리사이징)한 다음 저장 ⇒ 미리 여유 있게 공간을 차지하도록 할당하는 것이 효율적임. 장점 읽기(접근시간)가 빠름. 순차적인 추가/삭제 빠름 단점 비순차적인 추가/삭제는 느림(배열을 복사하는 과정이 있기 때문) 비효율적인 메모리 사용 2. Vetor vs. ArrayList Vector는 기존에 작성된 소스와 호환성을 위해 남긴 것이기 때문..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 자바에서 제공하는 java.net 패키지를 사용하면 네트워크 애플리케이션의 데이터 통신 부분을 쉽게 작성할 수 있다. java.net 패키지를 알아보기 전에 네트워크 모델과 IP 주소에 대해 알아보자. 1. 네트워크 모델 / IP 주소 a. 클라이언트(Client)/서버(Server) 서버는 서비스를 제공하는 컴퓨터 클라이언트는 서비스를 사용하는 컴퓨터 안정적인 서비스의 제공이 가능하다. 공유 데이터의 관리와 보안이 용이하다. 서버구축비용과 관리비용이 든다. b. P2P 모델(peer-to-peer model) 별도의 서버없이 각 클라이언트가 서버역할을 동시에 수행하는 모델 서버구축 및 운용비용을 절감할 수 있다. 자원의 활용을 ..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 람다식(Lambda Expression)이란? java 8부터 람다식을 등장으로 Java는 객체지향 언어의 특징과 함수형 언어 특징을 함께 갖추게 되었다. 함수(메서드)를 간단한 식(Expression)으로 표현하는 방법 익명함수(anonymous function)이라고도 한다. 2. 람다식 사용 방법 (매개변수 선언) -> { // 문장들 } // 메서드 이름과 반환타입을 제거하고 '->'를 블록앞에 추가한다. (int a, int b) -> { return a > b ? a: b; } // 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능 (끝에 ';' 안 붙임) (int a, int b) -> a > b ..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 쓰레드를 구현 방법을 알아보기에 앞서 프로세스, 쓰레드가 무엇인지 알아보자. 1. 프로그램 / 프로세스 / 쓰레드 a. 프로그램(Program) HDD, SSD와 같은 디스크에 저장된 실행 가능한 파일이다. b. 프로세스(Process) 현재 실행 중인 프로그램이다. 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 쓰레드 구성된다. c. 쓰레드(Thread) 프로세스 내에서 실제로 작업을 수행하는 주체 모든 프로세스는 하나 이상의 쓰레드가 존재하여 작업을 수행한다. 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스라고 한다. 프로세스의 메모리 한계에 따라 ..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 컬렉션 프레임웍의 핵심 인터페이스 핵심 인터페이스로는 List, Set, Map이 있다. List, Set은 공통된 부분이 많아 공통 부분을 인터페이스(Collection)으로 정의했다. Map은 List, Set과 달리 key-value 구조이기 때문에 별도의 인터페이스로 정의했다. List 순서를 유지하고, 데이터 중복을 허용한다. 구현클래스: ArrayList, Vector, LinkedList, Stack 등 Set 순서를 유지하지 않고, 데이터 중복을 허용하지 않는다. 순서를 유지하고 싶으면 LikedHashSet 사용 구현클래스: HashSet, TreeSet 등 Map Key, Value 구조의 데이터 집합 순서는 유..
· Java/기타
.java(소스 파일) 개발자가 작성한 소스코드 파일이다. .class(바이트 코드 파일) .java 파일을 자바 컴파일를 통해 바이트 코드로 변환한 파일이다. .jar .class 파일을 압축한 파일로 압축을 풀면 .class 파일 상태가 된다. jar파일 자체가 실행 가능한 애플리케이션이며, jar 파일 형식으로 쉽게 배포할 수 있다. 빌드를 진행해보겠다. 빌드 1. 아래의 .java 파일을 빌드를 진행한다. 2. 빌드를 진행하면 jar 파일이 생성된다. 3. jar 파일을 압축을 풀면 패키지와 동일한 디렉토리에 .class 파일로 압축을 풀게된다.
kmindev
'Java' 카테고리의 글 목록 (2 Page)