Class 클래스`Class` 클래스는 자바 리플렉션 API의 일부로, 클래스 및 인터페이스의 메타데이터에 접근할 수 있도록 한다. `Class` 객체는 특정 클래스에 대한 정보를 캡슐화하며, 클래스 이름, 상위 클래스, 구현한 인터페이스, 메서드, 생성자 등의 정보를 제공한다. Class 조회다음과 같이 3가지 방법을 통한 조회가 가능하다.Class clazz = String.class; // 1.클래스에서 조회Class clazz = new String().getClass();// 2.인스턴스에서 조회Class clazz = Class.forName("java.lang.String"); // 3.문자열로 조회 조회된 `Class`클래스의 객체를 이용한 주요 기능은 다음과 같다. `getDeclared..
클래스 로더 (Class Loader)클래스 로더(Class Loader)는 Java 가상 머신(JVM)에서 클래스를 동적으로 로드하는 역할을 한다. 클래스 로더는 JVM이 애플리케이션을 실행할 때 필요한 클래스를 메모리에 로드하고, 이를 초기화하는 과정을 담당한다. JVM은 애플리케이션 실행 시 필요한 모든 클래스를 미리 로드하지 않고, 필요할 때마다 동적으로 로드하기 때문이다. 따라서 클래스 로드는 Java 애플리케이션의 유연성과 확장성을 높이는 중요한 역할을 한다. 클래스 로더의 종류부트스트랩 클래스 로더 (Bootstrap Class Loader)JVM의 기본 라이브러리(rt.jar, tools.jar 등)를 로드한다.일반적인 자바 코드가 아닌 C++로 구현되어 있다.BIOS처럼 JVM의 초기 ..
Wrapper 클래스자바에는 기본 타입과 Wrapper 클래스가 존재한다. 기본 타입(Primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(Wrapper class)라고 한다.기본형 타입 : int, long, float, double, boolean 등Wrapper 클래스 : Integer, Long, Float, Double, Boolean 등 근데 기본형이 있는데 왜 래퍼 클래스라는 것을 만들어 굳이 객체화시키는 것일까?자바는 객체지향언어이며, 객체가 중심으로 개발이 이루어진다. 그런데 자바 안에서 객체가 아닌 것들이 있는다. 바로 기본형(Primitive Type)이다. 기본형에 경우 객체가 아니기 때문에 다음과 같은 한계를 지닌다.객체가 아니기 때문에 객체 지향 ..
https://www.acmicpc.net/problem/2667문제과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, 그 다음 N줄에는 각각 N개의 자료(0혹은 1)가 입력된다..
문자열 상수와 String문자열의 본질은 문자 배열이며, 문자열은 인코딩 규칙에 따라 저장된다. 자바에 경우 네이티브 코드와 달리 다국어 지원을 기본으로 처리하여 문자열 관리가 용이하다. 문자열 상수는 불변 객체(Immutable Object)로, 읽기 전용(Read-Only) 문자 배열로 표현된다. 배열은 고정된 크기를 가지지만, 자바에서는 `" "` 안의 문자열을 가변적으로 사용 가능하다. 따라서 문자열 크기가 변하는 과정에서 `overflow` 문제가 발생할 수 있다. 문자열 저장 방식의 변화JDK 8 이전에는 문자열 데이터를 `char[]` 배열로 관리되었다. 모든 문자를 `UTF-16`으로 저장하여, 문자당 2바이트가 할당되었다. 예를 들어 알파벳이나 숫자처럼 1바이트로 표현한 문자도 2바이..
불변객체(Immutable Object)불변 객체는 객체를 초기화 후 내부 상태(객체 내부의 값, 필드, 멤버 변수)를 변경할 수 없는 객체를 말한다. 읽기 전용(read-only) 객체로 불리며, 내부 상태는 외부에 노출되지 않거나 방어적 복사(Defensive Copy)를 통해 제공된다. 내부의 값이 변경되지 않음에 따라 객체 상태 값에 `final`로 선언한다. 그럼 내부에서 값을 변경할 수 있는 `setter`사용이 불가해진다. 그럼 이 클래스는 생성자를 통해서만 값을 설정할 수 있게 된다. 이후에는 값을 변경하는 것이 불가능하다.public class ImmutableString { private final String value; // 필드는 final로 선언하여 재할당 방지 // ..
멘토링 내용두번째 멘토링을 진행하였다. 두번째 시간도 자바의 신을 학습 후 해당 키워드에 대한 내용을 문답형태로 진행하였다. 자바의 신 1권 기준 11장부터 전체 내용을 다뤘고 내가 준비한 답변 리스트를 먼저 질문하고 멘토링이 답변을 듣고 꼬리질문 형식으로 진행이 되었다. 다음과 같은 키워드로 진행하였으며, 1주차에서 찾아보라고 해주신 내용과 자바의 신 전반에 내용이 키워드화하여 폭 넓게 진행되었다.객체, 인스턴스, 클래스객체지향 프로그래밍자바 7버전과 8버전의 메모리 구조 변화GC불변객체String, StringBuilder, StringBufferJava 컴파일 과정동일성과 동일성equals()와 hashCode() 이번주에 경우 내가 이력서를 늦게 전달해줘서, 이력서에 대한 내용은 다음 주에 진행..
FAT(File Allocation Table) 기반 파일 시스템FAT는 저용량 보조기억장치(USB, SD카드 등)에서 주로 사용되는 파일 시스템입니다. 연속적 블록 할당으로 외부 단편화 문제가 발생할 수 있어, 불연속적 할당 방식을 사용합니다. FAT의 특징파일 저장 구조FAT에는 블록 주소와 다음 블록 주소가 기입되어 있습니다. 운영체제는 파일 시작 블록 주소를 디렉토리 엔트리에서 확인하여 파일에 접근합니다. 다음과 같은 파티션 구조로 되어있습니다. 예약 영역: 시스템 정보를 저장FAT 영역: 파일 할당 정보를 저장루트 디렉토리 영역: 디렉토리 정보를 저장데이터 영역: 파일과 디렉토리 데이터가 저장디렉토리 구성 요소파일 이름파일 위치 정보(블록 주소)파일 속성(생성 시간, 수정 시간, 크기 등)FA..
https://www.acmicpc.net/problem/2470문제KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다. 예를 들어, 주어진 용액들의 특성값이 [-2, 4, -99, -1, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 ..
https://www.acmicpc.net/problem/1260문제그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과..