티스토리 뷰

* 간단한 Java의 소개

 - 1995년에 미국의 선 마이크로 시스템즈가 개발한 객체지향 프로그래밍 언어이다.

 

 

* Java언어의 장단점

 1) 장점

    - 운영체제에 독립적이다.

      (JVM에서 동작하기 때문에, 특정 운영체제에 종속되지 않는다.)

    - 객체지향 언어이다.

    - 기본 자료형을 제외한 모든 요소들이 객체로 표현된다.

    - 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어이다.

    - Garbage Collector를 통해 자동으로 메모리 관리를 해준다.

    - 오픈소스이다.

    - 많은 웹개발자들에게 사랑을 받는다.

    - 멀티스레드를 지원한다.

 2) 단점

    - 비교적 속도가 느리고 무겁다.

    - 한번의 컴파일링으로 실행 가능한 기계어가 만들어지지 않고 JVM에 의해

     기계어로 번역되고 실행하는 과정을 거치기 때문에 C나 C++의 컴파일 단계

     에서 만들어지는 완전한 기계어에 비하면 속도가 느리다.

    - 예외처리가 불편하다.

 

 

* OOP (객체지향 프로그래밍)

  - Object-Oriented-Programming의 약어.

  - 코드의 재사용성이 높다.

  - 코드의 변경이 용이하다.

  - 직관적인 코드분석.

  - 개발속도 향상

  - 상속을 통한 장점 극대화.

 

 

* OOP의 4가지 특징

1. 추상화

  - 구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 것.

  - 쉽게 이야기해 객체들의 공통적인 데이터 및 기능을 도출하는 것.

2. 캡슐화

  - 정보 은닉 (필요가 없는 정보는 외부에서 접근하지 못하도록 제한하는 것)

  - 객체가 맡은 역할을 수행하기 위한 하나의 목적을 위해 데이터와 기능들을 묶는 것을 말한다.

3. 일반화

  - 여러 개체들의 가진 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립시키는 과정

4. 다형성

  - 서로 다른 클래스의 객체가 같은 메세지를 받았을때 각자의 방식으로 동작하는 능력

  - 한 요소에 여러 개념을 넣어놓은 것 (오버라이딩, 오버로딩도 해당된다.)

 

* Java의 접근 제어자의 종류와 특징

접근 제어자 표시 설명
public + 어떤 클래스의 객체에서든 접근 가능
private - 자신의 클래스에서 생성된 객체들만 접근 가능
protected # 이 클래스와 동일 패키지에 있거나 상속 관계에 있는 하위 클래스의 객체들만 접근 가능
default ~ 동일 패키지에 있는 클래스의 객체들만 접근 가능

 

 

* Object

  - 상태와 행위가 존재한다는 의미.

  - OOP에서 데이터와 그 데이터에 관련된 동작(함수). 즉 절차, 방법, 기능을 모두 포함한 개념.

  

 

* 객체지향 프로그래밍과 절차지향 프로그래밍의 차이

  1) 절차지향 프로그래밍

    - 실행하고자 하는 절차를 정하고, 이 절차대로 프로그래밍하는 방법

    - 목적을 달성하기 위한 일의 흐름에 중점을 둔다.

  2) 객체지향 프로그래밍

    - 실세상의 물체를 객체로 표현하고, 이들 사이의 관계 및 상호 작용을 프로그램으로 나타냄.

    - 객체를 추출하고 객체들의 관계를 결정하고 이들의 상호 작용에 필요한 함수와 변수

    - 객체 지향의 행심은 연관되어 있는 변수와 메서드를 하느의 그룹으로 묶어서 그룹핑하는것.

    - 사람의 사고와 가장 흡사한 프로그래밍 기법

    - 하나의 클래스가 여러개의 인스턴스가 될 수 있다.

 

 

