본문 바로가기

✨ Java57

자바(JAVA) - this , this() , super , super() 각각 차이점 this - 현재 객체를 가리키는 참조 변수로, 해당 객체의 인스턴스 멤버(필드, 메서드)에 접근할 때 사용한다. 이렇게 자바에서는 this 참조 변수를 사용해 인스턴스 변수에 접근가능하다. this 참조 변수를 사용할 수 있는 영역은 인스턴스 메소드 뿐이고, 클래스 메소드에서는 사용할 수 없다. *static 영역에서도 사용 불가 모든 인스턴스 메소드에는 this 참조 변수가 숨겨진 지역 변수로 존재하고 있다. this() - 같은 클래스의 다른 생성자를 호출하는데 사용한다. 생성자 내부에서만 사용할 수 있으며, 생성자 내에서 다른 생성자를 호출할 때, this()를 사용해 해당 클래스의 다른 생성자를 명시적으로 호출할 수 있다. 이는 생성자 오버로딩 시 코드의 중복을 피하고 재사용성을 높이는데 도움된.. 2023. 7. 18.
자바(JAVA) - Exception 다양한 예외 종류 ArrayIndexOutOfBoundsException 초기에 정해진 배열의 크기보다 더 많은 양의 데이터를 넣고자 할 때 주로 발생하는 에러이다. m의 배열은 5까지인데, 마지막 i는 6번째의 배열에 값을 넣는것이므로, 오류가 나는 것이다. 초기에 정해진 배열의 크기보다 더 많은 양의 데이터를 넣을때 발생하는 에러가 ArrayIndexOutOfBounds에러이다. *finally는 에러가 발생하든 안하든 반드시 실행시킨다. ArithmeticException 0으로 나누는 등, 잘못된 산술 연산을 시도할 때 발생하는 에러이다. (0으로 나누는경우 정수 0으로 나누는 경우 등) 왼쪽 사진에 보면 data가 0인데, 0으로 나누려고해서 발생하는 오류이고, 오른쪽 사진 또한 (int)Math.random().. 2023. 7. 18.
자바(JAVA) - 다형성(Polymorhpism) -1 다형성이란? 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 자바에서는 이러한 다형성을 부모클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 구현한다. 다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나이다. How 오버라이딩 오버로딩 형변환 오버라이딩(Overriding) - 주로 클래스나 인터페이스를 상속받아 부모 클래스에 있던 함수를 재정의해서 사용하는 것이다. 오버로딩(Overloding) - 같은 함수라도 인수만 다르면 얼마든지 정의하고 사용할 수 있다. 타입변환 - 부모 클래스 변수에 자식객체 타입을 대입하면, 자동으로 타입 변환이 일어나는 것이다. Animal Class HTML 삽입 미리보기할 수 없는 소스 Dog Cl.. 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) - 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.
자바(JAVA) - IS-A관계와 HAS-A 관계 객체 지향의 장점은 코드의 재사용이다. 상속의 구현 (IS-A) 또는 객체의 구성 (HAS-A)를 통해 코드 재사용을 수행할 수 있는 두가지 방법이 있다. IS-A 관계 : 일반화 관계(Generalizaion) => 상속 관계 ~은 ~다. 상속은 is-a 관계에서 사용하는 것이 효율적이다. 상속을 코드 재사용의 개념으로 이해하면 안된다. 상속을 사용하면 클래스간 결합도가 높아져 상위 클래스를 수정해야할 때 하위 클래스에 미치는 영향이 크다. 즉, 의미상 상하 관계가 분명한 객체를 연결하기 위한 수단으로 사용해야한다. 클래스 선언에서 extends 또는 implements 키워드가 있으면 이 클래스는 IS-A 관계가 있다고 한다. 예) 집은 건물이다. 그러나 건물은 집이 아니다. HAS-A관계 : 연관관.. 2023. 7. 7.