[Java] (실습) Baby-gin
·
Java/코딩테스트 연습 & 실습
필요하다고 생각한 메서드 : run( ArrayList arr ) : arr 안에 i, i+1, i+2가 존재하면 true 반환 triplete( ArrayList arr ) : arr 안에 i가 3번 이상 존재하면 true 반환 caseCheck( ArrayList arr ) : RR RT TR TT 가 둘 다 true이면 true 반환 , 아니면 flase babyGin( String str ) : 입력받은 문자열을 한 글자씩 int로 변환해 어레이리스트에 저장 caseCheck메서드가 true면 baby-gin 출력 import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Q3 { s..
[Java] 자바 객체 정렬 Comparable과 Comparator의 이해
·
Java/자바 이론
자바를 사용하다보면 객체를 정렬하고 싶은 경우가 많이 생긴다. 하지만 객체 안에 어떤 데이터를 기준으로 정렬할지 컴퓨터는 알 수 없다. 이 정렬 기준을 정해주는 것이 Comparable과 Comparator다. 즉, 객체를 비교할 수 있도록 해준다. Comparable & Comparator ( API 문서 ) Comparable과 Comparator는 모두 인터페이스다. 즉, 사용하기 위해서는 인터페이스 내에 있는 추상 메서드를 반드시 오버라이딩 해야 한다. 메서드를 확인하기 위해서 공식 API 문서를 참고하자. Comparable (Java Platform SE 8 ) This interface imposes a total ordering on the objects of each class that ..
[Java] 자바 제네릭(Generic)이란? (Feat. 오토박싱)
·
Java/자바 이론
제네릭 프로그래밍은 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다. 다형성의 특징을 가지고 있고, 결국 편하려고 만들어졌다. 제네릭의 필요성 제네릭은 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정한다. (강한 타입체크) 1. 잘못된 타입이 들어오는 것을 컴파일 단계에서 방지가 가능하다. 2. 실행 시 타입 검사나 타입 변환과 같은 번거로운 작업을 생략할 수 있게 된다. //제네릭 X ArrayList list = new ArrayList(); list.add("연필"); String temp = (String) list.get(0); //타입변환이 필요함 //제네릭 O ArrayL..
[Java] 자바 컬렉션(Collection) 프레임워크란?
·
Java/자바 이론
컬렉션은 동일한 타입을 묶어 관리하는 자료구조를 말한다. 배열과 다른 점은 데이터의 저장 용량을 동적으로 관리 할 수 있다. 컬렉션 프레임워크란 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다. (인터페이스를 사용하여 구현되었다.) 주요 클래스 & 인터페이스 주요 인터페이스로 List, Set, Map가 존재한다. 이 인터페이스를 상속받아 구현해 놓은 구현 클래스도 이미 만들어져 있다. 자주 사용되는 자료구조인 Stack, Queue도 구현클래스가 존재한다. 를 보면 알 수 있듯이 모든 클래스가 제네릭이다. 인터페이스와 이를 구현한 클래스가 잘 만들어져 있기 때문에 필요에 따라 사용하고 싶은 자료 구조를 가져다 쓰기만 하면 되기 때문에 편리하다. 모든 내..
[Java] 자바 인터페이스(Interface)란?
·
Java/자바 이론
자바는 단일 상속이 원칙이다. 하지만 다중 상속을 지원하기 위해서 인터페이스가 존재한다. 인터페이스는 오로지 상수(final) 와 추상 메서드만 갖을 수 있다. (추상 클래스보다 더 추상화 정도가 높다.) 인터페이스 특징 1. 인터페이스의 구조 interface 인터페이스명{ public static final int a = 3; // 필드는 상수 public abstract void disp(); // 추상 메서드만 존재 } 상수와 추상 메서드 만으로 구성이 되어있다. 생략하면, 컴파일러가 자동으로 삽입해준다. 모든 필드 : public static final (*필드는 선언과 동시에 초기화 되어야 한다.) 모든 메서드 : public abstract (상속받는 자식은 오버라이딩이 강제된다.) 2. 다..
[Java] 추상 클래스와 추상 메서드 (abstract)
·
Java/자바 이론
추상 클래스는 추상 메서드를 하나라도 가지고 있는 클래스를 말한다. 추상 메서드는 '메서드의 본체가 완성되어 있지 않은 미완성 메서드'를 말한다. 상속을 목적으로 사용하며 자식 클래스에서 오버라이딩을 강제한다. 1. 추상 클래스의 특징 1. 객체를 직접 생성할 수 없다. 힙 메모리에 생성되는 객체는 내부 요소가 미완성된 상태로 들어갈 수 없기 때문이다. 따라서 추상 클래스를 상속하는 자식 클래스는 부모에게 상속받은 추상 메서드를 반드시 완성(오버라이딩) 해야 한다. (강제성을 부여한다.) 만약, 오버라이딩하지 않을 경우 상속 받은 추상 메서드를 포함하고 있기 때문에 자식 클래스도 추상클래스가 된다. 2. 추상 메서드는 선언부만 존재하며 구현부는 존재하지 않는다. 이 구현부를 자식 클래스에서 오버라이딩해서..
[Java] 메서드 오버로딩과 오버라이딩
·
Java/자바 이론
오버로딩은 한 클래스 내에서 같은 이름을 갖고 있지만 서로 다른 매개변수 형식을 가지고 있는 메서드를 여러개 정의하는 것을 의미한다. 오버라이딩은 부모 클래스에게 상속받은 메서드와 동일한 이름의 메서드를 재정의 하는 것을 의미한다. 1. 오버로딩 1. 조건 ⦁메서드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. 리턴 값만 다른 것은 오버로딩 할 수 없다. ⦁같은 목적으로 사용하는 메서드들만 오버로딩 해야한다. (주의사항) 2. 사용하는 이유 ⦁같은 기능을 하는 메서드를 여러 개 정의하고 외우지 않아도 되기 때문에 편리하다. ⦁컴파일러의 특성 2. 오버라이딩 1. 조건 ⦁부모 클래스의 메서드와 시그니처 및 리턴 타입이 동일해야 한다. ⦁부모 클래스의 메서드보다 접근 지정자의 범위가 같거나 넓어야한..
[Java] 자바 super 키워드 & super() 메서드
·
Java/자바 이론
this는 자신의 객체, this()는 자신의 생성자를 의미했다면, super 키워드는 부모의 객체, super()는 부모의 생성자를 의미한다. 부모 클래스와 관련이 있으므로 상속 관계에서만 사용이 가능하다. 1. super 키워드 super 키워드는 부모의 객체를 가리키는 참조(Reference) 변수다. 필드명의 중복 또는 메서드 오버라이딩으로 가려진 부모의 필드 또는 메서드를 호출하기 위해 사용한다. super.abc(); 명시적으로 부모객체의 abc메서드라는 것을 알 수 있다. 2. super() 메서드 부모의 생성자를 호출하는 메서드다. 생략하면 컴파일러가 자동으로 넣어주기 때문에 항상 자식 클래스의 첫 줄에 존재한다. 따라서 모든 자식클래스는 super()메서드를 통해 최상위 클래스의 생성자부..