백엔드 멘토링

자바의 신 - 복습 정리(1)

piedra_de_flor 2023. 8. 27. 00:17

-IDE란?

= 통합 개발 환경으로 개발자가 효율적으로 개발하도록 도와주는 소스 코드 편집기

 

-마크업 언어란?

= 태그  등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지

 

-C언어, Python, Java의 차이?

= C언어 : 절차지향 언어

  Java, Python : 객체지향 언어


- 자바의 특징

= 객체지향 언어이며, jvm이라는 가상 머신을 사용하기 때문에 이식성이 좋고 GC가

  자동으로 메모리 관리를 해주기 때문에 편리하다


- 컴파일이란

= 고수준 언어(C, Java등등)을 컴퓨터가 이해할 수 있는 언어로 바꾸어 주는 과정


- JVM이란

= Java Virture Machine의 약어로 자바안에 내장된 가상 컴퓨터이다,

  이로 인해 이식성이 좋다는 장점이 있지만 속도가 저하된다.


- 객체란 무엇일까?

= 객체란 우리가 일상생활에서 볼 수 있는 물체를 비롯해 추상적인 것 들까지 우리가

   식별 가능한 개체를 말한다.

   
- 클래스는 무엇일까?

= 클래스란 객체를 분류하기 위한 추상화 도구이다.

 

- 객체지향이란?

= 캡상추다의 특성을 지닌 객체 중심적인 개발 기술을 말한다.


- 변수의 종류

= 지역 변수, 인스턴스 변수, 클래스 변수, 매개 변수


- static이 무엇인가?

= 변수 혹은 인스턴스를 전역 변수로 만들어 주는 키워드이다.


- 변수의 생명주기는 언제일까?

  • 지역 변수 : 변수가 실질적으로 선언될 때 생성되며 자신이 속한 중괄호가 닫힐 때 소멸된다.
  • 인스턴스 변수 : 자신이 속한 클래스의 인스턴스가 선언될 때 생성되며 인스턴스가 사용되지 않을 때 소멸된다.
  • 클래스 변수 : 프로그램이 시작될 때 생성되며 종료될 때 소멸된다
  • 매개 변수 : 메서드가 호출될때 생성되며, 메서드가 종료시 소멸된다.

- 자바의 기본 자료형(Primitive Type) <=> 참조 자료형(Reference Type)

 

정수형

  • byte : 1바이트
  • short : 2바이트
  • int : 4바이트
  • long : 8바이트

실수

  • float : 4바이트
  • double : 8바이트

문자형

  • char : 2바이트

논리형

  • boolean : 1바이트


- Primitive Type은 어디에 저장될까?
= 스택 메모리

 

- if, switch문 차이

  • if : 만날때 마다 인터럭션 발생
  • switch : 처음 입력값을 확인 할 때 만 인터럭션 발생

** if 문을 switch로 대체 가능시 switch 사용 권장**

 

- 배열이란?

= 연관된 데이터를 모아서 관리하기 위해 사용되는 데이터 타입(자료구조)


- 배열 삭제 과정

= 배열은 크기가 고정이므로 특정 인덱스의 요소를 제거하는 메서드 존재 X

  따라서 List로 변환후 제거 혹은 Stream 사용


- 배열은 어디에 저장되나?

= Heap 메모리에 저장

 

- 생성자?

= 인스턴스 초기화 메서드


- 오버라이딩, 오버로딩

다형성 구현을 목적

  • 오버라이딩 : 같은 이름의 메서드를 재정의 
  • 오버로딩 : 같은 이름의 메서드를 매개변수를 다르게 설정하여 재정의 

- 상속이란?
= 다형성을 구현하기 위해 사용하는 자바의 기술


- 다형성, 캡슐화, 추상화, 상속

= 객체지향의 4대 특성으로 각각

  • 다형성 : 같은 메서드의 이름으로 다른 동작을 하도록 하여 확장성과 유연성을 지원
  • 캡슐화 : 외부에 나의 정보를 은닉함으로써 결합도를 낮추고 데이터 보호를 지원
  • 추상화 : 유사한 상태 및 행위를 일반화 시킴으로 재사용성과 유연성을 지원
  • 상속 : 다형성을 지원하기 위한 자바의 기술


- 접근 제어자
= public, private, protected, default

 

- 동등성, 동일성
= 동등성은 값이 같은가, 동일성은 완전히 같은 객체인가

 

- ==, equals
= ==은 동일성, equals는 동등성


- equals, hashcode 같이 사용해야하는 이유

= equals는 내부적으로 ==을 통해 동일성을 비교하기에 재정의 하여 사용해야 하지만,

hashcode를 함께 재정의 하지 않을 경우 hash코드를 사용하는 자료구조를 사용할 때 문제가 발생한다.


- 매개 변수, 인자 차이

= 매개 변수 : 클래스에 정의된 필드 변수

= 인자 : 메서드를 호출할 때 함께 보내는 변수

 

- JVM

Java Vertual Machine의 약어로 자바 자체에서 가동되는 가상의 컴퓨터

이로 인해 다양한 OS에서 호환된다.


- Garbage Collection

= 자바의 쓸모없는 메모리를 정리해주는 메모리 관리 시스템

- enum vs final

= final로 선언한 상수는 단순히 값의 변경을 방지하기 위한 불변 변수로 사용되며, enum은 연관된 상수들을 그룹화하고 의미를 부여하기 위해 사용된다


- exception
    - error

    = 예외가 아닌 심각한 오류 상황이다. 개발자가 예측 할 수 없는 에러이다.
    - checked exception

    = 확인된 예외로 실행하기 전 컴파일러가 찾아낸 에러이다. 꼭 처리를 해주어야 실행이 가능하다
    - unchecked exception

    = 실행 도중 발생하게 된 예기치 못한 에러이다. 가장 좋은 예로 nullpointerException이 있다.

- String
    - String 더하기

    = String클래스는 내부적으로 final로 선언이 되어 있기에 새로운 String객체를 생성해 주는 것이지 더하기가 되는 것이 

       아니다.
    - StringBuilder, StringBuffer

    = 불변의 클래스인 String과는 다르게 가변의 클래스로 변하기 쉬운 문자열을 다룰 때 주로 사용되며, 

      StringBuilder는 동기화가 되지 않은 반면 StringBuffer는 동기화가 되어 있어 멀티스레드에 안전하다는 특징이 있다.