전체 글221 [OOP] 메서드 체이닝(Method Chaining) ㅇ메서드 체이닝(Method Chaining): 각 메서드가 객체 자신(또는 다른 객체)의 참조값을 반환함으로써 다음 메서드를 이어서 계속 호출하는 패턴 한 객체의 메서드를 연속적으로 호출할 수 있도록 설계된 구조이다. 메서드 체이닝은 코드의 가독성을 높이고, 코드를 간결하게 유지하는 데에 도움을 준다. 예시1) 단순히 값을 누적해서 더하는 기능을 제공하는 ValueAdder 클래스package lang.string.chaining;public class ValueAdder { private int value; public ValueAdder add(int addValue) { value += addValue; return this; // 자신의 참조값을 반환해서 메.. 2024. 8. 22. [Java API] StringBuilder 클래스 불변인 String 클래스에는 단점이 존재한다. "A" + "B"String("A") + String("B") // 문자는 String 타입이다String("A").concat(String("B")) // 문자의 더하기는 concat을 사용한다new String("AB") // String은 불변이므로 새로운 객체를 생성한다 두 문자를 더하는 경우 다음과 같이 동작한다.더 많은 문자를 더하는 경우에는String str = "A" + "B" + "C" + "D";/*String str = String("A") + String("B") + String("C") + String("D");String str = new String("AB") + String("C") + String("D");String str .. 2024. 8. 22. [Java API] String 클래스 주요 메서드 정리 String 클래스는 문자열로 처리할 수 있는 다양한 기능을 제공한다. 기능이 방대하므로 필요한 기능이 있으면 그때마다 검색하거나 API 문서를 찾아보도록 하자. - isEmpty(): 문자열이 비어 있는지 확인한다. (길이가 0)- isBlank(): 문자열이 비어 있는지 확인한다. (길이가 0이거나 공백(Whitespace)만 있는 경우), Java 11 - equals(Object anObject): 두 문자열이 동일한지 비교- equalsIgnoreCase(String anotherString): 두 문자열을 대소문자 구분 없이 비교 - compareTo(String anotherString): 두 문자열을 사전 순으로 비교- compareToIgnoreCase(String str): 두 문자열.. 2024. 8. 22. 스트링 풀(String Pool, 문자열 풀) ㅇ스트링 풀(String Pool, 문자열 풀): 메모리 관리 기법 중 하나로, 힙 영역에 있는 특별한 저장소주로 문자열(String) 리터럴을 효율적으로 관리하기 위해 사용된다. 스트링 풀이 있는 언어에서는 동일한 문자열 리터럴이 여러 번 사용될 때, 각 리터럴이 별도로 메모리에 저장되지 않고, 이미 존재하는 동일한 문자열 리터럴을 재사용한다. 이렇게 함으로써 메모리 사용을 최적화하고 성능을 향상시킬 수가 있다. ※ 오션월드의 유수풀, 코딩조교실 인력풀 할 때의 그 풀(Pool)이다. 수영장이라는 의미를 기본적으로 갖고 있지만, 프로그래밍에서는 공용 자원을 모아둔 곳을 의미한다. 문자열 풀에서 문자를 찾을 때는 해시 알고리즘을 사용하기 때문에 속도가 매우 빠르다.https://claremont.tist.. 2024. 8. 21. [OOP] 불변 객체와 메서드명 관례 - withXxx() 불변 객체(Immutable Object)는 한 번 생성되면 그 상태를 변경할 수 없는 객체를 의미한다주요 특징상태 불변성: 객체가 생성된 이후에는 객체의 상태(필드 값)를 변경할 수 없다. 모든 필드는 초기화된 후에 변하지 않으며, 수정이 불가능하다.단순성: 불변 객체는 상태 관리가 단순하다. 상태가 변하지 않으므로, 복잡한 상태 변경 로직을 고려할 필요가 없다.불변 객체의 예Java의 String 클래스: String 객체는 불변 객체의 대표적인 예이다. String 객체가 생성된 후에는 해당 문자열의 내용을 변경할 수 없다. 문자열을 조작하는 메서드(예: concat, replace)는 항상 새로운 String 객체를 반환하며, 기존 객체는 변하지 않는다.래퍼 클래스 (Integer, Double,.. 2024. 8. 20. [Java API] Object 클래스 주요 메서드: toString(), equals(), getClass(), hashCode(), notify(), notifyAll(), wait() "기본형을 제외한 모든 것은 객체다"자바에서 모든 클래스의 최상위 부모 클래스는 항상 java.lang 패키지에 있는 Object 클래스이며 명시적이 아닌 묵시적인 상속관계이다. (부모가 없어도 따로 extends를 안 해도 된다)※ Object 배열을 활용하면 세상 모든 타입의 객체를 다 담을 수 있다 [Object 클래스가 제공하는 대표적인 기능]1. 객체의 정보를 제공하는 toString()2. 객체의 같음을 비교하는 equals(Object obj)3. 객체의 클래스 정보를 제공하는 getClass()4. 객체의 해시 코드를 반환하는 hashCode()5. 멀티스레드 메서드 notify(), notifyAll(), wait()6. 객체를 복사하는 clone() - 잘 사용하지 않기에 다루지는 않겠.. 2024. 8. 20. [Java API] java.lang 패키지 주요 클래스와 인터페이스 정리 자바가 기본으로 제공하는 라이브러리(클래스 모음) 중에 가장 기본이 되는 것이 바로 java.lang 패키지이다. 자바 언어를 이루는 가장 기본이 되는 클래스들을 보관하는 패키지이다. java.lang 패키지는 모든 자바 애플리케이션에 자동으로 import된다. 따라서 import를 생략해도 사용할 수 있다System.out.println() 함수를 그냥 바로 사용할 수 있는 것도 이 이유이다 [java.lang 패키지의 주요 클래스]- Object 클래스: 모든 자바 객체의 최상위 부모 클래스- String 클래스: 문자열을 다루기 위한 클래스, String 객체는 불변(immutable)이며, 생성된 이후에는 변경 x- StringBuilder & StringBuffer 클래스: 변경 가능한 문자열.. 2024. 8. 20. 사이드 이펙트(side effect) 사이드 이펙트(side effect)는 프로그래밍에서 어떤 계산이 주된 작업 외에 추가적인 부수 효과를 일으키는 것을 말한 다. 쉽게 말하면 '의도하지 않은 결과'를 의미하며 프로그래밍에서 사이드 이펙트는 보통 부정적인 의미로 사용한다. 1. 사이드 이펙트의 예시전역 변수 수정: 함수가 전역 변수를 수정하는 경우.입력 값 수정: 함수가 전달된 인자의 값을 직접 변경하는 경우.파일 시스템에 쓰기: 함수가 파일에 데이터를 쓰거나 파일을 수정하는 경우.데이터베이스 업데이트: 함수가 데이터베이스에 값을 삽입하거나 갱신하는 경우.콘솔 출력: 함수가 콘솔에 메시지를 출력하는 경우. (System.out.println() 등)네트워크 요청: 함수가 외부 네트워크 요청을 하는 경우. 2. 사이드 이펙트의 문제점"사이드.. 2024. 8. 20. [OOP] 정적 의존관계 vs 동적 의존관계 ㅇ정적 의존관계(Static Dependency): 컴파일 시간에 결정되며, 주로 클래스 간의 관계를 의미쉽게 이야기해서 프로그램을 실행하지 않고, 클래스 내에서 사용하는 타입들만 보면 쉽게 의존관계를 파악할 수 있다.특징:컴파일 타임: 정적 의존관계는 코드가 컴파일될 때 결정된다. 즉, 소스 코드에서 어떤 클래스가 다른 클래스를 참조하거나 사용하는 경우, 이 의존관계가 컴파일러에 의해 확인된다.명시적 선언: 클래스가 다른 클래스를 사용하는 경우, 그 클래스의 인스턴스를 생성하거나 메서드를 호출하는 코드가 명시적으로 작성된다.파일 참조: Java에서는 import 문을 통해 다른 클래스를 참조하거나 사용하는 것을 확인할 수 있다. ㅇ동적 의존관계(Dynamic Dependency): 프로그램이 실행되.. 2024. 8. 20. 이전 1 ··· 9 10 11 12 13 14 15 ··· 25 다음