본문 바로가기

정보처리기사

프로그래밍 언어 활용(자바)

1. 자바

 

 

(1) 자바 기본 구조

- 모든 소스 코드는 클래스 단위로 구성

- 클래스는 객체 지향 관점에서 객체(Object)를 정의하는 틀로서 변수(Variable)와 메서드(Method)로 구성

 

 

public class Soojebi { // 클래스 생성
    public static void main(String[] args){ // 프로그램은 main 함수부터 시작
        System.out.pirntln("Hello");
    }
}

 

 

- 자료형(Data Type): 프로그래밍 언어에서 정숫값, 실숫값과 같은 여러 종류의 데이터를 식별하는 형태

- 자료형 유형: 문자형(char), 문자열형(String), 정수형(byte, short, int, long) 부동 소수점형(float, double), 논리형(boolean)

 

 

(2) 변수(Variable)

- 저장하고자 하는 어떠한 값이 있을 때, 그 값을 주기억장치에 기억하기 위한 공간

- 변수 유효범위(Scope): 클래스 변수, 지역 변수, static 변수

- 클래스 변수: 클래스 블록에 선언하는 변수로 클래스가 시작되면 변수가 생성, 종료되면 소멸

- 지역 변수: 블록 내 선언하는 변수로 블록이 시작되는 부분에 바로 선언해주어야 하고, 해당 블록 안에서만 사용

- static 변수: static 키워드 사용하여 프로그램 시작되면 변수가 생성되고 종료되면 소멸, 프로그램 전체에서 사용 가능(초기화 한 번만 수행)

 

 

(3) 배열(Array)

- 같은 자료형의 변수들로 이루어진 집합

- 1차원 배열 선언 및 초기화: 자료형[] 배열명 = new 자료형[배열_요소_개수]; / 자료형[] 배열명 = {초깃값};

- 2차원 배열 선언 및 초기화: 자료형[][] 배열명 = new 자료형[행의 개수][열의 개수]; / 자료형[][] 배열명 = {{초깃값}, {초깃값}, …};

- 배열 크기: length 속성 사용

 

 

(4) 표준 입출력 함수

- 표준 출력 함수: print, println, printf

- 표준 입력 함수: readLine

 

 

System.out.print() 개행 안 하는 출력 함수
System.out.println() 개행하는 출력 함수
System.out.printf() 지정된 포맷 출력 함수
System.in.readLine() 키보드로부터 한 글자씩 받아 라인 전체를 읽는 입력 함수

 

 

(5) 연산자

- C언어 연산자와 동일

- 문자열 연산 결과는 문자열

 

 

(6) 반복문

- C언어 제어문과 동일: if, swich, for, while, do while 문

- for each 문: 배열이나 리스트 크기만큼 반복할 때마다 배열이나 리스트의 항목을 순차적으로 변수에 대입

 

 

for(제어변수:배열){
    문장;
}

 

 

(7) 메서드

- 사용자 정의 함수(User-Defined Function)

- 매개변수나 생성된 변수는 사용자 정의 함수가 종료되면 소멸

 

 

자료형 함수명(자료형 변수명, …){
    명령어;
    return 반환값;
}

 

 

- static 메서드: 클래스가 메모리에 올라갈 때 자동적으로 생성되는 메서드로 인스턴스 생성하지 않고 클래스명.메서드명 형태로 호출 가능

 

 

(8) 클래스

- 객체 지향 프로그래밍(OOP; Object-Oriented Programming)에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 틀

- 클래스 접근 제어자: public, protected, (default), private

- 정보 은닉: 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술

- 클래스 변수 생성: new 키워드로 인스턴스 생성하여  변수명.메서드명 형태로 변수를 이용해 클래스의 메서드 접근

- 현재 객체를 가리키는 this 키워드로 클래스 내부의 변수와 메서드를 가리킴

 

 

클래스명 변수명 = new 클래스명(파라미터);
변수명.메서드명();

this.변수;
this.함수(매개변수);

 

 

(9) 생성자(Constructor)

- 해당 클래스의 객체가 생성될 때 자동으로 호출되는 특수한 종류의 메서드

