Programming Language

Ⅲ. 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..
Ⅲ. 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..
Ⅱ. Multi-Thread의 필요성 1. Multi-Thread의 필요성 - Thread는 동시성(Concurrency)과 병렬성(Parallelism)을 가지고 수행 (시간별로 스레드에 할당하는 시간이 나뉘어 있기 때문) ※ 동시에 실행하는 것 같지만 순차적으로 실행 (CPU가 동시에 둘 이상의 스레드를 돌리진 않음)
Ⅰ. Program vs. Process vs. Thread의 개념 1. Program vs. Process vs. Thread의 개념 - 프로그램 : 실행 가능한 형태의 소프트웨어 - 프로세스 : 실행 중인 프로그램 (변수) - 스레드 : 프로세스의 작업 단위 ※ 자바로 만든 프로그램에서도 스레드가 만들어지고 동작할 수 있음 - Loading을 두번 실행하면 → 멀티 프로세스 (Multi-Process) 2. Process의 구조 3. Java Program상의 Thread
Ⅲ. 예외(Exception) 클래스 사용자 정의 1. 사용자 정의 예외 클래스 작성 및 발생방법 - Exception 상속 : 일반예외(Checked Exception)으로 생성 - RuntimeException 상속 : 실행예외(UnChecked Exception)으로 생성 // Example package sample; class AgeException extends Exception { } public class Main { public static void ticketing(int age) throws AgeException { if(age < 1) { throw new AgeException(); } System.out.println("티켓을 구매해 주셔서 감사합니다"); } public st..
Ⅱ. 예외(Exception)의 전가(throws) 1. 예외의 전가(throws) - 예외 처리를 자신이 호출된 지점으로 전가 (이 경우 예외처리는 전가받은 상위위치에서 처리) → 즉, 예외가 발생하는 지점에서 예외 처리하지 않고, 바깥으로 넘김 - 메소드이름(…) throws 예외클래스 // Example package sample; public class Main { public static void methodA() throws Exception { methodB();// B가 A로 발생 예외를 전가함 } public static void methodB() throws Exception { methodC();// C가 B로 발생 예외를 전가함 } // throws : 발생 예외를 전가함 publi..
Ⅰ. 예외(Exception) 및 예외 처리 - 코드는 문법을 기반으로 작성함 - 문법을 틀리면, 코드가 동작할 수 없음 (컴파일러가 컴파일을 안 해주기 때문) 1. 예외(Exception)와 에러(Error)의 차이점 - 오류(Error) : 문법이 틀려서 동작할 수 없는 상태 → 수습 불가능, 코드를 수정해야 함 - 예외(Exception) : 문법은 맞는데 프로그램 논리적으로 맞지 않아 발생하는 객체 → 수습 가능, 코드를 추가하여 피해감 2. 예외 처리 - 예외의 종류는 무척 다양함 (또한, 각 예외마다 이름을 가지고 있음) - 프로그램 실행 중 예외가 발생하면 프로그램 내에서는 예외 객체가 생성됨 → 이를 감지하여 처리해 주는 작업을 가리켜 '예외 처리'라고 함 - 예외 처리를 위해서는 try-..
(참고만) Ⅲ. 이너인터페이스(inner interface) 1. 내부 인터페이스 ※ 이너인터페이스는 정적(static)이너인터페 이스만 가능 (static 생략시 자동 추가)
Ⅱ. 익명이너클래스(Anonymous class) 1. 익명 이너클래스 ← 익명(이름을 알 수 없음) + 이너클래스 - 인터페이스의 객체를 별도로 생성하지 않고 사용가능 - 내부적으로만 호출 가능 // Example //인터페이스를 상속한 이너클래스를 생성하여 인터페이스 객체 생성 package sample; class A { C c = new B(); void abc() { c.bcd(); } class B implements C { public void bcd() { System.out.println("인스턴스 이너클래스"); } } } interface C { public abstract void bcd(); } public class Main { public static void main(Stri..
NewBean
'Programming Language' 카테고리의 글 목록 (3 Page)