분류 전체보기(129)
-
enum
enum이란?특정 범위의 값을 지정해두고 제공하는 열거형 타입이다. 왜 사용하는가?Spring 사용 시 타입 안정성 부족 - 값의 제한이 어려움 : 대/소문자 구분, 오타 등을 관리 하기 어렵다. - 컴파일 오류 감지 불가 : 오타와 같은 상황이 발생해도 단순한 String 이므로 컴파일 단계에서 오류를 잡을 수 없다. -> 런타임 오류로 직결됨. ComparableEnum 에서 comaprable 인터페이스의 compareTo()를 사용할 땐 항상 주의해야 한다.Object 와 같이 enum 타입은 Enum을 상속하는데, Enum에는 이미 comparable 을 구현한 메서드가 있다.public final int compareTo(E o) { Enum other = o; En..
2024.05.01 -
String_String pool
String a = "big"; String b = "big"; String 참조변수에 "문자열" 을 대입한다는 것은 String a = new String("big"); String b = new String("big"); 와 같다고 했다. 그렇다면, 아래와 같이 연산했을 때 당연히 결과값은 False 여야 한다. a == b;// 기대값 false 그러나, 예상과 다르게 결과값은 'True' 가 나온다. 어째서일까? 이는 최적화와 관련이 있다. String 은 몹시 자주 쓰이는 만큼, 중복값도 빈번히 발생한다. 그리고 String은 객체이다. 즉, 중복값이 많을수록 불필요한 중복 객체가 수도 없이 존재하게 된다. 물필요한 객체 = 메모리 낭비! 따라서, 이런 불필요한 낭비를 미연에 방지하기 위해, 프..
2024.04.17 -
Object OCP(Open Closed Principle)
Bad Case Object 와 같이, 모든 클래스에서 공통적으로 사용하는 정보를 지닌 클래스, 메소드가 없다면? public class BadCaseObjectToString{ public static void print(BadCaseA bad){ String str = bad.badInfo(); // toString() 이 없으니 class에 정보 출력 메서드 작성해야 함. System.out.println(str); } // Object가 없으면 메서드 파라미터 타입별로 메서드 계속 새로 정의 해줘야 함. public static void print(BadCaseB bad){ String str = bad.badInfo(); // toString() 이 없으니 class에 정보 출력 메서드 작성해야..
2024.04.05 -
java.lang_Object Class
Object Class 자바에서 모든 클래스의 최상위 class 이다. Obejct - super - sub Object Class 가 최상위 클래스인 이유 공통 기능 제공 다형성 기본 구현 1. 공통기능 제공 객체 정보 제공, 타 객체와의 비교, 인스턴스의 설계도(class) 확인 등은 모든 클래스에 필요한 기능이다. 이런 기능을 클래스를 마다 계속해서 만드는 것은 굉장히 비효율적인 행위이다. 따라서, 하나의 클래스(Object Class)에 모든 클래스가 필요로하는 기능을 구현하고, 다른 클래스들이 하나의 클래스(Object Class)의 기능을 상속하여 사용하도록하면 효율적인 사용이 가능하기 때문이다. 이를 통해 프로그래밍이 단순화되고 일관성을 갖게 된다. 2. 다형성 기본 구현 장점 Object ..
2024.04.05 -
java.lang
java.lang package 자바가 기본적으로 제공하는 라이브러리(클래스 모음) 중, 가장 기본이 되는 패키지이다. lang은 Language의 약어. 즉, 자바 언어를 이루는 가장 기본이 되는 클래스 보관하는 패키지 되시겠다. 대표적인 Class Object - 모든 자바 클래스의 최상위 클래스 String - 문자열 Integer, Long, Double - 래퍼 타입(=기본형(Primity Type)을 객체로 만든 것) Class - 클래스 메타 정보 (클래스 이름, 갖고 있는 메서드 정보 등 클래스를 이루는 기본 내용) System - 시스템과 관련된 기본 기능 제공 자바라는 언어의 근간과 같으므로 반드시 자아알~ 알아두자. import 생략 java.lang 패키지는 모든 자바 applica..
2024.04.04 -
Generics_제약
1. 타입 변수에 넣는 타입은, 인스턴스 별로 다르게 대입 가능하다. ex) Zoo DogArea = new Zoo(); Zoo CatArea = new Zoo(); - static 멤버에 타입 변수는 사용할 수 없다. ex> class Zoo { static T animal;// 에러 발생 static int compare(T t1, T t2){...}// 에러 발생 } 왜 그럴까? 타입 변수에 대입하는 타입은 인스턴스 별로 다르게 대입 가능하다고 했다. static에 타입변수? static에 대해 잠시 복기 해보자. static 키워드 사용 위치 = class, method, field 저장위치 = 클래스(메서드) 메모리 영역 클래스 메모리 영역 특징 - 프로그램 실행 시 static 키워드가 사용된..
2024.03.21