Programming Language/Java

네트워크(Network) 1. 네트워크 - 연결된 객체 간의 상호작용 - 인터넷 안에서 이뤄지는 작용 2. 주요 개념들 - IP 주소 : 인터넷상에서 장치간 통신을 위해 각 장치에 지정하는 식별용 주소 - 로컬 호스트 : 내 컴퓨터가 내 컴퓨터에 접속할 수 있는 주소 (127.0.0.1) - 포트(port) : 컴퓨터 내에서 실행되고 있는 네트워크 프로세스를 구분하기 위한 값 ※ 대표적인 포트들 : - 53 : 도메인 이름 - 20 : 파일 전송 포트 - 80 : HTTP 포트 (웹 전용) - 소켓 : 데이터 전송 시, 데이터를 묶는 단위 3. 네트워크 방식 - 네트워크에는 정보를 주고받는 '방식(Protocol)'이 나뉘어 있음 - TCP : 패킷 단위로 데이터를 전송, 실패 시 재전송을 하는 신뢰도가..
IO (Input / Output) 스트림 1. 컴퓨터의 스트림 : 데이터의 공급 - 입력 스트림 : 프로그램으로 데이터가 들어갈 때 - 출력 스트림 : 프로그램으로부터 데이터가 나갈 때 2. IO (Input / Output) 스트림 - 어떻게 데이터의 입출력을 처리할 것인가를 결정해주는 소프트웨어적으로 구현된 줄기들 - 파일로 입출력 실행 ※ import java.io.FileInputStream 를 추가 // Example1 package sample; import java.util.*;// Scanner import java.io.FileInputStream;// 파일로부터 읽어 들임 public class Main { public static void main(String[] args) { tr..
Ⅱ. 자바 API의 함수형 인터페이스 1. 함수형 인터페이스와 표식 (어노테이션 annotaion) - 함수형 인터페이스 : 기능 하나를 정의하는 인터페이스 (인스터스가 필요하지 않을 수도 있음) ※ 함수형 인터페이스의 조건 : 추상 메소드가 딱 하나만 존재 - @FunctionalInterface : 이 것이 함수형 인터페이스임을 명시하는 어노테이션 // Example package sample; // 이 것이 함수형 인터페이스임을 명시하는 어노테이션 @FunctionalInterface interface Calculating { int cal(int a, int b);// 함수형 인터페이스 // default 메소드도 추상메소드가 아님 default int muliply(int a, int b) { ..
Ⅰ. 람다식(Lambda Expression) 1. 람다식 ※ 람다(Lambda) : 코드를 간결하게 작성하기 위해 사용하는 일종의 표현식 - 함수형 인터페이스를 다루는 방식 - 자바에서 함수적 프로그래밍 지원 기법 - 코드의 간결화 및 병렬처리에 강함 - ' -> ' 를 사용하여 표현 ※ 함수형 인터페이스의 조건 : 메소드 하나만 정의하면 됨 == 추상 메소드가 하나 있음 - 람다식을 사용하면 오직 메소드 하나만 정의해서 단독으로 사용할 수 있음 2. 람다식의 특징 - 매개변수가 하나인 경우에는 소괄호 생략 가능 - 실행문이 하나인 경우에는 몸통 중괄호 생략가능 - 반환값만 존재하는 경우에는 return과 중괄호 생략 가능 3. 람다식을 사용하는 경우 - 인스턴스보다 그저 단 하나의 기능이 필요한 상황..
1. 랜덤 클래스(Random Class) - 무작위로 값을 생성해내는 내부 알고리즘을 지닌 클래스 - import java.util.Random; 를 입력 2. 랜덤 클래스의 기능 - Random( ) : 랜덤한 값 생성 - nextInt( ) : 랜덤한 값 출력 (100을 넣으면 100중에서 출력) // Example package smaple; import java.util.Random; public class Main { public static void main(String[] args) { Random a = new Random();// 랜덤한 값 생성 for(int i = 0; i < 5; i++) { // 종자값(seed) : 이 것을 토대로 구해서 줌 System.out.println(a..
Ⅵ. Stack 1. Stack(스텍) - 일직선으로 되어 있는 자료구조로 First In Last Out 를 지님 2. Stack의 특징 - 최신 자바에서 Stack 클래스가 사장되었음(사라짐) - 대신, 그것을 대체하는 무언가를 사용 - 대체 클래스는 바로, Deque(덱) ※ Deque : 양쪽 입구가 뚫려있어 입구를 앞, 뒤로 가능 (입구 한 곳을 막아 Stack처럼 사용) 3. Deque의 기능 - offerFirst( ) : 앞 쪽을 입구로 사용하여 데이터를 삽입 - offerLast( ) : 뒷 쪽을 입구로 사용하여 데이터를 삽입 - peekFirst( ) : 맨 앞을 출력 - peekLast( ) : 맨 뒤를 출력 // Example package sample; import java.uti..
Ⅴ. Queue 1. Queue(큐) - 일자로 된 자료구조로, 선입선출 구조(FIFO : First In First Out)를 지님 2. Queue의 특징 - 먼저 들어간 것이 반드시 먼저 나옴 - LinkedList 클래스는 Queue를 다중상속함 ※ LinkedList는 Queue로 참조하면 Queue의 기능을, List로 참조하면 List의 기능을 가짐 - 인덱스가 없음 3. Queue의 기능 - offer( ) : 데이터를 삽입 - 선입선출 관련 2 개의 메소드 : peek & poll - peek( ) : 당장 꺼낼 수 있는 것을 확인 - poll( ) : 그 것을 실제로 꺼냄 // Example1 package sample; import java.util.*; // Queue public c..
Ⅳ. Map 1. Map(맵) - 두 개의 구성 요소를 지닌 데이터를 저장 및 관리 → Key, Value 2. Map의 특징 - 순서가 없음 (대신, Key가 존재) - Key는 중복저장 불가, Value는 중복 가능 3. Map의 종류 - HashMap : 해시 알고리즘으로 키의 중복을 검사하는 Map - TreeMap : HashMap에 정렬 기능이 추가된 형태의 Map 4. HashMap의 기능 - put( ) 메소드 : 키와 값을 추가 - get( ) 메소드 : HashMap을 읽음 - keySet을 이용해 순차적인 접근도 가능 ※ keySet : Key만 모여있는 Set // Example package day15; // HashMap import java.util.*; public class..
Ⅲ. Set 1. Set (셋) - 수학에서의 집합과 동일한 구조를 지닌 자료구조 2. Set의 특징 - 요소의 순서를 지정하지 않고 관리 - 같은 요소가 두 번 이상 저장될 수 없음. 즉, 중복을 허용하지 않음 3. Set의 종류 - HashSet(해시셋) : 해쉬코드를 이용해 중복을 예방하는 내부 로직을 가진 Set - TreeSet(트리셋) : 같은 Set이지만, 정렬 기능이 추가된 것 (오름,내림차순 같은 정렬) ※ 정렬(Sorting) : 일정한 규칙에 따라 나열한 것 (오름차순, 내림차순, ...) 4. HashSet의 기능 - add( ) 메소드 : 요소 추가 ※ Set은 순서가 없기 때문에 출력 시, for-each문을 사용 // Example package sample; import ja..
Ⅱ. List 1. List(리스트) - 순차적으로 데이터를 저장 및 관리하는 자료구조 - 배열과의 차이점 : 크기를 미리 정하지 않고 필요할 때마다 조절가능 (저장공간크기 동적변환) 2. 자바 List의 2가지 유형 - ArrayList - LinkedList ※ 둘다 List이고 사용법이 같음 (그러나 내부적으로 데이터를 생성하는 방식이 다름) 3. List의 기능 - add메소드 : List에 요소를 추가 - size( )메소드 : List의 길이 정보 - remove(n) 메소드 : n번 요소를 삭제 (칸의 크기도 바뀜) // Example package sample; import java.util.*; // 컬렉션프레임워크일 경우, 추가 // List public class Main { publ..
Ⅰ. 컬렉션 프레임워크 (Collection Framework) 1. 컬렉션 프레임워크 (Collection Framework) - 컬렉션(Collection) - 데이터를 수집 - 동일한 타입을 묶어서 관리하는 자료구조 - 저장 공간의 크기(Capacity)를 동적으로 관리 - 프레임워크(Framework) - 기능을 제공하는 틀 - 클래스와 인터페이스의 모임 (라이브러리) - 클래스의 정의에 설계의 원칙 또는 구조가 존재 - 컬렉션 프레임워크 - 데이터를 수집하여 관리하는 기능을 제공하는 틀 (클래스 or 인터페이스) - 이는 제네릭기반임 ※ 자료구조(Data Structure) : 데이터를 효율적으로 저장 및 관리할 수 있는 소프트웨어적 구조 - 자료구조의 대표적인 예 : 배열 - 배열의 장점 : ..
BigInteger Class 1. BigInteger - 일반 자료형으로 표현할 수 있는 정수보다 더 큰 값을 표현하고자 할 때 사용 ※ BigInteger에는 수를 문자열에 써서 전달해야 함 // Example package sample; import java.math.*; // BigInteger public class Main { public static void main(String[] args) { // System.out.println(Long.MAX_VALUE); : Long의 최대 숫자 // System.out.println(Long.MIN_VALUE); : Long의 최소 숫자 // long num1 = 9223372036854775808L; Long의 범위를 벗어남 // BigInte..
Ⅰ. 제네릭 1. 제네릭 - 미리 정해둘 수 없는 참조 타입을 비워두는 기법 → 즉, 어디에 어떤 타입이 쓰일지 모를 때, 그 타입의 자리를 비워둠 - 제네릭을 이용하면 타입이 정해지지 않은 클래스와 인터페이스를 만들 수 있음 2. 제네릭 선언 방법 - 기호를 사용 ( 안에 T를 기입) ※ T : 타입 매개변수 (비워두고 싶은 부분 표시) ※ 매개변수화 타입 : 제네릭에 인자를 넣어서 완성된 타입 3. 타입 매개변수의 일반적인 이름 규칙 - 대문자로 알파벳 하나만 쓰기 4. 제네릭 관련 예제1 // Example1 (제네릭이 필요한 이유) package sample; class Apple { // toString() : 오브젝트클래스로부터 상속되는 오버라이딩 메소드 // :객체를 선언하고 그..
Ⅴ. Thread 동기화 1. 동기화(synchronized) // Example package sample; // 순차적인 동작을 처리할 때, 싱크가 맞지 않는 부분을 고쳐보자 // → synchronized 키워드 적용 class Counter { private int count = 0; // 메소드 간의 동기화가 이루어짐. // 따라서 다른 메소드의 동작 시, 침범하지 않고 기다림 public void increment() {synchronized(this) {count++;}} public void decrement() {synchronized(this) {count--;}} public int getCount() {return count;} } public class Main { static C..
Ⅳ. Thread의 속성 ※ 스레드명을 지정하지 않는 경우 thread-0, thread-1과 같이 번호를 1씩 증가시키면서 이름 자동 부여 // Example1 package sample; // 둘 이상의 스레드를 생성한 연습문제 // 어떤 것이 먼저 처리될까? class Even implements Runnable { public void run() { try { for(int i = 0; i < 20; i++) { if(i % 2 == 0) { System.out.println(i + " "); } } } catch(Exception e) { e.printStackTrace();// 스택 메모리 추적 내용을 출력 } } } class Odd implements Runnable { public voi..
NewBean
'Programming Language/Java' 카테고리의 글 목록