1. Big O 표기법과 배열Big O 표기법빅오(Big O) 표기법은 알고리즘의 성능을 분석할 때 사용하는 수학적 표현 방식이다. 빅오 표기법을 통해 데이터 양의 증가에 따른 성능 변화 추세를 비교할 수 있다. 데이터가 클수록 추세를 볼 때 상수는 크게 의미가 없어지기 때문에 상수를 제거해서 표현한다.O(1)입력 데이터의 크기에 관계없이 알고리즘의 실행 시간이 일정하다.ex. 배열에서 인덱스를 사용하는 경우O(log n) = logarithmic알고리즘의 실행 시간이 입력 데이터 크기의 로그에 비례한다.ex. 이진 탐색O(n) = linear알고리즘의 실행 시간이 입력 데이터 크기에 비례한다.ex. 배열의 검색, 배열의 모든 요소 순환O(n log n) = logarithmic(hybrid) linea..
백엔드/Java
1. 제네릭 적용 및 용어와 관례제네릭 적용a. 제네릭 클래스를 사용한 클래스를 제네릭 클래스라고 부른다.이 기호()를 보통 다이아몬드라고 부른다.클래스명 오른쪽에 처럼 선언하면 된다. 여기서 T를 타입 매개변수라고 한다. 이 타입 매개변수는 이후에 Integer, String 등으로 변할 수 있다.클래스 내부에 T 타입이 필요한 곳에 T value처럼 타입 매개변수를 적어두면 된다.public class GenericBox { private T value; public void set(T value) { this.value = value; } public T get() { return value; }} b. 생성 시점에 원하는 타입 지..
1. 자바 예외 처리예외 계층자바는 프로그램 실행 도중 발생할 수 있는 예상치 못한 상황, 즉 예외(Exception)를 처리하기 위한 메커니즘을 제공한다. 이는 프로그램의 안정성과 신뢰성을 높이는 데 중요한 역할을 한다.자바의 예외 처리는 다음 키워드를 사용한다.try, catch, finally, throw, throws 그리고 예외를 다루기 위한 예외 처리용 객체들을 제공한다. 예외 계층 그림을 보면서 간단하게 알아보자.Object자바에서 기본형을 제외한 모든 것은 객체이며, 예외도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다.Throwable최상위 예외이며, 하위에 Exception과 Error가 있다.Error메모리 부족이나 심각한 시스템 오류와..
1. 중첩 클래스의 분류중첩 클래스는 클래스를 정의하는 위치에 따라 다음과 같이 분류한다. 총 4가지가 있고, 크게 2가지로 분류할 수 있다.정적 중첩 클래스 = static; 바깥 클래스의 인스턴스에 소속되지 않음내부 클래스 종류 = non-static; 바깥 클래스의 인스턴스에 소속됨내부 클래스 = 바깥 클래스의 인스턴스 멤버에 접근지역 클래스 = 내부 클래스 + 지역 변수에 접근익명 클래스 = 지역 클래스 + 클래스의 이름이 없는 특별한 클래스 실무에서는 중첩, 내부라는 단어를 명확히 구분하지 않고 중첩 클래스 또는 내부 클래스라고 부른다. 엄밀하게 이야기하면 static이 붙어있는 정적 중첩 클래스는 내부 클래스라고 하면 안 된다. 그러나 대부분의 개발자들이 둘을 구분해서 말하지 않기 때문에 상황..
날짜와 시간의 메서드는 너무 많기 때문에 적당히 훑어보고 필요할 때 찾아보면 된다. (PDF 참고) 1. 열거형 - ENUM문자열과 타입 안정성a. 문자열예를 들어 String으로 선언된 회원 등급에 따라 할인 정책을 다르게 적용한다고 가정해 보자. 이때, String 타입을 사용하면 타입 안정성 부족 문제가 발생할 수 있다.값의 제한 부족String으로 상태나 카테고리를 표현하면, 오타나 잘못된 값이 입력될 수 있다.컴파일 시 오류 감지 불가위에서 말한 오류를 런타임에서만 발생할 수 있어 디버깅이 어려워질 수 있다.public class User { private String name; private String grade; public User(String name, Strin..
1. String 클래스구조자바에서 문자를 다루는 대표적인 타입은 char과 String 2가지가 있다.기본형 char은 문자 하나를 다룰 때 사용한다. 여러 문자를 나열하려면 char[]을 사용해야 한다.String 클래스를 사용하면 문자열을 편리하게 다룰 수 있다.문자열은 매우 자주 사용되기 때문에 편의상 큰따옴표(")로 문자열을 감싸면 자바 언어에서 new String("...")와 같이 변경해 준다.public class StringBasicMain { public staic void main(String[] args) { String str1 = "hello"; String str2 = new String("hello"); System...
1. java.lang 패키지 & 불변 객체java.lang 패키지자바는 자바 언어를 이루는 가장 기본이 되는 클래스를 보관한 java.lang 패키지를 제공한다. 보관된 대표적인 클래스들은 아래와 같다.Object = 모든 자바 객체의 부모 클래스String = 문자열Wrapper(Integer, Long 등) = 기본형 데이터 타입을 객체로 만든 것Class = 클래스 메타 정보 저장System = 시스템과 관련된 기본 기능들을 제공 이번 섹션과 다음 섹션에서 자바 언어의 기본을 이루는 클래스들을 하나씩 살펴본다. 확실하게 학습하고 넘어가자. 참고java.lang 패키지는 모든 자바 애플리케이션에 자동으로 import 된다. (생략 가능) 불변 객체a. 공유 참조와 사이드 이펙트자바의 데이터 타입을..
1. 다형성 이해하기프로그래밍에서 다형성(Polymorphism)은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 말한다. 다형성을 이해하기 위해서는 크게 2가지 핵심 이론을 알아야 한다. 다형적 참조와 메서드 오버라이딩을 학습해 보자. 다형적 참조다형적 참조란 부모 타입의 변수가 자식 인스턴스를 참조할 수 있다는 것을 말한다.부모 타입은 자신을 기준으로 모든 자식 타입을 담을 수 있다.반대로 자식 타입은 부모 타입을 담을 수 없으며, 컴파일 오류가 발생한다.public class PolyMain { public static void main(String[] args) { // 다형적 참조 System.out.println("Parent -> Child"); ..
1. 상속 관계상속은 객체 지향 프로그래밍의 핵심 요소 중 하나로, 기존 클래스의 필드와 메서드를 새로운 클래스에서 재사용하게 해 준다. 이름 그대로 기존 클래스의 속성과 기능을 물려받는 것이라고 보면 된다. 부모와 자식자식이 부모의 기능을 물려받아서 사용할 수는 있지만, 부모는 자식에 접근할 수 없다.부모(슈퍼) 클래스상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클래스자식(서브) 클래스부모 클래스로부터 필드와 메서드를 상속받는 클래스 단일 상속extends 키워드를 사용해 상속할 수 있으며, 이때 extends의 대상은 하나만 선택할 수 있다. 자바는 다중 상속을 지원하지 않는다.비행기와 자동차를 상속받아서 하늘을 나는 자동차를 만든다고 가정해 보자. 만약 아래 그림처럼 다중 상속을 사용..
1. 접근 제어자자바는 public이나 private 같은 접근 제어자(access modifier)를 제공한다. 접근 제어자를 사용하면 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한할 수 있다. 접근 제어자 종류자바는 4가지 종류의 접근 제어자를 제공한다. 접근 제어자를 명시하지 않으면, 같은 패키지 안에서의 호출을 허용하는 default 접근 제어자가 적용된다. default라는 용어는 해당 접근 제어자가 기본값으로 사용되기 때문에 붙여진 이름이지만, 실제로는 package-private가 더 정확한 표현이다.private모든 외부 호출을 막는다.나의 클래스 안으로 속성과 기능을 숨길 때 사용한다.default(package-private)같은 패키지 안에서의 호출은 허용..