JAVA 12

[JAVA] Thread

프로세스- 실행 중인 프로그램의 인스턴스이다.- 각 프로세스는 독립적인 메모리 공간을 가지며, 운영체제에서 독립된 실행 단위로 취급된다. 스레드- 프로세스 내에서 실행되는 작은 단위- 여러 스레드는 하나의 프로세스 내에서 자원을 공유- 프로세스의 코드, 데이터, 시스템 자원등을 공유- 실제로 CPU에 의해 실행되는 단위는 스레드 start()새로운 스레드를 생성해서 run() 실행비동기 실행✅ 새로운 스레드 생성run()일반 메서드처럼 호출동기 실행 (main 스레드에서 실행)❌ 새로운 스레드 X start()는 내부적으로 native 메서드를 통해 운영체제 수준에서 새로운 스레드를 생성이후 run()을 자동으로 호출함 사용자 스레드 - 프로그램의 주요 작업 수행 - 작업이 완료될 때까지 실행 -..

JAVA 2025.07.16

[JAVA] HashMap

HashMap 이란?HashMap은 Map 인터페이스를 구현하고 있는 대표적인 클래스 입니다.Map의 구조인 key-value 쌍으로 구성 되어 있는게 특징입니다. HashMap의 사용 이유- 탐색 속도가 빠르다 (평균 O(1)) - key를 기준으로 데이터를 매우 빠르게 조회할 수 있습니다. - 내부적으로 배열+해시 함수를 사용해 위치를 계산하기 때문에 성능이 뛰어납니다. - 대량의 데이터를 다룰 때, 순차 탐색보다 훨씬 빠릅니다.- Key-Value 구조로 데이터 저장 - 하나의 key에 하나의 value를 매핑합니다. - 중복된 key를 넣으면 이전 value를 덮어쓰기 합니다.- 중복 없는 key 관리 - 같은 key를 두 번 넣으면 마지막 value로 덮어쓰게 되므로 자연스럽게 중복 제..

JAVA 2025.07.16

[JAVA] Hash

