■ final 키워드란?▶ 변수, 메서드, 클래스에 붙여서 "변하지 않게", 또는 "재정의되지 않게" 만들어주는 키워드. 변수에 final을 사용하면 → 상수메서드에 final을 사용하면 → 오버라이딩 불가능! 클래스에 final을 사용하면 → 다른 클래스가 상속 불가능!!!▶ ▶ ▶ 그냥 "상수"를 만들어준다는 개념이다!! ex) class Parent { final void show() { System.out.println("Hello"); }}class Child extends Parent { // void show() { } // ❌!! 오버라이딩 불가능 !!} ▶ 변하지 않을 값에는 꼭 적어주는 것이 좋다!! 하지만, 습관적으로 모든 변수, 매서드 등에 쓰는 것은 ..
백엔드를 구성하는 과정 중에서, 아직 DB에 연결하는 단계까지는 못했고, 리스트를 활용해서 DB역할을 하려고 했다. 근데 나도모르게 요청을 받을 때마다 새로운 객체를 생성하도록 코드를 짜서, 저장했던 값들이 계속 초기화 되는 문제가 발생했다. 이에 "하나의 객체를 한 번만 생성해서 전역해서 관리하기"라는 기술이 필요하게 되었고, 싱글톤 패턴(Singleton Pattern)에 대해서 공부하게 되었다. ■ 싱글톤 패턴이란? "하나의 클래스에 대해 오직 하나의 인스턴스만 생성되도록 보장하고, 전역적으로 그 인스턴스에 접근할 수 있도록 하는 디자인 패턴"이렇게 정의할 수 있다. 예제로 이해해보자!! ( 싱글톤 패턴 클래스 )public class MySingleton { // 1. static으로 자기..
○ 오토 박싱( Autoboxing ) : 기본형 → 래퍼 클래스 객체로 자동 변환○ 언 박싱( Unboxing ) : 래퍼 클래스 객체 → 기본형으로 자동 변환 (예제)public class BoxingExample { public static void main(String[] args) { // 오토박싱: int → Integer (기본형 → 래퍼 클래스 객체) int num = 100; Integer boxedNum = num; // 오토박싱 (자동으로 Integer.valueOf(num) 실행) System.out.println("오토박싱된 Integer: " + boxedNum); // 언박싱: Integer → i..
package main;import java.util.ArrayList;import java.util.List;public class BookStore { private List bookStore = new ArrayList(); public void addBookStore(Book book) { bookStore.add(book); } public void printBookStore() { System.out.println(bookStore); }}이렇게 BookStore 클래스를 정의한 뒤, 객체를 생성 후, 해당 객체를 출력하니 printBookStore 매서드를 이용하여 출력하였더니 다음과 같은 결과가 나왔다. """How many do you..
우리가 자바에서 리스트를 사용할 때, 일반적으로 다음과 같이 사용한다.List list = new ArrayList();이때 내부에 들어가는 타입을 제네릭 타입이라고 부른다.이때 제네릭 타입에는 반드시 참조형 타입만을 사용해야한다. 이번 글에서는 이에 대해 다뤄보려한다. 일단 한마디로 요약하자면, 자바의 제네릭은 결국 내부적으로 Object로 다뤄지기 때문에,기본형(int, long)은 안 되고, 참조형(Integer, String 등)만 가능하다. 천천히 설명해보겠다.일단 자바 제네릭은 "타입 소거"라는 것을 하기 때문에, 컴파일 시점에서 Integer라고 알지만, List list = new ArrayList();실행 시점(JVM)에서는 그냥 List 로 다룬다. (내부는 전부 Object[] 같..
자바 형변환 기본 예제. (Casting)원칙은 다음과 같다.(타입명) 값;★ 기본형에서만 사용할 수 있음! ★ ( 예제 ↓ )public class TypeCastingExample { public static void main(String[] args) { // 실수형 double을 정수형 int로 강제 형변환 (명시적) double pi = 3.14; int intPi = (int) pi; // 강제 형변환, 소수점 잘림 System.out.println("강제 형변환: " + intPi); // 출력: 3 }}
■ 자바(Primitive Type)의 기본형 정리|타입 이름 | | 크기 | | 예시 값 | | 설명 |int4바이트1, 100, -23정수long8바이트100000L더 큰 정수short2바이트32767작은 정수byte1바이트127아주 작은 정수float4바이트3.14f실수 (소수점 포함)double8바이트3.141592더 정밀한 실수char2바이트'A', '가'문자 하나boolean1비트true / false논리값 ■ 자바의 참조형(Reference Type) 정리|분류| |예시| ..
( 스캐너 클래스)package main;import java.util.Scanner;public class ScannerClass { public static Scanner sc = new Scanner(System.in);}( 매인 매서드 )이 상태로 실행하면 bookName 값은 받아지지 않고, 바로 실행이 끝나는 것처럼 보인다. 하지만, 위해서 bookID 값을 받을때,→ 1234를 쓰고 엔터를 누르면, 실제 값은 이렇게 저장된다. 1234↵ . 이때 bookID 스캐너는 1234만 값을 가져가고, 다음 bookName 스캐너는 ↵ (개행(엔터 \n )) 를 값으로 받기 때문에 입력을 안 받은것처럼 보인다. (next(), nextInt(), nextDouble()는 엔터전까지의 값을 받기 ..
