프로그램이란?

컴퓨터가 사람의 일을 할 수 있도록 해주는 것

컴퓨터에 처리되는 작업의 순서를 논리적으로 명령어로 작성하는 것

사용자의 명령에 반응하는 소프트웨어(프로그래밍의 결과문)

 

Java언어의 좋은 점

플랫폼 독립적이라서 여러 운영체제나 하드웨어에서도 동일하게 실행된다.

많은 오픈소스 프레임워크로 생산성을 증가하고 유지보수 비용을 절감할 수 있다.

간결하면서도 강력한 객제지향언어이다.

이식성 우수, 라이브러리 지향성, 보안성, 멀티스레드, 가상머신(JVM), 바이트코드

 

객체지향언어(Object Oriented Programming)의 장단점

*장점

 

캡슐화

필요한 속성과 행위를 하나로 묶고 그중 일부를 외부에서 사용하지 못하도록 은닉한다.

관련된 코드와 데이터가 묶여있고 오류가 없어 사용이 편리합니다. 데이터를 감추고(private) 외부 세계와의 상호작용은 메서드(getter, setter)를 통하는 방법인데, 라이브러리로 만들어 업그레이드하면 쉽게 바꿀 수 있습니다.

 

상속(extends)

이미 작성된 클래스를 이어받아서 새로운 클래스를 생성하는 기법으로 기존 코드를 재활용해서 사용하는 것을 의미한다.

 

다형성(polymorphism)

하나의 이름으로 많은 상황에 대처하는 기법.(하나의 객체가 여러가지 타입을 가질수 있는 것)

개념적으로 동일한 작업을 하는 함수들에 똑같은 이름을 부여할 수 있다.

조상클래스의 인스턴스를 이용하여 자손타입의 클래스를 다룬다거나, 메서드 오버로딩을 통하여 동일이름의 메서드를 이용하여 다양한 형태의 파라미터를 다루는 것.

  • 참조글 : https://chlee21.tistory.com/70?category=935054

 

*단점

개발 설계의 복잡함, 느려지는 런타임 속도

 

자바의 데이터 타입인 Primitive Type과 Reference Type이란?

데이터타입 설명
Primitive Type 기본형 타입으로 변수에 값 자체를 저장한다.
기본값이 있기때문에 Null이 존재하지 않는다. Null을 넣고 싶다면 래퍼클래스를 활용한다.
실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다.
컴파일시 담을수 있는 크기를 벗어나면 컴파일에러가 발생한다.
byte(1), short(2), char(2), int(4), long(8), float(4), double(8), boolean(2) 총 8가지이다.
Reference Type 참조형 타입으로 메모리상에 객체가 있는 위치를 저장한다.
빈 객체를 의미하는 Null이 존재한다.
값이 저장되어 있는 곳의 주소값을 저장하는 공간 힙(Heap) 메모리에 저장된다.
클래스타입, 열거타입, 인터페이스타입, 배열타입이 있다. 할당메모리크기 (4)

 

배열과 컬렉션의 차이점

배열은 하나의 자료형만 저장할 수 있고 크기가 고정적이다.

컬렉션은 복수의 자료형을 저장할 수 있고 크기가 가변적이다.

 

멀티스레드의 장단점

두 가지 이상의 작업을 동시해 실행 할 수 있어 자원을 효율적으로 이용할 수 있으나 dead lock 및 동기화에 대한 철저한 검증이 필요하다.

 

멀티스레드 구현방법

Thread 클래스를 상속(단일상속만 가능)받는법과 Runnable 인터페이스를 상속(다중상속 가능)받는법

  • 참조글 : https://chlee21.tistory.com/7?category=935054

 

Java 컬렉션의 대표 인터페이스는 ?

List : 순서가 있는 데이터의 집합으로 중복을 허용한다.

구현클래스 - ArrayList, LinkedList, Stack, Vector

 

Set : 순서를 유지하지 않는 데이터의 집합으로 중복을 허용하지 않는다.

구현클래스 - HashSet, TreeSet

 

Map : 키와 값이 쌍으로 이루어진 데이터의 집합으로 순서는 유지되지 않으면 키는 중복을 허용하지 않고 값은 중복을 허용한다.

구현클래스 - TreeMap, HashMap, HashTeble, Properties

 

컬렉션 List 인터페이스를 구현한 ArrayList 컬렉션 클래스란 ?

가변적 크기이다.

순차적으로 요소 값을 저장한다.

중복 요소 값을 허용한다.

 

 

컬렉션에 제네릭이 추가된 이유

컬렉션엔 다향한 데이터 타입이 들어갈 수 있는데 이를 명확하게 표시하기 위해 제네릭이 추가되었다.

컬렉션은 복수개의 데이터 타입 요소값이 저장되다 보니 원하는 자료형 타입 요소값을 추출하기 어렵다.