Hash란?해시(Hash)는 데이터를 고정된 크기의 고유한 값(숫자)으로 변환하는 함수 또는 그 결과 값을 의미합니다.이때 사용되는 함수는 해시 함수(Hash Function)라고 부릅니다. 해시 함수의 특징Deterministic같은 입력이면 항상 같은 출력Fast계산이 빠르다Uniformity해시값이 고르게 분포되면 성능이 좋다Collision 가능성 존재서로 다른 입력값이 같은 해시값을 가질 수 있음One-way (암호학적 해시)입력값을 추정하기 어렵게 설계됨 (SHA-256 등) 해시의 사용처해시 테이블 구현 (HashMap, HashSet, Hashtable)암호학 (비밀번호 저장 시 해싱: SHA-256, bcrypt)데이터 무결성 검증 (파일 해시: MD5, SHA)캐시 키 생성블록체인 (블..

JAVA 2025.07.16

[JAVA] List vs Set

List : 리스트는 요소들의 순차적인 컬렉션이다. 순서를 가지며 같은 요소가 여러번 들어 갈 수 있다.특징 - 순서 유지 : 리스트에 추가된 요소는 특정한 순서를 유지 한다. - 중복 허용 : 리스트는 동일한 값이나 객체의 중복을 허용 한다. - 인덱스 접근 : 리스트의 각 요소는 인덱스를 통해 접근 가능 하다. Set : 유일한 값의 요소들의 컬렉션이다.특징 - 유일성 : 셋에는 중복된 요소가 존재하지 않는다. - 순서 미보장 : 요소들의 순서를 보장하지 않는다. 즉 입력 순서대로 출력 순서를 보장하지 않는다. - 빠른 검색 : 셋은 요소의 유무를 빠르게 확인할 수 있도록 최적화 되어 있다.

JAVA 2025.07.16

[JAVA] ArrayList 란?

ArrayList란?ArrayList는 배열을 기반으로 한 컬렉션의 하나이며, 데이터를 추가, 삭제시 내부에서 동적으로 배열의 길이를 조절해준다.ArrayList 특징ArrayList는 내부적으로 연속된 주소를 가진 배열을 이용하는 컬렉션연속적인 데이터 리스트이다.ArrayList 클래스는 내부적으로 Object[] 배열을 이용해 요소를 저장한다.배열을 이용하기 때문에 인덱스를 이용해 요소에 빠르게 접근할 수 있다.크기가 고정되어있는 배열과 달리 데이터의 크기에 따라 공간을 늘리거나 줄인다.그러나 배열 공간이 꽉찰 때마다 배열을 복사하는 방식과 사이즈를 늘리며 증가하는데, 이때마다 지연이 된다.데이터를 리스트 중간에 삽입/삭제하는 경우에 중간에 빈 공간이 생기지 않도록 요소들의 위치를 앞뒤로 이동시키기때..

JAVA 2025.07.16

변수 범위

변수선언 위치사용 범위메모리생성과 소멸지역 변수 (로컬 변수)함수 내부함수 내부에서만 사용스택함수 호출 시 생성 함수 끝나면 소멸멤버 변수 (인스턴스 변수)클래스 멤버 변수로 선언클래스 내부에서 사용 private 아니면 참조 변수로 다른 클래스에서 사용 가능힙인스턴스 생성될 때힙에 생성 , 가비지 컬렉터가 메모리 수거할 때 소멸static 변수 (클래스 변수)static 예약어를 사용하여 클래스 내부에 선언클래스 내부에서 사용 private이 아니면 클래스 이름으로 다른 클래스에서 사용 가능데이터 영역프로그램이 처음 시작할 때 상수와 함께 데이터 영역에 생성 프로그램이 끝나고 메모리 해제할 때 소멸 - static 변수는 프로그램이 메모리에 있는 동안 계속 영역을 차지하므로 너무 큰 메모리를 할당하는..

JAVA 2025.07.15

super 키워드 , 다운캐스팅 , instanceof

super - 하위 클래스에서 가지는 상위 클래스에 대한 참조 값- super()는 상위 클래스의 기본 생성자를 호출- 하위 클래스에서 명시적으로 상위 클래스의 생성자를 호출하지 않으면 super()가 호출 된다.- 상위 클래스의 기본 생성자가 없는 경우 하위 클래스에서는 생성자에서는 super를 이용하여 명시적으로 상위 클래스의 생성자를 호출 함- super는 생성된 상위 클래스 인스턴스의 참조 값을 가지므로 super를 이용하여 상위 클래스의 메서드나 멤버 변수에 접 근 할 수 있다. 다운 캐스팅 - 업캐스팅된 클래스를 다시 원래의 타입으로 형 변환 하는 것이다. - 하위 클래스로의 형 변환은 명시적으로 해야 한다. instanceof - 원래 인스턴스의 형이 맞는지 여부를 체크하..

JAVA 2025.07.15

object 클래스 ,string 관련

equlas() - 두 인스턴스의 주소 값을 비교하여 true/false를 반환한다.- 재정의 하여 두 인스턴스가 논리적으로 동일함의 여부를 구현한다.- 인스턴스가 다르더라도 논리적으로 동일한 경우 true를 반환하도록 재정의 할수 있다. hashCode()- 인스턴스의 저장 주소를 반환한다.- 힙메모리에 인스턴스가 저장되는 방식이 hash 방식- 자료의 특정 값에 대한 저장 위치를 반환해주는 해시 함수를 사용 String , StringBuilder , StringBuffer String : String은 불변하다는 특징을 가지고 있어 수정을 하지못하고 새로운 String 인스턴스가 생성되고 전에 있던 String은 GC에 의해 사라짐StringBuffer : 멀티 쓰레드 프로그래밍에서 동기화Strin..

JAVA 2025.07.15

자바에서 비교 시 equals / == 비교

문자열 비교 시에는 == 을 사용하지 않는다.문자 String은 참조형이기 때문에 ==은 주소(참조값)을 비교하기 위해서 사용하므로문자열 비교시에는 equlas를 사용해서 비교를 해준다. String str = "Hello"; String str2 = "Hello"; String str3 = new String("Hello"); System.out.println(str == str2); //true System.out.println(str == str3); //false (주소값이 다르기때문) System.out.println(str.equals(str2)); //true System.out.println(str.equals(str3)); //true

JAVA 2025.04.26

자바 메모리 구조

메서드 영역프로그램을 실행하는데 필요한 공통 데이터를 관리 프로그램의 모든 영역에서 공유클래스 당 한 번만 올라감GC의 대상이 아님 스택 영역 LIFO 구조 (Last In First Out)빠른 속도: 생성과 제거가 단순메서드 실행과 생명주기가 1:1 매칭쓰레드마다 따로 관리됨GC 대상 아님 (자동 소멸됨)힙 영역new로 생성된 객체, 배열, 인스턴스 변수여러 스레드에서 공유됨 (동기화 필요)메서드 실행과 생명주기가 1:1 매칭GC(Garbage Collector)**가 사용하지 않는 객체를 자동으로 제거

JAVA 2025.04.26