📍 JDK 설치 JDK를 설치하면 JRE, JVM이 자동으로 설치된다. JVM(Java Virtual Machine): 자바 가상 머신. 자바 프로그램이 특정 컴퓨터 아키텍처 또는 운영 체제에 종속되지 않고 실행될 수 있도록 JVM 위에서 실행한다. JRE(Java Runtime Environment): JVM + Library Classes JDK(J...
📍 프로그램 수행 단계 컴파일(compile): 소스코드를 컴퓨터가 알아듣는 기계어로 바꾼다. 컴파일 완료 시 .class 파일이 생성된다. 컴파일러는 JDK에 있다. 빌드(build): .class 파일을 JVM에 올려서 수행시킨다. 📍 데이터 타입 이미지 출처 1) Primitive | type | 크기 | 범위 | | ------ | --...
📍 빈 줄 삽입하기 println + \n 혹은 println + println 조합을 사용한다. 📍 Type Casting 하나의 기본 데이터 유형의 값을 다른 유형에 할당하는 것 double -> int: 소수점 뒷자리 버림 int -> double: 숫자 뒤에 ".0"이 붙음 📍 int / int의 결과값은 int이다 int 타입을 int ...
📍 비교 연산자 | 비교 | 연산자 의미 | | :-----: | :-----: | | == | 같다 | | != | 다르다 | | > | 크다 (초과) | | = | 크거나 같다 (이상) | | <= | 같거나 같다 (이하) | 📍 논리 연산자 | 논리 연산자
📍 switch 문 > - if 문의 조건이 "같다(==)"일 경우 switch 문으로 대체 가능 콤마(A2)와 화살표(A3)는 Java 14버전 이상부터 사용 가능 폴스루(fall through): switch 문에서 하나의 case가 실행된 후 다음 case로 통과하는 현상 Q. 월(month)을 입력받아서 어떤 계절인지 출력하세요. | 월 | ...
📍 반복문 > - while문, for문: 조건이 참일 경우에만 실행 do-while문: 조건이 참일 경우 실행, 거짓일 경우 한번 실행 1) while문 2) do-while문 3) for문 📍 ++i와 i++의 차이 > - ++i : i를 1 증가시킨
📍 BigO(시간 복잡도) | BigO | 설명 | | ----- | ----- | | O(1) | 코드 한 줄 | | O(log n) | 반복문 하나를 덜 돌린 것 | | O(n) | 반복문 하나 | | O(n log n) | 중첩 반복문을 덜 돌린 것 | | O(n^2) | 중첩 반복문 | 📍 디버깅하는 법 이미지 출처 1) 디버깅 실행 Br...
📍 메소드 만드는 법 1) 생성 위치 main 메소드 아래에 메소드를 생성한다. 2) 형식 3) 예시 📍 접근 제어자 private < default < protected < public private: 해당 클래스 안 default(No keyword required): 같은 패키지 안 protected: 같은 패키지 안 + 다른 패키지의 하위...
📍 Integer.MINVALUE & Integer.MAXVALUE Integer.MIN_VALUE: int 데이터 타입이 나타낼 수 있는 가장 작은 정수값 Integer.MAX_VALUE: int 데이터 타입이 나타낼 수 있는 가장 큰 정수값 📍 배열 초기화 방법1) 배열 선언 후 값 할당 방법2) 배열 크기 지정 후 값 할당 📍 배열 접근 인...
📍 Class Random > - 난수를 생성하는 클래스이다. integer, float, double, long, boolean 타입의 난수를 생성할 수 있다. 메소드에 인수를 전달하여 난수의 상한을 지정할 수 있다. References 🔗 https://docs.oracle.com/javase/8/docs/api/java/util/Random.ht...
📍문자열(String) 생성 > - 문자열 리터럴 (String Literal) 사용 (권장): Heap 영역의 String constant pool에 저장, 공유 가능 문자열 생성자 (String Constructor) 사용: Heap 영역에 저장, 공유 불가 1) 문자열 리터럴(String Literal) 사용 이미지 출처 2) 문자열 생성자(S...
📍 클래스와 인스턴스의 메모리 저장 📍 클래스 > - 클래스는 자료형이다. 클래스에는 필드와 메소드(생성자, 일반)를 입력할 수 있다. 필드에 값을 넣는 방법은 생성자, setter가 있다. 필드에서 값을 꺼내는 방법은 일반 메소드, getter가 있다. 생성자를 정의하지 않을 경우에만, 파라미터가 없는 기본 생성자가 내부적으로 생성된다. > 일반...
📍 메소드 오버로딩 vs. 메소드 오버라이딩 | | 메소드 오버로딩 | 메소드 오버리이딩 | | ----- | ----- | ----- | | 특징 | 파라미터 갯수, 타입이 다르면 실행 | 하위 클래스의 메소드가 상위 클래스의 메소드와 형태가 동일할 때 실행 |
📍 클래스 상속 > - 모든 클래스의 최상위 클래스는 Object Class이다. 자식 클래스에게 부모 클래스는 하나만 존재한다. (다중 상속 불가) 상속 시 extends를 사용한다. 자식 클래스가 부모 클래스를 상속할 시, 자식 클래스는 부모 클래스의 생성자를 호출하여 부모 클래스를 초기화해야 한다. 호출하지 않으면 자동으로 부모 클래스의 기본 생성자...
📍 다형성 > - 다형성은 단일 작업을 다양한 방식으로 수행하는 것이다. 다형성은 컴파일 시, 런타임 시 나타난다. 컴파일 시 나타나는 다형성은 메소드 오버로딩, 연산자 오버로딩이 있지만 자바는 연산자 오버로딩을 지원하지 않는다. 런타임 시 나타나는 다형성은 메소드 오버라이딩이 있다. 즉, 자바에서 다형성은 메소드 오버로딩(컴파일)과 메소드 오버라이딩(런...
📍 추상 메소드 & 추상 클래스 > - 선언 시 abstract 키워드를 사용한다. 주로 클래스의 기본형(청사진)을 만들기 위해 사용한다. 1) 추상 메소드 > - 추상 메소드는 선언만 되어있고 구현은 되어있지 않은 메소드이다. 반드시 하위 클래스에서 오버라이딩을 통해 추상 메소드를 구현해야 한다. 2) 추상 클래스 > - 추상 클래스는 하나 이...
📍 인터페이스 > - 인터페이스는 클래스의 동작을 지정하는 데 사용되는 추상 유형이다. 인터페이스는 자료형이다. 필드(권장X)와 메소드가 포함될 수 있다. 필드에는 public, static, final이 자동으로 붙으므로, 상수로 취급된다. 메소드에는 public, abstract가 자동으로 붙으므로, implements되는 클래스에서 오버라이딩하여 메...
📍 래퍼 클래스 > - 래퍼 클래스는 기본 데이터 타입(primitive data type)을 객체로 감싸는 클래스이다. primitive data type을 Objects(reference data type)로 변환한다. 래퍼 클래스는 heap까지 메모리를 차지하기 때문에 되도록 래퍼 클래스보다 기본 데이터 타입을 사용하는 것이 더 좋다. 📍 래퍼...
📍 콜렉션 프레임워크 > - 콜렉션 프레임워크는 모든 콜렉션 클래스와 인터페이스를 보유한 프레임워크이다. Collection Interface(java.util.Collection), Map Interface(java.util.Map)가 2개의 주요 루트 인터페이스이다. 이미지 출처
📍 List 특징 > - 순서가 있다. 중복을 허용한다. 인덱스가 있다. 📍 Array vs. ArrayList | | Array | ArrayList | | ----- | ----- | ----- | | 정의 | 동일한 타입의 요소를 저장하는 동적으로 생성된 객체 | Java Collection Framework의 클래스 | | 크기 | 정적 ...
📍 Set 특징 > - 순서가 없다. 중복된 값을 저장할 수 없다. 인덱스가 없다. 📍 Set 생성 > - 빈 Set 만드는 방법: new HashSet() 초기 요소를 포함한 Set 만드는 방법: new HashSet(콜렉션) 📍 추가/삭제/수정/읽기 | | List | Set | Map | | ----- | ----- | ----- | ...
📍 Map 특징 > - key=value 쌍으로 이루어져 있다. 순서가 없다. 중복된 key를 저장할 수 없다. 인덱스가 없다. 📍 Map 생성 > - 빈 Map 만드는 방법: new HashMap() 초기 요소를 포함한 Map 만드는 방법: new HashMap() {{ put(key1, value1); put(key2, value2); ... ...
📍 프로세스 vs. 스레드 > - 프로세스(Process): 실행 중인 프로그램의 인스턴스 스레드(Thread): 프로세스 내에서 실행되는 독립적인 실행 단위 이미지 출처 📍 스레드 생성 & 실행 > - Thread 클래스를 상속하는 방법: Thread 클래스 상속 + run() 오버라이드 -> 메인 클래스에서 인스턴스 생성 -> start() Ru...
📍 Throwable 클래스 > - unchecked: RuntimeException 클래스 및 하위 클래스, Error 클래스 및 하위 클래스 checked: 그 외 이미지 출처 📍 Exception vs. Error | | Exception | Error | | ----- | ----- | ----- | | 복구 가능성 | 가능(try-cat...
📍 Date java.util의 클래스 날짜, 시간 표현 가변 대부분의 메서드가 이미 deprecate되어 더 이상 사용을 권장하지 않음 📍 ZonedDateTime java.time의 클래스 날짜, 시간 표현 특정 시간대 고려 불변 날짜와 시간에 대한 연산 가능