본문 바로가기

전체 글388

자바(JAVA) - Inner클래스 ( AnonyMous ) - 익명클래스 보호되어 있는 글 입니다. 2023. 7. 17.
자바(JAVA) - Inner 클래스 ( StaticInner ) 보호되어 있는 글 입니다. 2023. 7. 17.
자바(JAVA) - Inner 클래스 ( Memberinner ) 보호되어 있는 글 입니다. 2023. 7. 17.
자바(JAVA) - 전략 패턴(Strategy Pattern) 전략 패턴 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고, 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법. HTML 삽입 미리보기할 수 없는 소스 Character 클래스가 Attack 인터페이스를 통해 공격 전략을 갖고있고, changeWeapon 메서드를 통해 동적으로 공격 방식을 변경할 수 있다. 전략패턴의 핵심은 클라이언트(Character 클래스)와 전략(Attack 인터페이스와 이를 구현한 Gun, Sord 클래스)를 분리하여 클라이언트가 변경 없이도 새로운 전략을 추가하거나 교체할 수 있도록 하는 것이다. 장점 기존 컨텍스트를 변경하지 않고, 새로운 전략을 도입함으로써 "개방-폐쇄 원칙"을 만족한다. 유연성과 확장성이 증가 재사용성 증가 개방-폐쇄 원칙(Ope.. 2023. 7. 13.
자바(JAVA) - 싱글톤 패턴(Singleton) 싱글톤 패턴 생성자를 private 접근 제한해서 외부에서 new 연산자로 생성자를 호출할 수 없도록 막는 것. 즉, 하나의 클래스에 하나의 객체 인스턴스가 오직 1개만 생성되는 패턴이다. Singleton 클래스 위 코드는 싱글톤 패턴을 사용하는 예제 코드이다. Singleton 클래스의 생성자가 private로 선언되어 외부에서 직접 인스턴스를 생성하는 걸 방지한다. 대신, 정적 메서드인 getInstance()를 통해 인스턴스를 얻을 수 있다. NoSingleton 클래스 예시로 객체 생성시 메모리 영역에 대해서만 알아볼 것이라 비워두었다. Main 클래스 위 코드를 보면, 싱글톤을 이용하여 생성된 객체는 같은 주소를 가지는 반면에 싱글톤을 쓰지 않고 new를 통해 새로 생성된 객체들은 각각 주소값.. 2023. 7. 13.
자바(JAVA) - 문자열(String) 메소드 - charAt(), replace(), substring(), indexOf(), contains(), split() 1. 문자추출 - charAt() 매개값으로 주어진 인덱스의 문자를 리턴한다. 인덱스란 0에서 "문자열의 길이-1" 까지의 번호이다. ex) 2. 문자열 대체 - replace() 기존 문자열은 그대로 두고, 대체한 새로운 문자열을 리턴한다. ex) 3. 문자열 잘라내기 - substring() 문자열에서 특정 위치의 문자열을 잘라내 가져온다. ex) 4. 문자열 찾기 - indexOf() 주어진 문자열이 시작되는 인덱스를 리턴한다. ex) 5. 문자열 포함여부 - contains() 원하는 문자열이 포함되어있으면 true 리턴, 포함되어있지 않다면 false 리턴 ex) 6. 문자열 분리 - split() 분리된 문자열은 배열로 얻을 수 있다. ex) 2023. 7. 13.
자바(JAVA) - 상속(Inheritance) -3 Me 클래스 HTML 삽입 미리보기할 수 없는 소스 Father 클래스 HTML 삽입 미리보기할 수 없는 소스 GrandFather 클래스 HTML 삽입 미리보기할 수 없는 소스 FamilyWork 클래스 HTML 삽입 미리보기할 수 없는 소스 FamilyWork main 메소드가 있는 FamilyWork 클래스에서 Me 객체를 생성해, sleep 메소드를 호출해보았다. Me 하지만 보다시피 Me 클래스에는 sleep 메소드가 없다. 그렇다면 호출이 안되는 것일까? 위 사진을 보면 extends Father이라고 해서 Father의 상속을 받고있는 것을 확인할 수 있다. 그렇다면 Me 클래스는 Father의 클래스 안에 있는 것도 사용할 수 있게 되는 것이다. Father Father에는 sleep() .. 2023. 7. 13.
자바(JAVA) - 퀵 정렬(Quick Sort) 보호되어 있는 글 입니다. 2023. 7. 12.
자바(JAVA) - 메모리 사용 영역(Method, Heap, Stack) 메모리의 사용 영역을 알기전에, 자료형은 크게 기본 자료형과 참조 자료형으로 나뉜다. 기본 자료형 8개(int, long, char ... 등)의 이름은 모두 소문자로 시작하는 반면, 참조 자료형은 모두 대문자(String, System, ...등)은 모두 대문자로 시작한다. 기본 자료형은 스택 메모리에 생성된 공간에 실제 변숫값을 저장하는 반면, 참조 자료형은 실제 데이터 값은 힙 메모리에 저장하고, 스택 메모리의 변수 공간에는 실제 변숫값이 저장된 힙 메모리의 위칫값을 저장한다. 클래스(Class)영역, 메소드(Method)영역, 상수(Final)영역, 정적(Static)영역 - Static 영역이라고도 부르며, 전역 변수와 정적 멤버변수 (static 변수)가 저장되는 영역. 스택 (Stack)영역.. 2023. 7. 11.
자바(JAVA) - 얕은 복사(shallow copy)와 깊은 복사(deep copy) 얕은 복사(shallow copy) - 객체가 참조하고 있는 객체의 주소만 복사하는 것이다. 원본과 복제본이 같은 객체를 공유하며 이때 같은 객체는 메모리의 힙(heap)주소이다. - 원본 변경시 복제본도 영향을 받는다. HTML 삽입 미리보기할 수 없는 소스 'b' 배열은 'a'배열의 참조를 가리키고 있다. 따라서 'b' 배열의 값을 변경하면 'a' 배열도 함께 변경된다. 즉, 참조 타입 데이터가 저장한 메모리 주소 값을 복사하는 것이다. 깊은 복사(deep copy) - 객체가 참조하고 있는 객체까지 복사하는 것이다. - 원본과 복사본이 서로 다른 객체를 참조하므로 원본의 변경이 복사본에 영향을 주지 않는다. 2023. 7. 10.
자바(JAVA) - 2Tier , 3Tier JDBC는 2계층(2Tier)과 3계층(3Tier)를 모두 지원한다. 2Tier (2계층) : 클라이언트가 직접 DB 서버에 접근해 데이터를 가져오는 것이다. 장점 개발이 편리하다. 개발 비용이 저렴하다. 유지보수가 쉽다. 단점 모든 비지니스 로직을 클라이언트에서 처리 (속도 저하) 비지니스 로직 변경시 클라이언트로 프로그램을 다시 배포 (업데이트 문제) -> 재사용 어려움 클라이언트에서 DB를 처리하기 때문에 보안 취약 서버에 부하가 많이 일어남 3Tier (3계층) : 클라이언트가 웹 애플리케이션 서버 (WEB Server -> WAS)를 경유해 DB에 접근하고 직접 데이터 관리 역할을 서버가 하지 않으며 DB서버를 별도로 구성한다. 장점 보안에 용이하다. 비지니스 로직을 모듈화시켜 재사용할 수 있다.. 2023. 7. 10.
자바(JAVA) - 자료의 형 변환(자료형) 업캐스팅, 다운캐스팅 형 변환 ( Type Casting ) 이란? 변수의 타입을 다른 타입으로 변환하는 것이다. ex) char int 기본자료형은 기본자료형끼리, 참조 자료형은 참조 자료형끼리 형 변환이 가능하다. boolean은 다른 기본 타입과 호환되지 않는다. 기본타입과 참조형의 형 변환을 위해 Wrapper 클래스를 사용할 수 있다. 프로모션(promotion) - 더 큰 자료형으로의 자동 변환 / 정보의 손실이 없다. 자동형변환(묵시적) 이것을 업 캐스팅(UpCasting)이라고 부른다. 자동형변환(묵시적)은 자료의 손실 걱정이 없어 JVM이 서비스 해준다. 디모션(demotion) - 더 작은 자료형으로의 변환(명시) / 정보의 손실이 발생할 가능성이 있다. 강제형변환(명시적) 이것을 다운 캐스팅(DownCas.. 2023. 7. 9.