Ⅰ. 컬렉션 프레임워크 (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..
Ⅲ. Thread의 생성 및 실행방법 1. Thread 생성방법 및 실행방법 - 생성방법1 : Thread class를 상속받아 run() 메소드 재정의 - 생성방법2 : Runnable interface 구현 (추상메소드(run()) 구현) → Thread 생성자로 Runnable 객체 전달 - 실행방법 : Thread 객체내의 start() 메소드 호출 // Example1 package sample; // Runnable 인터페이스를 상속해 클래스를 만들면, 멀티 스레드 동작 가능 class Task1 implements Runnable {// Runnable는 인터페이스 public void run() {// run() : 실행한다 // 여기에 스레드가 처리할 작업을 넣어주면 됨 } } // Th..