예제코드에서 다운로드는 첫 페이지참조
각각의 실습코드는 SUB에 해당하는 폴더를 참조하세요.

표준 라이브러리

오브젝트a1_Object

Object class의 method
메소드 설명
protected Object clone() 복제본을 생성하여 반환
boolean equals(Object obj) 전달받은 객체가 같은지 여부를 판단
protected void finalize() 해당 객체를 더는 아무도 참조하지 않아 가비지 컬렉터가 객체의 리소스를 정리하기 위해 호출됨
Class getClass() 해당 객체의 클래스 타입을 반환
int hashCode() 해당 객체의 해시 코드값을 반환
String toString() 해당 객체의 정보를 문자열로 반환
void notify() 해당 객체의 대기(wait)하고 있는 하나의 스레드를 다시 실행할 때 호출
void notifyAll() 해당 객체의 대기(wait)하고 있는 모든 스레드를 다시 실행할 때 호출
void wait() 현재 스레드를 일시적으로 대기(wait) (notify받으면 살아남)
void wait(long timeout) 현재 스레드를 일시적으로 대기(wait) (+시간이 지날 때까지)
void wait(long timeout, int nanos) 현재 스레드를 일시적으로 대기(wait) (+시간) (+다른 스레드가 인터럽트(interrupt))

배열a2_Array

배열 제어 함수
분류 함수명 설명
출력A toString 숫자배열을 출력합니다.
asList 배열을 리스트형태로 반환합니다. String형태로 출력하기 좋습니다.
초기화B fill 지정된 내용으로 채웁니다.
setAll 규칙된 내용으로 채웁니다.
copyOf 처음부터 복사합니다.(넘치면 Null을 입력합니다.)
copyOfRange 구간을 정해서 복사합니다.(넘치면 Null을 입력합니다.)
비교C compare 두 배열을 비교합니다. 같으면 0을 반환합니다.
mismatch 두 배열에서 처음으로 차이나는 index를 반환합니다. 같으면 -1을 반환합니다.
equals 비교영역을 지정해서 반환합니다. true/false로 반환합니다.
정렬D sort 정렬합니다.
binarySearch 찾기합니다.(2진찾기를 수행하기 때문에 정렬한 상태여야 정상동작합니다.)
해쉬코드E hashCode 해쉬코드를 반환합니다.
deepHashCode 숫자가 아닌 객체의 해쉬코드를 반환합니다.
      
    

Stringb_String

문자열 함수
함수명 설명
compareTo A 문자열을 비교합니다. ==로 사용할 수 있습니다.
compareToIgnoreCase 문자열을 대소문자 구분 없이 비교합니다.
toUpperCase B 대문자로 반환합니다.
toLowerCase 소문자로 반환합니다.
concat C 문자열 뒤에 추가 문자열을 추가합니다.
indexOf D 문자열이 몇 번째에 존재하는지 반환합니다.
lastIndexOf 뒤에서부터 문자열이 몇 번째에 존재하는지 반환합니다.
StringBuffer.concat E 문자열 뒤에 추가합니다.
...capacity 메모리를 확인합니다.
...deleteCharAt n번째 글자를 지웁니다.
...delete n번째부터 m까지 문자열을 지웁니다.
...insert n번째에 문자열을 추가합니다.
...reverse 문자열을 거꾸로 저장합니다.

StringBuffer는 메모리를 일부손해보지만, 수행한 내용을 바로 반영해줍니다.

String Class의 method
문자열 메소드 설명
char charAt(int index) 인덱스에 해당하는 문자를 반환
int compareTo(String str) 사전 편찬 순으로 비교
int compareToIgnoreCase(String str) 대소문자를 구분하지 않고 사전 편찬 순으로 비교
String concat(String str) 해당 문자열의 뒤에 문자열을 추가하여 반환
int indexOf(int ch)
int indexOf(String str)
특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환
int indexOf(int ch, int fromIndex)
int indexOf(String str, int fromIndex)
특정 문자나 문자열이 전달된 인덱스 이후에 처음으로 등장하는 위치의 인덱스를 반환
int lastIndexOf(int ch) 특정 문자가 마지막으로 등장하는 위치의 인덱스를 반환
int lastIndexOf(int ch, int fromIndex) 특정 문자가 전달된 인덱스 이후에 마지막으로 등장하는 위치의 인덱스를 반환
String[] split(String regex) 전달된 정규 표현식(regular expression)에 따라 나눠서 반환
String substring(int beginIndex) 전달된 인덱스부터 끝까지를 새로운 문자열로 반환
String substring(int begin, int end) 전달된 시작 인덱스부터 마지막 인덱스까지를 새로운 문자열로 반환
String toLowerCase() 소문자로 변환
String toUpperCase() 대문자로 변환함
String trim() 앞과 뒤에 공백 문자를 제거
int length() 문자열의 길이를 반환
bool isEmpty() 문자열의 길이가 0이면 true, 아니면 false를 반환

