Java(41)
-
ArrayList와 LinkedList의 주요 차이점
구조적 차이//ArrayList의 메모리 구조[1][2][3][4][5] // 연속된 메모리특징:- 데이터가 메모리에 연속적으로 저장됨- 예: 1이 1000번지, 2가 1004번지, 3이 1008번지...- 각 데이터는 정해진 크기의 메모리 공간을 가짐- 인덱스로 직접 접근 가능 (메모리 주소 = 시작주소 + (인덱스 × 데이터크기))//LinkedList의 메모리 구조[데이터1|다음주소] → [데이터2|다음주소] → [데이터3|다음주소]실제 메모리:[1|500번지] → [2|900번지] → [3|300번지] → [4|750번지](100번지) (500번지) (900번지) (300번지)특징:- 각 노드가 데이터와 다음 노드의 주소를 저장- 메모리 상 불연속적으로 저장 가능- 다음 ..
2025.05.10 -
자바의 배열
//배열 기본 구조// 배열 선언int[] numbers; // 선언만 하기int[] numbers = new int[5]; // 선언과 초기화int[] numbers = {1, 2, 3, 4, 5}; // 선언과 동시에 값 할당// 배열 사용numbers[0] = 10; // 값 할당int value = numbers[0]; // 값 접근int length = numbers.length; // 배열 길이2차원 배열:// 배열 선언int[][] matrix; // 선언만 하기int[][] matrix = new int[3][4]; // 3행 4열 배열 생성int[][] matrix = { // 선언과..
2025.05.09 -
자바 문자열의 포매팅
문자열 포매팅 개념 설명문자열 포매팅은 문자열 내에 특정 값을 삽입하거나 형식을 지정하는 방법입니다. 실제 데이터를 문자열 템플릿에 끼워 넣어 원하는 형태의 문자열을 만드는 과정입니다.쉬운 설명기본 포맷(틀)이 정해진 양식이 있고 비어있는 칸에 스티커를 붙여 넣는 것처럼 특정 값을 넣는 방식편지지의 to __주차권의 차량번호 : __ 입차시간 : __학생 정보의 __ 학년 __ 반 __ 번// 문자열 포매팅 예시// 편지지 비유String letter = "친애하는 %s님께".formatted(name);// 주차권 비유String parking = String.format("차량번호: %s, 입차시간: %s", carNumber, time);// 학생 정보 비유String student = String..
2025.05.09 -
자바의 String은 클래스다.
String이 클래스인 이유문자열 관련 다양한 기능(메서드)을 제공하기 위해문자(char)들의 집합인 문자열을 효과적으로 다루기 위해 String str = "hello";str.length(); // 문자열 관련 메서드 사용 가능str.toUpperCase();str.substring(0,2);String 선언과 생성// 타입 선언 (생성자 아님)String str1 = "Hello"; // 생성자 사용String str2 = new String("Hello");String의 특징참조형 데이터 타입 (Reference Type)Object 클래스를 상속받음String 클래스의 메서드와 Object 클래스의 메서드 모두 사용 가능str.length(); // String의 메..
2025.05.09 -
문자 자료형과 메서드
문자열(String) 개념 설명자바의 String은 문자들의 *시퀀스를 나타내는 참조 자료형이다.String 객체는 불변(immutable)하며, 한번 생성된 문자열은 변경할 수 없다. 문자열 연산시 새로운 String 객체가 생성다. ※ 시퀀스(Sequence)란?"연속된 데이터의 나열" 또는 "순서가 있는 데이터의 집합"을 의미한다.String은 내부적으로 char의 배열로 구현되어 있었다가 byte 배열로 변경되었다. 변화와 이유(char배열에서 byte 배열로 변경된 이유)Java 8까지char[] 배열 사용각 문자당 2바이트 사용유니코드 문자 저장Java 9 이후byte[] 배열로 변경Latin-1(1바이트)과 UTF-16(2바이트) 인코딩 모두 지원메모리 효율성 개선 (대부분의 문자열이 AS..
2025.05.08 -
자바 제네릭
제네릭 개념 설명클래스나 메서드를 정의할 때 타입 파라미터( 등)를 사용해서 임시로 타입이 들어갈 것이라고만 정의해두고, 실제 사용할 때 구체적인 타입을 지정하면 해당 클래스나 메서드 내부의 모든 타입 파라미터가 지정된 타입으로 일괄 변환되는 문법입니다.쉽게 말하면 처음에는 T라는 임시 타입으로 틀만 만들어두고, 실제 사용할 때 String이나 Integer 같은 구체적인 타입을 지정하면,클래스나 메서드 내부의 모든 T가 지정한 타입으로 자동 변환됩니다. 여기서 타입 파라미터는:임시 지정자(플레이스홀더) 역할클래스/메서드 정의 시점에만 사용실제 사용 시점에서 구체적인 타입(String, Integer 등)으로 변환됨// 처음에 T로 정의class Box { private T item; ..
2025.05.07 -
자바 컬렉션 프레임워크
개념 설명컬렉션 프레임워크는 데이터 군(群)을 저장하고 관리하는 자료구조들의 표준화된 설계입니다.(자바스크립트의 배열과 객체를 더 체계적으로 분류한 것과 유사)주요 인터페이스:List (JS의 Array와 유사): 순서가 있는 데이터 집합Set: 중복을 허용하지 않는 데이터 집합Map (JS의 Object와 유사): 키-값 쌍으로 이루어진 데이터 집합비유 설명:List: 줄 서있는 사람들 (순서 있음)Set: 회원가입 명단 (중복 없음)Map: 사물함과 열쇠 (키-값 쌍)사용 목적데이터 구조의 표준화재사용성 증가프로그래밍 효율성 향상데이터 관리의 일관성 확보자주하는 실수제네릭 타입 미지정동기화 처리 미흡부적절한 컬렉션 타입 선택불필요한 객체 보관으로 인한 메모리 누수주요 컬렉션 비교표특성ArrayList..
2025.05.07 -
자바의 예외 처리
[개념 설명]예외 처리는 프로그램 실행 중 발생하는 예기치 않은 상황을 처리하는 프로그래밍 방식입니다. 자바에서는 try-catch-finally 구문을 사용하여 예외를 처리합니다(JavaScript의 try-catch와 유사). 예외는 Throwable 클래스를 상속받는 객체로 처리되며, Exception과 Error로 크게 구분됩니다.[비유를 통한 설명]자동차 운전으로 비유하면:일반 코드는 정상적인 도로 주행예외는 갑작스러운 장애물이나 사고 상황try는 주의하면서 운전하는 구간catch는 문제 상황에 대한 대처 방법finally는 어떤 상황에서도 반드시 해야 하는 주차[사용 목적]프로그램 안정성 확보비정상 종료 방지오류 상황의 체계적 관리디버깅 용이성 제공코드 품질 향상예외 상황 명확한 구분유지보수성..
2025.05.07 -
인터페이스에 정의할 수 있는 요소들
1. 추상 메서드 (기본)interface Example { void method1(); // public abstract 자동 추가 public abstract void method2(); // 명시적 선언}2. 상수interface Example { int MAX_COUNT = 100; // public static final 자동 추가 public static final int MIN_COUNT = 0; // 명시적 선언}3. default 메서드 (Java 8+)interface Example { default void defaultMethod() { // 구현 코드 작성 가능 }}4. static ..
2025.05.02 -
기타제어자 (Other Modifiers)
기타 제어자(Non-access Modifier)의 종류기본 구조 제어자 (설계 관련) static - 클래스 수준에서 공유되는 멤버를 정의하여 메모리에 한 번만 할당되고 모든 인스턴스가 공유하게 함final - 값 변경, 상속, 오버라이딩을 금지하여 불변성을 보장함 abstract - 미완성 설계도를 제공하여 자식 클래스에서 반드시 구현하도록 강제함 특수 목적 제어자 (동작 관련) synchronized - 멀티스레드 환경에서 한 번에 하나의 스레드만 접근할 수 있도록 동기화를 보장함 transient - 객체 직렬화 과정에서 특정 필드를 제외하여 보안성을 확보하거나 최적화함 volatile - 멀티스레드 환경에서 변수의 값을 메인 메모리에서 직접 읽고 써서 항상 최신 값을 보장함1. static개념:..
2025.05.02