본문 바로가기

JAVA

(18)
HashMap 동작 방식에 대해 설명하세요. HashMap이란 객체를 Map에 넣는 것이다. key-value쌍 하나만 넣는 것이 가장 기본적이며, 배열의 한 요소를 bucket이라고 한다. (자바에서는, 키와 값의 타입은 클래스 및 인터페이스 타입만 가능하다. 기본 타입은 사용 할수 없음) 또한, HashMap에서의 key는 unique해야합니다. (key는 중복 불가, value는 중복 가능) key-value쌍이 들어가는 위치는, key의 Hash (HashCode) 이며, 이로 인해 데이터를 탐색하는데 O(1)로 가능하다. 이때, 동일하지 않은 두 객체가 같은 위치에 들어가려고 하는 경우를 Collision 이라고 하는데, Collision은 Map의 성능에 큰 영향을 미치므로, 어떤 Hash 함수를 사용하는 가에 따라서 더 나은 Map이 ..
연산자 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선순위 (optional) Java13. switch operator 산술 연산자 일반적으로 산술 연산은 덧셈, 뺄셈, 곰셈, 나눗셈의 사칙 연산을 뜻합니다. 자바에서 산술 연산은 사칙연산과 나머지 연산을 포함한 다섯 가지 연산을 뜻합니다. 덧셈과 뺄셈 그리고 곱셈은 일반적으로 알고 있는 수학에서 계산과 동일합니다. 나눗셈과 나머지 연산은 처음 프로그래밍을 접한다면 다소 생소할 수 있습니다. 산술 연산에 대한 예를 살펴보기 전에 2주차에 살펴봤던 타입 캐스팅과 타입 프로모션을 다시 한번 생각해볼 필요가 있습니다. 요약하자면, 타입 캐스팅은 원본 데이터 ..
자바 데이터 타입, 변수 그리고 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타임 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입. 영어로 primitive type 또는 원시 타입 또는 기본형 타입이라고 하기도 합니다. 우선 타입이란 데이터 타입을 줄인 말로 자료형이라고 하기도 합니다. 그럼 데이터 타입이란 무엇일까요? 컴퓨터 관점에서 타입은 데이터가 메모리에 어떻게 저장될 것이고 또 어떻게 다뤄져야 하는지에 대해 알려주는 것입니다. 즉, 데이터 타입을 보면 컴퓨터에서 어떤 형태를 가지며 어떻게 처리될 수 있는지 머리 속에 그릴 수 ..
JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가? JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는가 JVM 구성요소 JDK와 JRE의 차이 JVM이란 무엇인가 JVM은 Java Virtual Machine '자바 가상 머신'을 뜻하는 말로 바이트코드를 실행하는 주체입니다. 자바가 처음 세상에 나왔을 때 WORA (Write Once Run Anywhere) 를 내세워 홍보하였습니다. 한번 작성해서 어디서든 실행할 수 있다는 말로, 자바 코드로 작성한 프로그램은 실행할 환경 (예를 들어 운영체제)에 독립적으로 실행할 수 있음을 뜻합니다. JVM과 같은 중간언어를 해석해주는 추상화된 장치가 없는 언어들은, 운영체제가 바뀔 때마다 그에 맞는 실행 가능한 프로그램을 만들어야 합니다. 이런 불편..
람다식 학습 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식을 사용하기에 앞서 익명 구현 객체라는 것에 대해 알면 좋습니다. 익명 구현 객체는 인터페이스나 클래스의 객체를 생성해서 사용할 때, 재사용하지 않는 경우 보통 사용합니다. 예를 들어 보겠습니다. 특정 인터페이스를 사용하기 위해 이 인터페이스를 상속 받은 클래스를 구현하는 방법이 있습니다. public class Exam_001 { public static void main(String[] args) { Exam_001_Sub exam_001_sub = new Exam_001_Sub(); exam_001_sub.doSomething(); } } interface AnoymousTest_001 { void d..