Boxingc_Boxing

호환성을 위해서 숫자를 문자열로 받아오는 경우가 은근히 많습니다. 문자열을 숫자로 바꿀 때 자주 이용하게 됩니다.

toBinaryString, toHexString과 같이 자주 사용하는 함수를 사용할 수도 있고, toString(i, 진법)을 사용하여 임의의 진법으로 출력도 가능합니다.
 이러한 클래스를 Wrapper Class라고 합니다.

Interger예시 : https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#%3Cinit%3E(int)
기본 데이터 타입과 boxing(Wrapper) class
Data Type Boxing(Wrapper) class
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

Mathd_Math

Math함수
메서드 설명
static double random() 0.0 이상 1.0 미만의 범위 난수 발생
static double abs(a : double / float / int / long) 절댓값 반환
static double ceil(double a) 소수 올림
static double floor(double a) 소수 버림
static long round(double a)
static int round(float a)
반올림 후 정수를 반환
static double rint(double a) 반올림 후 double형으로 반환
static double max(a, b : double / float / int / long) 큰 값을 반환
static double min(a, b : double / float / int / long) 작은 값을 반환
static double pow(double a, double b) a^b을 반환
static double sqrt(double a) 제곱근 반환
static double sin(double a)
static double cos(double a)
static double tan(double a)
삼각 함수 반환
static double toDegrees(double angrad) 육십분법의 각도 값 반환
static double toRaidans(double angdeg) 라디안 값 반환

시스템 시간e_Time

콜렉션f_Collection

종류 특징 파생
List<E> 순서(○), 중복(○) Vector, ArrayList, LinkedList, Stack
Queue<E> 순서(○), 중복(○) Queue, Deque
Set<E> 순서(×), 중복(×) HashSet, TreeSet
Map <K, V> Key, Value 쌍을 관리
순서(×), 중복(△:Key(×), Value(○))
HashMap, TreeMap, HashTable, Properties
링크: 자바공식사이트, 콜렉션
자료구조 계층도
자료구조
단원명 설명
Array A1 단순 배열의 추가/제거 예제
A2 배열의 정렬예제
A3 배열의 출력 예제
linked List B 연결리스트는 메모리 단점과 검색 이점을 갖음. 사용 예제
stack C 스텍(FILO:First In Last Out)의 추가제거 예제
Queue D 큐(FIFO:First In First Out)의 추가/제거 예제
hash E1 헤시의 추가/제거 예제
E2 헤시의 산출 범위 변경과 중복 문제 예제
Tree F1 트리를 직접 구현한다면
F2 트리의 추가/제거 예제
F3 내림차순을 적용한 트리의 추가/제거 예제
Map G1 맵의 추가/제거 예제
G2 key/value가 바뀌었을 때 예제
G3 값을 통한 검색문제
Iterator H1 반복자 interface를 이용한 제어 예제
H2 반복자를 이용하여 이전 데이터 검색 예제
Comparable I1 비교 interface를 재정의하여 임의의 클래스에서 비교검출 예제

쓰레드g_Thread

쓰레드 단원
주제 설명
thread A 쓰레드 생성 및 실행 예제
B 우선순위(priority)예제
C 쓰레드 그룹제어
D 동기화 예제
E 쓰레드 중단(interrupt) 예제
쓰레드 구현 방법
extends Thread implements Runnable
클래스 계층 구조 다른 클래스를 상속받고 Thread를 상속받을 수 없음 이미 다른 클래스를 상속받아도 Runnable을 구현 가능
정의 class ExtendsThread extends Thread class ImplimentsRunnable impliments Runnable
구현방법 run() 재정의
인스턴스 생성 ExtendsThread thread = new ExtendsThread() Thread thread = new Thread(new ImplimentsRunnable)
실행 start() 호출
클래스 결합도 강한 결합도(복잡한 계층구조 가능성) 느슨한 결합도 (단순한 클래스 계층 구조 가능성)
상태전이
쓰레드 상태
상태 설명
NEW Thread 객체가 생성되었지만, 아직 start() 메서드가 호출되지 않은 상태
RUNNABLE 실행 가능한 상태. start() 메서드가 호출되어 스레드가 실행 중이거나, 실행을 대기하고 있는 상태
BLOCKED 차단된 상태. 락을 획득하기 위해 다른 스레드가 이미 해당 락을 소유하고 있는 경우
WAITING 대기 상태. wait() 메서드에 의해 특정 이벤트를 기다리고 있는 상태
TIMED_WAITING 일정 시간 대기 상태. sleep() 메서드, join() 메서드 또는 일정 시간을 지정한 wait() 메서드에 의해 대기하고 있는 상태
TERMINATED 종료된 상태. 스레드의 실행이 정상적으로 종료되거나 예외가 발생하여 실행이 완전히 종료된 상태
쓰레드 상태 변경 함수
함수명 설명
start() 쓰레드를 시작하고 Runnable상태로 만듭니다.
join() 쓰레드가 종료될 때까지 기다립니다.
sleep() 쓰레드를 일정 시간 동안 일시 중지합니다.
wait() 쓰레드를 동기화 블록에서 차단하고 다른 쓰레드가 notify()또는 notifyAll메서드를 호출할 때까지 기다립니다.
notify() 동기화 블록에서 차단된 쓰레드를 하나 깨웁니다.
notifyAll() 동기화 블록에서 차단된 모든 쓰레드를 깨웁니다.

