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 |