- 클래스명과 동일한 메서드명을 가지고, 반환 값 없음

- 생성자가 없을 경우 public 클래스명(){} 형태의 아무 일도 하지 않는 생성자 자동 생성

 

 

public class 클래스명{
    public 클래스명(매개변수){ // 생성자 정의
        명령어;
    }
}

클래스명 클래스변수 = new 클래스명(매개변수); // 생성자 호출

 

 

(10) 소멸자(Destructor) - finalize 메서드

- finalize 메서드는 객체의 수명이 끝났을 때 객체를 제거하기 위한 목적으로 사용되며, 반환 값 없음

 

 

public class 클래스명{
    public void finalize(매개변수){ // 소멸자 정의
        명령어;
    }
}

클래스변수.finalize(매개변수) // 소멸자 호출

 

 

(11) 클래스 상속(Inheritance)

- 부모 클래스의 변수와 메서드를 자식 클래스가 물려받는 기능

- 자식 클래스를 생성시 무조건 부모 클래스의 생성자를 실행한 후 자식 클래스의 생성자 실행

- 파이썬은 자식 클래스 생성시 자식 클래스의 생성자만 실행

- 부모 클래스 접근: super 키워드로 상위 클래스의 변수나 메서드 접근 super.변수; / super.메서드명();

 

 

class 부모_클래스명{
}
class 자식_클래스명 extends 부모_클래스명{
}

 

 

(12) 오버로딩, 오버라이딩

- 오버로딩: 동일 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의

- 오버라이딩: 하위 클래스에서 상위 클래스 메서드를 재정의

 

 

오버로딩 (Overloading) 오버라이딩 (Overriding)
메서드 이름 동일 오버라이딩하고자 하는 메서드가 상위 클래스에 존재
매개변수 개수 다름 메서드 이름 동일
매개변수 개수 같을 경우 데이터 타입 다름 메서드 매개변수 개수, 데이터 타입 동일
반환형 동일하거나 다름 반환형 동일

 

 

(13) 추상 클래스(Abstract Class)

- 미구현 추상 메서드를 한 개 이상 포함, 자식 클래스에서 해당 추상 메서드를 반드시 구현하도록 강제하는 기능

 

 

abstract class 추상_클래스명{
    abstract 자료형 메서드명();
}
class 자식_클래스명 extends 추상_클래스명{
    자료형 메서드명(){
        명령어;
    }
}

 

 

(14) 인터페이스(Interface)

- 오직 추상 메서드와 상수만을 멤버로 구성

- 구현된 것은 아무 것도 없고 밑그림만 그려져 있는 기본 설계도

 

 

interface 인터페이스_클래스명{
    자료형 메서드명();
}
class 자식_클래스명 implements 인터페이스_클래스명{
    자료형 메서드명();{
        명령어;
    }
}

 

 

(15) 스레드(Thread)

- 프로세스보다 가벼운, 독립적으로 수행되는 순차적인 제어의 흐름이며, 실행 단위

- 구현: Thread 클래스 상속, Runnable 인터페이스 상속

- Thread 클래스 상속: Thread 클래스 상속받고, run() 메서드 오버라이딩

- Thread 클래스 호출: Thread 스레스변수 = new 상속받은스레드클래스(); / Thread 스레드변수 = new Thread(new 상속받은스레드클래스());

- Runnable 인터페이스 상속: Runnable 인터페이스 상속받고, run() 메서드 오버라이딩

- Runnable 인터페이스 호출: Thread 스레드변수 = new Thread(new 상속받은스레드클래스());

- run() 메서드 실행: 스레드변수.start()

 

class T_Soojebi extends Thread{
    public void run(){
        // 스레드 동작시 수행할 코드
    }
}

class T_Soojebi implements Runnable{
    public void run(){
        // 스레드 동작시 수행할 코드
    }
}

 

 

(16) 컬렉션 프레임워크(Collection Framwork)

- 다수의 데이터를 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합

- 특징: 배열의 단점을 보완, 자료구조의 클래스로 구현, 일관된 인터페이스

- 유형: List, Set, Map 인터페이스

 

 

