요약

2. 자바 용어 요약(1) - 패스트캠퍼스 백엔드 부트캠프 3기

gkss2tpt 2025. 1. 8. 16:22

자바의 특징 : 객체 지향 프로그래밍, 멀티 쓰레딩 지원, 가비지 컬렉터, 풍부한 라이브러리 API, 플랫폼 독립성

자바 가상 머신(JVM) : 자바 프로그램이 실행되는 가상 컴퓨터, 한번 작성하면 어디서든 실행

변수 : 하나의 값을 저장할 수 있는 기억 공간

값의 타입 : 해당 값이 어떤 종류의 데이터를 나타내며 어떤 연산을 수행할 수 있는지를 결정하는 정보

상수 : 한 번만 값을 저장할 수 있는 공간

리터럴 : 그 자체로 값을 의미하는 것

기본형 변수 : 스택에 저장 - 빠름
문자 : char
정수형 : byte,short,int,long
실수 : float, double
논리형 : boolean

참조형 변수 : 힙에 저장 - 느림
기본형을 제외한 나머지(String, System 등)
객체의 주소를 저장

변수의 명명규칙 : 대소문자가 구분되며 길이에 제한이 없다.
예약어를 사용해서는 안된다
숫자로 시작해서는 안된다
특수문자는 _와 $만 가능하다

변수의 초기화 : 변수에 처음으로 값을 저장하는 것
지역변수는 사용되기 전에 반드시 초기화해주어야 한다.

정수의 오버플로우 : 정수가 표현할 수 있는 값의 최대값을 넘어서는 연산이 발생할 때 일어나는 현상

형변환 : 값의 타입을 다른 타입으로 변환하는 것

연산자 : 어떠한 기능을 수행하는 기호

피연산자 : 연산자의 작업 대상

종류
단항 연산자 : + - (타입)-[instanceof,casting] ++ -- ~-[비트not연산자] !
이항 연산자
산술 : + - * / % << >>(부호 유지 비트 연산자) >>>(부호 무시 비트 연산자)
비교 : > < >= <= == !=
논리 : && || & ^ |
삼항 연산자 : ? :
대입 연산자 : =, op=(복합대입 연산자)

연산자의 우선순위
단항
산술
비교
논리
삼항
대입

증가연산자 : 피연산자의 값을 1 증가 시킨다.
감소연산자 : 피연산자의 값을 1 감소 시킨다.

부호연산자 : +는 피연산자의 1을 곱하고, -는 피연산자에 -1을 곱한다.
논리부정연산자 : true는 false로 false는 true로 만든다.
비트전환연산자 : ~ 정수를 2진수로 표현했을 때, 1을 0으로 0은 1로 바꾼다.

이항연산자의 특징 : 연산을 수행하기 전에 피연산자의 타입을 일치시킨다.
int보다 크기가 작은 타입은 int로 변환한다.
피연산자 중 표현범위가 큰 타입으로 형변환 한다.

쉬프트연산자 : <<, >>, >>>
2의 n승으로 곱하거나 나눈 결과를 반환한다.
곱셈, 나눗셈보다 빠르다.

if문 : 조건식과 실행될 하나의 문장 또는 블럭{}으로 구성

switch문 : 하나의 값을 여러 조건과 비교하는 조건문
조건식의 계산결과가 int타입의 정수와 문자, 문자열, 열거형만 가능

배열 : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

객체지향언어의 특징 : 코드의 재사용성이 높다.
코드의 관리가 쉽다.
신뢰성이 높은 프로그램의 개발을 가능하게 한다.

클래스 정의 : 객체를 정의해 놓은 것
클래스 용도 : 객체를 생성하는데 사용

객체의 정의 : 실제로 존재하는 것
객체의 용도 : 객체의 속성과 기능에 따라 다름

객체의 구성요소 : 객체는 속성과 기능으로 이루어져 있다.

인스턴스 : 특정 클래스로부터 생성된 객체

구조체 : 타입에 관계없이 서로 관련된 데이터들을 저장할 수 있는 공간

cv : 클래스 변수 - 공통된 값
선언 위치 : 클래스 영역
생성시기 : 클래스가 메모리에 올라갈 때

iv : 인스턴스 변수
선언 위치 : 클래스 영역
생성시기 : 인스턴스 생성시