파일h_FileIO

주제 내용
파일 A1 d:\에 test.txt파일을 생성하고 작성합니다.
A2 자기자신의 경로를 가져옵니다.
B 컴파일 가능한 자바파일C을 생성합니다.(eclipse환경)
C 스스로를 삭제합니다.

네트워크i_Network

주제 내용
InetAddress A "google.com"의 IP주소를 가져옵니다.
Socket B1 소켓을 생성합미다.
B2 소켓으로 "google.com"에 접속을 시도합니다. 응답내용을 .html에 저장합니다.
B3 소켓으로 "google.com"에 접속을 시도합니다. 접속주소가 https인 경우 변경된 내용을 보여줍니다.
Sever /
Client
C1 서버를 생성합니다.(7777) 접속자에게 "환영합니다"를 출력합니다.
C2 내 서버에 접속합니다.(7777) C1이 실행중이어야 합니다. 메시지를 받아옵니다.
Sever /
Client
D1 서버를 생성합니다.(4040) 동시에 여러 접속자를 받을 수 있습니다. 사용자 채팅을 출력합니다.
D2 내 서버에 접속합니다.(4040) D1이 실행중이어야 합니다. 메시지를 작성할 수 있습니다.

스트림k_Stream

함수의 분류는 함수의 양이 많아서 임의로 분류하였습니다. 분류의 의미는 없습니다.

주제 내용
stream A stream으로 출력합니다. 출력된 내용은 재사용 할 수 없습니다.
range B 출력 범위를 제한할 수 있습니다.
명시 C 출력 내용을 나열하지 않고, 명시 할 수도 있습니다.
D iterate(): 조건식을 통해, 요소를 추가합니다.
empty(): 빈 출력을 생성합니다.
count(): 출력갯수를 확인 합니다.
조작 E1 distinct(): 중복을 제거합니다.
filter(): 조건에 맞는 대상만 출력합니다.
E2 map(): 요소를 조건에 맞게 변경합니다.
flatMap(): 단일 스트림으로 변경합니다.
E3 skip(): 최초 n개의 요소를 거릅니다.
limit(): 최대 n개의 요소까지 출력합니다.
E4 sort(): 정렬합니다.(오름차순)
내림차순 정렬을 위해 Comparator.reverseOrder()을 제시합니다.
E5 peek(): 중간과정을 처리합니다.
F1 reduce(): 하나의 값으로 축소합니다.
*optional: java8부터 도입, 출력값 없음을 대비한 클래스
F2 findFirst(): 첫 요소를 선택
*getAsInt(): optianl객체를 int타입으로 변환
F3 anyMatch(): 조건에 맞는 요소가 하나라도 있는지
allMatch(): 모든 요소가 조건에 맞는지
F4 count(): 요소의 갯수
max(): 요소 중 최대값을 선택
max(): 요소 중 최소값을 선택
F5 sum(): 요소의 합
average(): 평균 값
F6 collect(): 요소를 수집하여, 커스텀 로직으로 구현합니다.
F7 collect(Collectors): 조건에 따라 n개의 그룹으로 나눕니다.
Optional G1 Null방어
ofNullable(): Null이 대입된 수 있는 상태입니다. Null을 요청할 때, 방어할 목적으로 사용합니다.
G2 isPresent(): 값이 존재하는지 확인
orElse(""): 존재하지 않을 때, 내용 출력
orElseGet(): 값이 존재 할 때, 값 출력