[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] 자바 제네릭(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] 자바 쓰레드(Thread) & 동기화
·
Java/자바 이론
실행하기 위해 메모리에 로딩된 프로그램을 프로세스라 하고, 프로세스 내부에 쓰레드가 존재한다. 쓰레드는 'CPU를 사용하는 최소 단위'라고 할 수 있다. 하나의 프로세스에서 여러 개의 쓰레드가 동작하는 것을 '멀티 쓰레드'라고 한다. 쓰레드의 생성 및 실행방법 2가지 쓰레드에서 작업할 내용은 run() 메서드 안에 작성한다. 이후 Thread 클래스의 생성자를 이용해 객체를 생성한다. 마지막으로 Thread 객체의 start() 메서드를 호출해 실행한다. start() = 새로운 쓰레드 생성 / 추가하기 위한 모든 준비 + 새로운 쓰레드 위에 run() 실행 방법 1. Thread 클래스 상속받아 run() 메서드 오버라이딩 class MyThread extends Thread{ @Override pub..
[Java] 자바 인터페이스(Interface)란?
·
Java/자바 이론
자바는 단일 상속이 원칙이다. 하지만 다중 상속을 지원하기 위해서 인터페이스가 존재한다. 인터페이스는 오로지 상수(final) 와 추상 메서드만 갖을 수 있다. (추상 클래스보다 더 추상화 정도가 높다.) 인터페이스 특징 1. 인터페이스의 구조 interface 인터페이스명{ public static final int a = 3; // 필드는 상수 public abstract void disp(); // 추상 메서드만 존재 } 상수와 추상 메서드 만으로 구성이 되어있다. 생략하면, 컴파일러가 자동으로 삽입해준다. 모든 필드 : public static final (*필드는 선언과 동시에 초기화 되어야 한다.) 모든 메서드 : public abstract (상속받는 자식은 오버라이딩이 강제된다.) 2. 다..
[Java] 클래스 관계 HAS-A (포함) / IS-A (상속) 정리
·
Java/자바 이론
클래스는 객체지향 프로그래밍에서 중요한 개념이다. 클래스의 Has-a, Is-a 관계에 대해 알아보자. 1. HAS-A (포함) 관계 HAS-A는 포함관계를 의미한다. ( ~는 ~을 가지고 있다.) 다른 클래스의 기능(변수 혹은 메서드)을 받아들여 사용한다. (ex강사님이 펜을 사용해 칠판을 적는 것) - 받아들인 객체의 자원(메소드/변수)을 사용할 수 있다. - 어떤 클래스 A가 또 다른 클래스인 B가 가진 기능을 사용하고 싶을때 B 클래스를 포함하면 B 클래스의 기능을 사용할 수 있다. 2. IS-A (상속) 관계 IS-A는 말 그대로 'A는 B이다' 와 같다. 클래스의 상속은 IS-A관계에서 사용하는 것이 가장 효율적이다. ex) 경찰차는 차다. 트럭은 차다. 버스는 차다. 즉, 추상화한 클래스를 ..
[Java] 클래스 내부 구성 요소 3가지 (필드, 생성자, 메서드 + This)
·
Java/자바 이론
클래스의 필드, 생성자, 메서드에 대해 알아보자. 또한 클래스 내부에서 자신의 객체를 가리키는 this키워드와 자신의 다른 생성자를 호출하는 this() 메서드도 학습한다. 필드 ( Field ) 필드는 '클래스에 포함된 변수'로, 객체의 속성값을 지정할 수 있다. 지역 변수는 '메서드에 포함된 변수'다. 즉, 필드와 지역 변수는 어떤 중괄호 안에 선언됐는지에 따라 구분할 수 있다. (선언 위치가 중요하다.) 가장 큰 차이점은 생성되는 메모리의 위치다. 필드 = Heap 메모리의 객체 내부 지역 변수 = 스택 메모리 스택 메모리에 있는 변수는 JVM이 자동으로 삭제하지만, 힙 메모리의 객체 안에 저장되는 필드는 객체가 사라지지 않는 한 절대로 삭제되지 않는다. 1. 필드 - 외부에서 객체를 사용할 때 지..