lv : 지역변수
선언 위치 : 메서드 영역
생성시기 : 변수 선언문 수행시

메서드 : 작업을 수행하기 위한 명령문의 집합
장점 : 중복제거, 하나의 메서드는 한 가지 기능만 수행하게 작성

return문 : 현재 실행중인 메서드를 종료하고 호출한 메서드로 되돌아간다.

메서드영역 : 클래스 정보와 클래스변수가 저장되는 곳
호출 스택 : 메서드의 작업공간
힙 : 인스턴스가 생성되는 공간

호출스택의 특징 : 메서드가 호출되면 수행에 필요한 메모리를 스택에 할당받는다.
메서드가 수행을 마치면 사용했던 메모리를 반환한다.
호출스택의 제일 위에 있는 메서드가 현재 실행중인 메서드다.
아래에 있는 메서드가 바로 위의 메서드를 호출한 메서드다.

기본형 매개변수 : 변수의 값을 읽기만 할 수 있다.

참조형 매개변수 : 변수의 값을 읽고 변경할 수 있다.

재귀 호출 : 메서드 내에서 자기자신을 반복적으로 호출하는 것 - 반복문보다 성능이 나쁨 
이해하기 쉽고 간결한 코드를 작성할 수 있다.

인스턴스 메서드 : 인스턴스 생성후 호출 가능
인스턴스변수, 인스턴스메서드와 관련된 작업을 하는 메서드
메서드 내에서 인스턴스변수 사용가능

클래스 메서드 : 객체생성없이 호출가능
인스턴스변수나 인스턴스 메서드와 관련없는 작업을 하는 메서드
메서드 내에서 인스턴스변수 사용불가

오버로딩 : 하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것

성립 조건 : 이름이 같아야 한다
매개변수의 타입 혹은 개수가 달라야 한다.
반환타입은 영향이없다.

생성자 : 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.

생성자의 조건 : 생성자의 이름은 클래스의 이름과 같아야 한다.
생성자는 리턴값이 없다.(하지만 void를 쓰지 않는다.)

기본 생성자 : 매개변수가 없는 생성자
클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가한다.

생성자 this() : 같은 클래스의 다른 생성자를 호출할 때 사용
다른 생성자 호출은 생성자의 첫 문장에서만 가능

참조변수 this : 인스턴스 자신을 가리키는 참조변수.
인스턴스의 주소가 저장되어 있음.

변수의 초기화 : 변수를 선언하고 처음으로 값을 저장하는 것
멤버변수(인스턴스변수,클래스변수)와 배열은 각 타입의 기본값으로 자동초기화되므로 초기화를 생략할수있다.
지역변수는 사용전에 반드시 초기화를 해주어야한다.

멤버변수의 초기화 : 
명시 : =
복잡 : 클래스,인스턴스 초기화 블럭{}, 생성자

멤버변수의 초기화 시점 :
클래스 변수의 초기화 시점 : 클래스가 처음 로딩될 때 단 한번
인스턴스 변수의 초기화 시점 : 인스턴스가 생성될 때 마다

멤버변수의 초기화 순서 : cv기본값(0) -> cv명시적 초기화(1) -> cv클래스 초기화 블럭(2) -> iv기본값(3) -> iv명시적 초기화(4) -> iv인스턴스초기화블럭(5) -> 생성자(6) 

상속 : 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것
자손은 조상의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외)
자손의 멤버개수는 조상보다 적을 수 없다.

상속관계 : 공통부분은 조상에서 관리하고, 개별부분은 자손에서 관리한다.
조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 영향을 미치지 않는다.

포함 : 클래스의 멤버변수로 다른 클래스를 선언하는 것

단일 상속 : java는 단일상속만 허용한다.
비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.

Object클래스 : 모든 클래스의 최고조상
조상이 없는 클래스는 자동적으로 Object클래스를 상속받게 된다.
모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다.

오버라이딩 : 조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것

조건 : 선언부가 같아야 한다.
접근제어자를 좁은 범위로 변경할 수 없다.
조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

참조변수 super : this와 같음
조상의 멤버와 자신의 멤버를 구별하는 데 사용

super() : 부모 클래스의 생성자를 호출하여 부모 클래스의 초기화 작업을 수행하는 역할

패키지 : 서로 관련된 클래스와 인터페이스의 묶음