그러므로 지정한 자료형 타입 한가지만 저장하기 위해서 나온 것이 제네릭이다.

 

접근제어자의 종류와 특성

public : 접근 제한이 없다.

protected : 같은 패키지 내에서, 그리고 다른패키지의 자손클래스에서 접근가능

default : 같은 패키지 내에서만 접근가능

private : 같은 클래스 내에서만 접근가능

 

접근허용범위 : public > protected > default > private

 

Wrapper 클래스란 무엇인가?

primitive 타입으로 표현할 수 있는 간단한 데이터를 객체로 만들어야할 경우가 있는데 그러한 기능을 지원하는 클래스

byte Byte
short Short
int Integer
long Long
char Charater
float Float
double Double
boolean Boolean

 

추상클래스란 ?

클래스를 설계도에 비유하자면 추산클래스는 미완성 설계도에 비유할 수 있다.

미완성 설계도란, 단어의 뜻 그대로 완성되지 못한 채로 남겨진 설계도를 말한다.

클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라, 단지 미완성 메서드(추상메서드)를 포함하고 있다는 의미이다. 미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로 인스턴스는 생성 할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.

 

1. 추상클래스는 뭐? 실체클래스의 공통적인 부분(변수,메서드)를 추출해서 선언한 클래스

2. 추상클래스는 객체를 생성할 수 없다! 아직은 실체성이 없고 구체적이지 않기 때문에!

3. 추상클래스와 실체클래스는 어떤관계? 상속관계!

 

추상클래스 사용이유

1. 공통된 필드와 메서드를 통일할 목적

2. 실체클래스 구현시, 시간절약

3. 규격에 맞는 실체클래스 구현

 

인터페이스란 ?

자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위해 사용한다.

인터페이스는 일종의 추상클래스이다. 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화정도가 높아서 추상클래스와는 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 

오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외 어떠한 요소도 허용하지 않는다. 추상클래스를 부분적으로 완성된 '미완성 설계도'라고 한다면, 인터페이스는 구현된 것은 아무것도 없고 밑그림만 그려져 있는 '기본 설계도'라고 말 할 수 있다. 인터페이스는 인터페이스로부터만 상속받을 수 있으며, 클래스와 달리 다중상속, 즉 여러개의 인터페이스로부터 상속을 받는 것이 가능하다.

 

자바의 GUI에서 스윙과 AWT의 차이점

AWT(Abstract Window Toolkit)는 운영체제가 갖고 있는 각 컴포넌트를 이용한다. 즉 운영체제에 종속적인 GUI로서 운영체제 종류에 따라 화면에 출력되는 모양이 약간씩 다르다.

스윙은 운영체제가 갖고 있는 GUI를 사용하지 않고 자바 가상머신의 Swing패키지를 직접 사용해 구현한다.

따라서 운영체제가 달라도 동일한 화면을 출력하게된다. 스윙이 AWT보다 세련되고 다양한 GUI를 제공해주기 때문에 자바 어플GUI개발에서는 AWT보다 스윙을 더 많이 사용한다.

 

가비지 콜렉터란 ?

Garbage Collection은 동적 할당된 메모리 영역(Heap) 가운데 더이상 사용할 수 없게 된 영역을 탐지하여 자동으로 해제하는 기법이다. 쓰레기 수집이 지원되는 환경에서는 프로그래머가 동적으로 할당한 메모리 영역의 전체를 완벽하게 관리할 필요가 없어진다. 이러한 작업은 CLR의 '가비지컬렉터'라는 일종의 백그라운드 서비스를 통해 자동으로 이뤄진다.

 

오버로딩과 오버라이딩의 차이점

오버로딩 : 메소드의 이름은 같지만 데이터 형식이나 매개변수의 개수를 다르게 정의하는 것

오버라이딩 : 기존의 메소드를 재정의 하는 것으로 데이터 형식이나 매개변수의 개수가 같아야 한다.

 

Exception 이란?

프로그램의 비정상적인 종료나 중단을 막을 수 있다.

RuntimeException(실행시 발생하는 예외)이나 그 외 Exception(컴파일시 발생하는 예외)으로 나눌 수 있다.

직접 처리하는 방식은 try ~ catch

다음 처리할 곳으로 넘기는 방식은 throws

 

동기화란 ?

하나의 자원을 여러 태스크가 사용하려 할 때, 한 시점에서 하나의 태스크만 사용할 수 있도록 하는 것.

 

프로세스와 쓰레드의 차이점

프로세스 : 실행 중인 프로그램, 자원과 쓰레드로 구성

쓰레드 : 프로세스 내 실제 작업을 수행하는 단위, 모든 프로세스는 하나 이상의 쓰레드를 가지고 있다.

멀티쓰레드 : 하나의 프로세스에 하나 이상의 쓰레드를 생성하여 실행

 

+ Recent posts