Collection List (순서 O, 중복 O) LinkedList  
Stack  
Vector (동기화 O)  
ArrayList (동기화 X)  
Set (순서 X, 중복 X) HashSet  
SortedSet  Three Set
Map <키(중복 X), 값(중복 O)> Hashtable (동기화 O)    
HashMap (동기화 X)    
SortedMap Three Map  

 

 

- LinkedList

- 데이터 삽입, 삭제가 빈번한 경우 ArrayList보다 효율적인 클래스로 Stack, Queue, Deque 와 같은 자료구조 쉽게 구현

- 메서드: add(값), add(인덱스, 값), remove(인덱스), size(), get(인덱스)

 

 

List 변수명 = new LinkedList();
LinkedList 변수명 = new LinkedList();

List<자료형> 변수명 = new LinkedList<자료형> ();
LinkedList<자료형> 변수명 = new LinkedList<자료형> ();

 

 

- ArrayList

- 크기가 가변적으로 변하는 선형리스트의 성질을 가지고 있는 클래스

- 메서드: add(값), add(인덱스, 값), remove(인덱스), size(), get(인덱스)

 

 

List 변수명 = new ArrayList();
ArrayList 변수명 = new LinkedList();

List<자료형> 변수명 = new ArrayList<자료형> ();
ArrayList<자료형> 변수명 = new ArrayList<자료형> ();

 

 

- HashSet

- 중복된 원소를 허용하지 않는 집합의 성질을 가지고 있는 클래스

- 메서드: add(값), remove(값), size()

 

 

Set 변수명 = new HashSet();
HashSet 변수명 = new HashSet();

Set<자료형> 변수명 = new HashSet<자료형> ();
HashSet<자료형> 변수명 = new HashSet<자료형> ();

 

 

- TreeSet

- 이진 검색 트리라는 자료구조 형태로 데이터를 저장하는 클래스

- 메서드: add(값), remove(값), size(), headSet(값보다 작은 객체들 반환), tailSet(값보다 큰 객체들 반환)

 

 

Set 변수명 = new TreeSet();
TreeSet 변수명 = new TreeSet();

Set<자료형> 변수명 = new TreeSet<자료형> ();
TreeSet<자료형> 변수명 = new TreeSet<자료형> ();

 

 

- HashMap

- 키와 값으로 구성된 객체를 저장하는 구조로 되어 있는 자료구조를 구현한 클래스

- 메서드: put(키, 값), remove(키), get(키), size()

 

 

Map 변수명 = new HashMap();
HashMap 변수명 = new HashMap();

Map<자료형> 변수명 = new HashMap<자료형> ();
HashMap<자료형> 변수명 = new HashMap<자료형> ();

 

 

- TreeMap

- 키와 값으루 고성된 객체를 저장하는 구조로 되어 있는 자료구조를 구현한 클래스

- 이진 검색 트리 형태로 데이터를 저장하여 자동 정렬되는 특성

- 메서드: put(키, 값), remove(키), get(키), size()

 

 

Map 변수명 = new TreeMap();
TreeMap 변수명 = new TreeMap();

Map<자료형> 변수명 = new TreeMap<자료형> ();
TreeMap<자료형> 변수명 = new TreeMap<자료형> ();

 

 

(17) 예외 처리(Exception Handling)

- 프로그램이 동작 중에 의도하지 않은 비정상적인 동작을 처리하는 기법

- 예외 처리 구문: try, catch, finally

- 의도적으로 예외를 던지는 예약어(런타임 에러 처리): throw

- 메서드에서 발생하는 예외를 던지는 예약어: throws

 

try {
    명령문;
}
catch (예외처리명) {
    예외처리_명령문;
}
 finally {
     명령문;
 }
 
 접근제어자 자료형 메서드명(매개변수) throws 예외처리명{
     명령문
 }

 

 

 

'정보처리기사' 카테고리의 다른 글

SQL 응용  (0) 2023.04.20
프로그래밍 언어 활용(파이썬)  (0) 2023.04.17
프로그래밍 언어 활용(C언어)  (0) 2023.04.12
인터페이스 구현  (0) 2023.04.07
통합 구현  (0) 2023.04.06