클래스패스 : 클래스파일을 찾는 경로

import문 : 사용할 클래스가 속한 패키지를 지정하는데 사용 

제어자 : 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다.
하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근제어자는 단 하나만 사용할 수 있다.

접근 제어자 : 
public : 모두 접근 가능
protected : 같은 패키지, 다른 패키지의 하위 클래스에서 사용 가능
dafault : 같은 패키지 내에서 접근 가능
private : 클래스 내에서만 접근 가능

static 제어자 : 멤버변수, 메서드, 초기화 블럭에서 사용됨
멤버변수: 모든 인스턴스에 공통적으로 사용되는 클래스변수가 된다.
클래스변수는 인스턴스를 생성하지 않고도 사용 가능하다.
클래스가 메모리에 로드될 때 생성된다.
메서드 : 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다.
static메서드 내에서는 인스턴스멤버들을 직접 사용할 수 없다.

final 제어자 : 클래스, 메서드, 멤버변수, 지역변수
클래스 : 변경될 수 없는 클래스 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다.
메서드 :  변경될 수 없는 메서드 final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다.
변수 : 값을 변경할 수 없는 상수가 된다.

abstract 제어자 : 클래스, 메서드
클래스 : 클래스 내에 추상메서드가 선언되어 있음을 의미한다.
메서드 : 선언부만 작성하고 구현부는 작성하지 않은 추상메서드임을 알린다.

캡슐화 : 외부로부터 데이터를 보호, 외부에는 불필요한 내부적으로만 사용되는 부분을 감추기 위함

다형성 : 조상타입의 참조변수로 자손타입의 객체를 다루는 것

참조변수의 형변환 : 서로 상속관계에 있는 타입간의 형변환만 가능하다.
자손 타입에서 조상타입으로 형변환하는 경우 형변환 생략가능

instanceof : 형변환이 가능한지 확인하는데 사용

참조변수와 인스턴스변수의 연결 : 멤버변수가 중복정의된 경우 참조변수의 타입에 따라 연결되는 멤버변수가 달라진다.
메서드가 중복정의된 경우 참조변수의 타입에 관계없이 항상 실제 인스턴스의 타입에 정의된 메서드가 호출된다.

매개변수의 다형성 : 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있다.

추상 클래스 : 미완성 설계도
추상메서드를 포함하고 있는 클래스
일반메서드가 추상메서드를 호출할 수 있다.
완성된 설계도가 아니므로 인스턴스를 생성할 수 없다.

추상 메서드 : 선언부만 있고 구현부가 없는 메서드
추상클래스를 상속받는 자손클래스에서 추상메서드의 구현부를 완선해야한다.

인터페이스 : 구현된 것이 전혀 없는 기본 설계도
추상메서드와 상수만을 멤버로 가질 수 있다.
인스턴스를 생성할 수 없다.

인터페이스의 상속 : 클래스와 달리 다중상속이 가능하다, Object클래스와 같은 최고 조상이 없다.

인터페이스의 다형성 : 인터페이스 타입의 변수로 인터페이스를 구현한 클래스의 인스턴스를 참조할 수 있다.
인터페이스를 메서드의 매개변수 타입으로 지정할 수 있다.
인터페이스를 메서드의 리턴타입으로 지정할 수 있다.

인터페이스의 장점 : 서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.
개발시간을 단축시킬 수 있다.
표준화가 가능하다.
독립적인 프로그래밍이 가능하다.

디폴트 메서드 : 추상 메서드의 기본 구현을 제공
여러 인터페이스의 디폴트 메서드 간의 충돌 : 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩해야 한다.
디폴트 메서드와 조상 클래스의 메서드 간의 충돌 : 조상클래스의 메서드가 상속되고, 디폴트 메서드는 무시된다.

내부클래스 : 클래스 안에 선언된 클래스
내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
코드의 복잡성을 줄일 수 있다.(캡슐화)

내부 클래스의 접근성 : static클래스만 static멤버를 정의할 수 있다.
내부 클래스도 외부 클래스의 멤버로 간주되며, 동일한 접근성을 갖는다.
외부 클래스의 지역변수는 final이 붙은 변수(상수)만 접근가능하다.

익명클래스 : 이름이 없는 일회용 클래스, 선언과 생성을 동시에. 하나의 객체만 생성가능