본문 바로가기

스터디/JAVA

(7)
[JAVA] 추상 & 메서드 [추상] 어느 정도의 틀은 잡아놓고 다형성을 이용하여 추상클래스의 자식들은 메서드를 오버라이딩하여 클래스를 완성시킨다. 정해진 틀은 있지만 각 클래스마다 별도로 작성되기 때문에 다들 개성이 살아있다. package ch09.abstract11; public abstract class Employee { protected String empno;// 사번 protected String name;// 이름 public Employee(String empno, String name) { this.empno = empno; this.name = name; } public void showEmployeeInfo() { System.out.println("-------------------"); System.out..
[JAVA] 컬렉션 [컬렉션 프레임워크] 자바는 널리 사용되는 자료구조를 바탕으로 객체들을 효율적으로 관리할 수 있게 해주는 인터페이스나 클래스들을 총칭해서 컬렉션 프레임워크라고 한다. 컬렉션의 주요 인터페이스로는 List, Set 등 2가지 종류가 있다. LIFO 자료구조를 제공하는 스택 클래스와 FIFO 자료구조를 제공하는 큐 인터페이스를 제공한다. 스택을 응용한 대표적인 예가 JVM 스택 메모리이다. LIFO : 스택 메모리에 저장된 변수는 나중에 저장된 것부터 제거된다. FIFO : 작업 큐는 먼저 들어온 작업부터 처리한다. [스택] 스택은 LIFO자료구조로 구현한 클래스이다. 예시로 지갑에서 먼저 넣은 동전이 밑으로 쌓이고 늦게 넣은 동전일수록 먼저 사용하게 되므로 LIFO자료구조이다. [List 컬렉션] 순서를 ..
[JAVA] Thread [스레드의 개념] 운영체제는 실행 중인 프로그램을 프로세스로 관리한다. 멀티 태스킹은 두 가지 이상의 작업을 동시에 처리하는 것을 말하는데, 이때 운영체제는 멀티 프로세스를 생성해서 처리한다. 멀티 프로세스들은 서로 독립적으로 구성되어 있기 때문에 하나의 프로세스에 오류가 발생해도 다른 프로세스에는 영향을 미치지 않는다. 하지만 멀티 태스킹이 꼭 멀티 프로세스를 뜻하지 않는다. 하나의 프로세스 내에서 멀티 태스킹을 할 수 있도록 만들어진 프로그램이 있다. 예시로 카카오톡은 채팅 작업도 하면서 동시에 파일 전송을 같이 하기 때문에 멀티 스레드를 사용하는 프로그램이다. 멀티 스레드 기능을 사용하는 카카오톡 같은 경우에는 메신저 기능의 스레드가 오류가 발생하면 파일 전송 스레드도 프로세스 자체도 종료되기 때문..
[JAVA] 상속 [상속의 개념] 상속이란 부모클래스가 자식클래스에게 필드와 메서드를 물려주는 것을 말한다. 우선 코드로 먼저 확인해 보자. [상속을 사용하지 않았을 때] public class Child { public static void main(String[] args) { int result = valueAdd(10, 20); // Parent 클래스 내부에서 valueAdd 메서드 호출 System.out.println("a + b = " + result); } public static int valueAdd(int a, int b) { int result = a + b; return result; } } public class Kid { public static void main(String[] args) {..
[JAVA] 배열 [배열의 개념] '배열이란 동일한 타입의 자료형끼리만 사용이 가능하고 순차적인 자료 구조를 띄고 있다. 변수는 어떠한 값을 저장해서 사용하는 게 전부이지만, 배열은 인덱스연산자[]를 통해 보다 빠른 참조가 가능한 자료형이다. 그리하여 배열은 같은 타입의 값들을 배열이라는 곳에 모아 데이터를 구조적으로 다루는데 도와준다. 배열을 구성하는 각 값들은 요소(element)라고 하며, 해당 요소의 위치를 인덱스(index)라고 한다. 배열에는 1차원 배열과 2차원 배열 2가지가 존재한다. [배열의 선언 & 초기화] 배열은 처음에 선언해줄때 꼭 배열의 크기를 정해주어야 한다. int[] num = new int[5]; // 기본 초기화 방법 int[] num = {1,2,3,4,5};// num이라는 객체를 선언..
[JAVA] 클래스 [클래스와 객체] 자바는 객체 지향 언어이다. 객체 지향이란 현실세계를 예시로 들 때 특정한 제품들을 만드려고 할 때 여러 가지 부품들을 이용하고 해당 부품들을 결합하여 하나로 조립하는 과정을 말한다. 애플이라는 회사를 예시로 들 때 아이폰을 만들기 위한 설계도가 있고 해당 설계도를 이용하여 각종 부품들을 구현한다고 칠 때 설계도가 클래스고, 각종 부품들을 객체라고 할 수 있다. 즉 클래스란 제품을 만들기 위한 설계도이고, 객체란 클래스를 통해 만들어낸 제품이라고 할 수 있다. [인스턴스] 클래스를 통해 객체를 선언하는 과정 할 때의 과정을 인스턴스화라고 한다. 객체와 인스턴스는 의미가 똑같은 것 같지만 사실은 다르다. 쉽게 이해하기 위해 예시를 하나 들어보겠다. public class Animal { ..
[JAVA] 변수와 타입 [자바의 메모리 영역] 자바 프로그램이 실행되면 JVM(Java virtual Machine)이 os로부터 메모리 값을 할당받게 되고, 컴파일러가 소스코드를 바이트 코드로 컴파일하게 된다. 이때 메모리의 영역이 크게 Stack, Heap, 메서드 영역으로 구분된다. [Stack 영역] 기본형 타입의 데이터에 해당하는 지역 변수, 매개변수의 인자값들이 저장된다. Heap영역에 있는 객체들을 가리키는 참조변수를 저장한다. 힙 영역보단 작지만 바로 실행이 가능한 공간이다. 파일이 실행되면서 main메서드가 실행되고 값들이 스택에 올라가게 된다. [Heap 영역] 스택보다 훨씬 큰 데이터 공간을 가지고 있고 상대적으로 오랫동안 값을 보관하는 것이 가능하다. 클래스같이 파일 용량이 큰 것들을 Heap영역에 저장해..