정수 (int, long): 자바는 4byte 계산에 효율적으로 설계되어 있으므로 int 를 기본으로, 2억 넘는 숫자에는 long 으로 \- 파일을 다룰 때는 byte 를 사용한다실수 (double): 이진부동소수점 정밀도 차이 때문에 실수는 double 로 사용한
추상화된 데이터를 다루기 좋다클래스에 소속된 변수들을 칭한다클래스는 설계도타입은 데이터의 종류나 형태를 뜻한다클래스를 사용하면 String 같은 타입을 직점 만들 수 있다사용자 정의 타입을 만드는 설계도가 클래스클래스를 사용하여 메모리에 실제 만들어진 실체를 객체 또는
자바의 가비지 컬렉션은 JVM 의 핵심 기능 중 하나로참조하지 않는 메모리에 대한 회수를 한다는 점에서 JS 와 비슷하지만동작 방식이 다르다JVM 의 힙 영역을 기반으로 메모리 관리를 수행한다객체의 생명 주기에 따라 Young Generation 과 Old Genera
변수에 해당 값을 그대로 담아 바로 사용 가능참조형은 실체의 위치는 따로 있고변수에 데이터의 주소 값을 가지고 있어, 참조하여 사용기본형을 제외한 모든 자료형은 참조형으로데이터 타입 중에서 클래스만 개발자가 직접 정의할 수 있다String 또한 클래스로 참조형 데이터이
클래스는 데이터인 멤버 변수 뿐 아니라 기능 역할을 하는 메서드를 포함할 수 있다객체의 속성과 기능을 하나로 묶어서 필요한 기능만을 외부로 제공하는 것을 캡슐화라고 한다결합도를 줄이고 응집도를 높이고..
객체를 생성하는 시점에 어떤 작업을 하고 싶을 때 생성자를 작성한다주로 멤버 변수에 초기값을 전달하는데 사용된다생성자의 이름은 클랫의 이름과 같아야 한다 (파스칼 케이스)생성자는 반환 타입이 없다나머지는 메서드와 같다생성자는 인스턴스 생성 직후 바로 호출된다new 키워
클래스의 집합으로파일을 분류하기 위한 폴더, 디렉토리와 같은 개념이다package 생성 시 위치에 주의해야 한다패키지도 트리 구조로 작성하여객체와 같이 .(dot)을 통해 연결하여 참조할 수 있다다른 패키지에서 호출되는 클래스의 생성자가 있다면public 접근 제어자를
자바는 public, private 같은 접근 제어자를 제공한다외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한할 수 있다기본적으로는 외부에서 필드 값을 직접 접근해서 변경하는 등의 작업을 막아실수를 방지하는 역할을 한다멤버 변수들에 private 을 주면
캡슐화는 객체 지향 프로그래밍의 중요한 개념 중 하나로데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어, 외부에서의 접근을 제한하는 것을 말한다캡슐화를 안전하게 완성하게 할 수 있는 장치가 접근 제어자캡슐화에서 가장 필수로 숨겨야 하는 것은 속성(데이터)객체의 데이
스택 영역: 지역 변수, 메소드 호출정보 (실제 프로그램이 실행되는 영역)힙 영역: 객체, 인스턴스 변수, 배열메서드 영역: 클래스 변수, 상수, 메소드 코드(Metaspace)프로그램을 실행하는데 필요한 공통 데이터 관리 - 모든 영역에서 공유클래스 정보: 클래스의
final 키워드는 이름 그대로 끝이라는 뜻이다변수 앞에 final 키워드를 사용하면 변수 초기화 시의 값을 변경할 수 없다\-> 상수처럼 동작static final 변수는 대문자로 작성한다final 필드의 초기화가 클래스 내부에서 일어난다면static 으로 작성하는
상속은 객체 지향 프로그래밍의 핵심 요소 중 하나기존 클래스의 필드와 메서드를 새로운 클래스에서 받아 재사용할 수 있다extends 키워드로 사용 - 대상은 하나만 선택할 수 있다부모 클래스(수퍼 클래스): 상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클
객체지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 있다그 중에서도 다형성은 객체지향 프로그래밍의 꽃이라고 불린다프로그래밍에서의 다형성은 한 객체가 여러가지 객체(타입)으로 취급될 수 있음을 뜻한다하나의 객체는 하나의 타입을 갖지만 다른 타입으로도 사용될
메모리 단편화는 컴퓨터 메모리(RAM)를 효율적으로 사용하지 못하게 되는 현상가용 공간의 크기는 충분함에도 메모리를 사용하고 있는 데이터가 산발되어 있어연속된 메모리 블록을 할당할 수 없는 상태를 말한다메모리가 할당된 후 사용되지 않는 공간이 할당 블록 내에서 낭비되는
다형성만을 통해 작성한 클래스에는 2가지 중요한 문제점이 있다개, 고양이, 소 등의 실체가 존재하는 것에 대한 인스턴스 생성은 당연하지만동물이라는 추상적 개념에 대해 실체로 존재할 필요는 없다동물 클래스에는 기능 또한 완벽히 정의되어 있지 않을 것이다이 때 부모 클래스
자바는 순수 추상 클래스를 더 편하게 사용할 수 있는인터페이스를 제공한다인터페이스는 순수 추상 클래스와 같지만약간의 편의 기능이 추가된다인터페이스의 모든 메서드는 모두 public, abstract 로 생략하여 사용한다인터페이스는 다중 구현(상속)을 지원한다인터페이스의
추상화캡슐화상속\*다형성프로그램을 여러개의 독립된 단위(객체)들의 모임으로 파악한다각 객체는 서로 메시지를 주고 받아 데이터를 처리할 수 있다(협력)유연하고 변경이 용이하기 떄문에 대규모 소프트웨어 개발에 많이 사용된다프로그램을 역할과 구현으로 구분하면 단순해지고 유연
객체 지향 프로그래밍의 원칙 중 하나Open for extension: 새로운 기능의 추가나 변경 사항이 생겼을 때, 기존 코드를 확장할 수 있어야 한다Closed for modification: 기존의 코드는 수정되지 않아야 한다기존 코드 수정 없이 새로운 기능을
서로 다른 계층 간에 데이터를 효율적으로 전달하는 데 사용되는 객체여러 개의 관련 데이터를 하나의 객체로 묶어서 전달하여 데이터 전송 효율성을 높인다계층 간 데이터 교환을 위한 규약 역할데이터를 캡슐화하여 코드의 가독성을 향상시킨다주로 필드(멤버 변수)와 Getter/
자바에서 기본으로 제공하는 라이브러리(클래스 모음) 중 가장 기본이 되는 것으로language 의 줄임말이다자바 언어의 가장 기본이 되는 클래스들을 보관하는 패키지를 뜻한다Ojbect: 모든메 자바 객체의 부모 클래스String: 문자열Integer, Long, Dou
String 클래스가 없다면문자 배열로 문자열을 다뤄야 한다String 클래스는 문자열을 간편하게 다룰 수 있도록 도와준다String 은 클래스로 참조형으로 위 변수들에는 String 인스턴스의 참조값이 들어간다문자열은 자주 사용되기 떄문에 "hello" 와 같이 작성
명령문이라고 하며 프로그램을 구성하는 최소 단위크게 선언문과 표현식으로 나뉜다값으로 평가될 수 있는 명령문으로 계산식을 포함한다어떤 행동을 수행하거나, 어떤 관계를 설정하거나, 어떤 상태를 정의하는 코드의 기본 단위로 프로그램의 구조를 만들고, 변수를 만들고, 값을
객체의 메서드가 자기 자신을 반환하게 하여 반환된 참조값을 이용, 메서드를 체이닝하여 사용할 수 있다
자바는 객체 지향 언어지만 기본 타입은 객체가 아니다때문에 다음과 같은 한계가 있다객체가 아님: 기본형은 객체 지향 프로그래밍의 장점을 살릴 수 없다 메서드 제공, 컬렉션, 제네릭 등을 사용할 수 없다null 값을 가질 수 없음: 데이터 없음 상태를 나타낼 수 없다기
자바의 Class 클래스는 클래스의 정보를 담는 메타데이터를 다루는데 사용된다Class 클래스를 통해 실행 중인 자바 애플리케이션에서 필요한클래스 속성 및 메소드에 대한 정보를 조회하고 조작할 수 있다타입 정보: 클래스의 이름, 슈퍼클래스, 인터페이스, 접근 제한자 등
현재 시간, 환경 변수(운영체제가 사용하는), 시스템 속성(자바가 사용하는)등의 정보를 제공한다시스템 레벨에서 배열을 통째로 읽어 복사한다때문에 속도가 매우 빠르다 (2베 이상)자바 프로그램을 종료하는 exit() 메서드를 제공하지만 특수한 경우가 아니면 사용하지 않는
아주 정밀한 숫자와 반올림 계산이 필요하다면 BigDecimal 을 사용한다다양한 수학 연산을 재공한다Math.random() 을 사용해도 되지만Random 클래스를 사용하면 더욱 다양한 랜덤 값을 구할 수 있다Math.random() 내에서도 Random 클래스를 호
문자열에 따른 특정 조건이 있을 때 단순히 문자열을 조건문으로 구분하여 코드를 실행한다면오타가 발생하기 쉽고, 유효하지 않은 값이 입력될 수 있다또한 코드 복잡도도 증가한다타입 안정성 부족(값의 제한 부족): 오타 발생, 유효하지 않은 값 입력 가능데이터 일관성 부족:
날짜와 시간 차이 계산윤년 계산일광 절약 시간(DST)타임존 계산위와 같은 이유로 날짜와 시간을 계산하는 것은 매우 어렵고 복잡하다영국 런던의 그리니치 천문대를 태양이 통과할 떄를 정오로 한다GMT 를 대체하기 위해 도입되었다UTC 와 GMT 모두 그리니치 천문대를 기
클래스 안에서 클래스를 중첩해 정의하는 것을 중첩 클래스라고 한다중첩 클래스는 클래스를 정의하는 위치에 따라 분류한다바깥 인스턴스 소속전혀 다른 인스턴스중첩 클래스를 정의하는 위치는 변수 선언 위치와 같다정적 변수 (클래스 변수)인스턴스 변수지역 변수정적 중첩 클래스
사용자 입력, 네트워크 통신 등 미리 알 수 없거나예상하지 못한 작업으로 인해 프로그램에 오류가 발생할 수 있다이 때 프로그램 전체 흐름을 방해하지 않으면서 오류를 처리할 수 있다자바는 프로그램 실행 중 발생할 수 있는 예상치 못한 상황인예외를 처리하기 위한 매커니즘을
다양한 타입을 처리하는 같은 로직이 필요할 때제네릭을 사용하여 처리할 수 있다Object 모든 타입의 부모이기 때문에 Object 타입을 이용한 다형성으로 다양한 타입을 처리할 수 있을 것 같다반환 타입이 맞지 않는 문제: 값을 꺼내어 사용할 때도 매번 다운 캐스팅을
타입 시스템에서의 변성이란 타입이 변하는 성질을 띄는지에 대한 것으로불변성, 공변성, 반공변성으로 표현한다전달된 타입이 변하지 않는다타입 불변성을 띄면 읽기와 쓰기 모두 타입을 안전하게 사용할 수 있다설정한 타입이 타입 상한이 된다상속 관계에서 구체적인 타입인 서브 타
순서가 있는 데이터의 선형 집합자바에서는 기본 자료형을 제외하고모두 참조 자료형이므로배열 또한 참조 자료형이다배열을 생성하여 변수에 담으면 메모리 어딘가에 배열을 생성하고변수에서는 생성된 배열의 참조 주소값만을 가지고 있다배열은 인덱스를 사용하여 매우 빠르게 자료를 찾
자바 컬렉션(Java Collections)은 자바에서 그룹화된 객체들의 집합을 효율적으로 관리하고 조작하기 위해 제공되는 프레임워크로 프로그래밍에서 자주 사용되는 자료구조를 미리 구현해놓았다필요한 배열의 크기를 미리 지정해야만 한다사용되지 않는 공간은 낭비된다배열을
하나의 인터페이스를 의존하는 여러 클래스가 있을 때이를 사용하는 쪽에서 구체적인 클래스에 의존하고 있다면다형성을 통해 클래스가 아닌 인터페이스에 의존하게 할 수 있다인터페이스에 의존하게 된다면 해당 인터페이스를 구현한 모든 클래스 중 어떤 것이라도 사용할 수 있게 된다
Java.util 패키지 내 컬렉션 프레임워크의 핵심 인터페이스 중 하나로자바에서 다양한 컬렉션(데이터 그룹)을 다루기 위한 메서드를 정의한다List, Set, Queue 등 다양한 하위 인터페이스와 함께 사용되며이를 통해 데이터를 리스트, 세트, 큐 등의 형태로 관리
각각 특정한 방식으로 데이터를 저장하고 관리한다요소들의 순차적인 컬렉션으로 요소들은 특정 순서를 갖고, 중복을 허용한다인덱스로 요소에 접근할 수 있다유일한 요소들의 컬렉션으로 요소들은 특정 순서를 갖지 않고, 중복을 허용하지 않는다셋은 요소의 유무를 빠르게 확인할 수