* static 멤버와 non-static 멤버의 차이

   1) static 멤버

     - 맴버는 클래스당 하나가 생성된다.

     - 맴버가 객체 내부가 아닌 별도의 공간에 생성된다.

     - 클래스 맴버라고 부른다.

     - 클래스 로딩시에 맴버가 생성된다.

     - 객체가 생기기 전에도 이미 생성된다. 

     - 맴버는 프로그램이 종료되어야지 사라진다.

   2) non-static 멤버

     - 인스턴스맴버 (맴버는 객체마다 별도로 존재한다.)

     - 객체 생성시에 맴버가 생성된다.

     - 객체 생성 후 멤버 사용이 가능하다.

     - 객체가 사라지면 맴버도 사라진다.

  PS : 쉽게 이야기해 클래스 맴버인가 객체 맴버인가의 차이를 둔다.

 

 * Overloading, Override

   1) Overloading

    - 같은 이름의 메소드를 여러개 정의하는 것을 의미하는데

      매개변수의 타입이 다르거나 개수가 달라야 한다.

   2) Override

    - 상속에서 나온 개념으로써 상위 클래스의 메소드를 하위

      클래스에서 재정의하는 것을 의미한다. 

 

 * Servlet, JSP

    1) Servlet

     - 웹프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게

       전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그래밍 기술.

     - 자바를 사용하여 웹을 만들기 위해 필요한 기술로도 볼 수 있다.

    2) JSP : Java Server Page의 줄임말로 html에 Java코드를 블록화해서 삼입한것을 의미한다.

 

 * String, Stringbuffer, StringBuilder의 차이.

    1) String

     - String 객체는 immutable (불변) 이다.

     - String 객체는 Heap 메모리 영역에 생성한다.

     - 한번 생성이 되면 변경이 불가능한 특징을 가지고있다. 

     - 일반적으로 짧은 문자열을 사용한다.

    2) StringBuffer

     - mutable (변함) 특징을 가지고 있다.

     - 객체의 공간이 부족하더라도 기존의 버퍼 크기를 늘리며 유연하게 동작하는 특징이 있다.

     - String, int, char 등등 타입의 데이터를 concat할때 사용 가능하다.

     - + 를 활용해서 데이터 내용을 추가할때 사용하는 기능이랑 같으나

      이를 더 간결하게 하기위해 사용한다.

     - 각 메서드별로 Synchronized Keyword가 존재한다.

     - 쓰레드에 안전한 프로그램이 필요할때 사용. 

    3) StringBuilder

     - 쓰레드에 안전한지 여부가 전혀 관계 없는 프로그램을 개발할 때 사용하면 좋다.

 

    PS : - StringBuffer, StringBuilder의 큰 차이는 각각 멀티쓰레드 환경에서 동기화를 보장하는지

          안하는지의 차이이다. 

          - 성능으로 치면 StringBuilder > String Buffer > String 이렇게 보면 된다.

 

* int와 Integer의 차이

  1) int

   - primitive 자료형

   - null로 초기화 할 수 없다.

   - Boxing (Primitive 자료형 -> Wrapper 클래스)

  2) Integer

   - Wrapper 클래스 (객체)

  - UnBoxing (Wrapper 클래스 -> Primitive 자료형)

   - Unboxing을 하지 않으면 산술 연산이 불가능 하지만, null 값을 처리할 수 있다.

   - null값 처리가 용이하기 때문에 SQL과 연동할 경우 처리가 용이하다.

   - DB에서 자료형이 정수형이지만 null 값이 필요한 경우 VO에서 Integer를 사용할 수 있음.

 

* 바이트코드

 - 자바 가상 머신이 실행하는 명령어의 형태이다.

 - 각각의 바이트코드는 1바이트로 구성.

 

* 기본자료형, 참조자료형

 1) 기본자료형

분류 이름 바이트 수 비고
정수형 byte 1 -127 ~ + 128
short 2 ~32,768 ~ + 32,767
int 4 ~2,147,483,648 ~ + 2,147,483,648
long 8 -9,223,372,036,854,775,808~ +9,223,372,036,854,775,807
실수형 float 4 단정도 실수형 (유효 자리는 7정도임)
double 8 배정도 실수형 (유효 자리는 15정도임)
문자형 char 2 유니코드 문자열
논리형 boolean 1 true, false

 

* 접근 제어자 

 1) Public

  - 모든 접근이 허용된다.

 2) Protected

  - 같은 패키지에 있는 객체들 중 상속관계의 클래스들만 허용된다.

 3) Private

  - 현재 클래스 내에서만 허용된다.

 4) default

  - 같은 패키지에 있는 클래스들만 허용된다.

 

* 추상클래스 (abstract class)와 인터페이스 (interface)에 대해~~

  1) 추상클래스

   - abstract를 이용한 미완성 매서드로 형태만 정의해두고 몸체는 없는 상태의 클래스.

   - 상속을 진행하고 상속받은 자식클래스에서 반드시 재정의를 해야한다.

     그렇지 않으면 컴파일 에러가 발생한다.

   - 상속을 통해 기능을 확장하는데에 의미가 크다.

  2) 인터페이스

   - 추상클래스보다 추상화가 더 높다.

   - 기능의 재정의에 큰 의미를 둔다.

   - 맴버 변수와 일반 메소드를 가질 수 없으며 오직 상수와, 추상 메소드만 선언가능.

   - implement 키워드를 이용하여 상속을 진행.

   - 클래스에서 지원하지 않는 다중상속이 가능.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함