목차 Comparable Comparable 인터페이스는 compareTo(T o) 메소드가 하나 선언되어 있다. 이 말은 Comparable 인터페이스를 사용하려면 compareTo(T o)을 재정의해야 한다는 것이다. 자기 자신과 매개변수 객체를 비교 한다. class dotone implements Comparable { int one; int two; dotone(int one, int two) { this.one = one; this.two = two; } // 정수 비교 public int compareTo(dotone o) { return this.two - o.two; } } class dottwo implements Comparable { String one; String two; dot..
JAVA
목차 이클립스 이클립스 단축키, 설정 모음 단축키 목적 명령어 자동완성 Ctrl + Space 오류 힌트 보기 Ctrl + 1 (Class, Package 등) 생성 Ctrl + N 한 줄 삭제 Ctrl + D 자동으로 import 하기 Ctrl + Shift + O 에러 찾기 Ctrl + 1 현재 창 닫기 Ctrl + W 화면 최대로 열기 Ctrl + M 메소드나 필드 이동하기 Ctrl + O 파라미터 타입 힌트 보기 Ctrl + Shift + Space 로컬 변수 추출 Alt + Shift + L 메소드 추출 Alt + Shift + M 이름 바꾸기 Alt + Shirft + R 자동 줄 간격 Ctrl + Shift + F 주석 블록을 블록 주석으로 처리 Ctrl + Shift + / 블록 주석 제거..
프로젝트 내의 txt 파일을 입력으로 받아 테스트케이스를 읽는 방법입니다. import java.io.InputStreamReader; public class Test{ public static void main(String[] args) throws IOException { System.setIn(new FileInputStream("input.txt")); } }
소수 판별 함수 // 소수 구하는 함수 public static boolean prime(int number) { if(number == 1) return false; if(number == 2) return true; for(int i = 2; i*i
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHxz5v%2FbtrDYeFeZGJ%2F07ThghcpvmUBvL3a1qLfP0%2Fimg.png)
추상클래스 추상 클래스는 클래스 내 추상메소드가 하나 이상 포함되거나 abstract으로 정의된 경우를 말합니다. 추상클래스를 비유하자면 미완성 설계도라고 표현합니다. 추상 클래스는 일반 클래스와 차이가 거의 없습니다. 단지 추상 메소드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스입니다. 상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없습니다. 클래스안의 메소드가 단 한개라도 추상메소드가 있다면 그 클래스 앞에는 반드시 abstract 클래스명으로 표기해야 하며 abstract와 final 키워드를 동시에 표기할 수 없습니다. public abstract class Test {} 추상 메소드는 선언부는 있는데 구현부가 없는 메소드를 의미합니다. (안이 아직 구현되어 있지 않..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddNIhQ%2FbtrDPVUuF3f%2FL8GJCM06Y4tDDvdmfm6S50%2Fimg.png)
Java와 C++은 문법적으로 상당히 유사합니다. java를 설계할 때 C++ 개발자들이 쉽게 배울 수 있도록 만들었기 때문입니다. 하지만 차이점도 여러 개가 있습니다. 설계 목표 Java는 보안, 이식성, 빠른 개발에 비중을 두었고 C++은 속도와 C언어의 하위 호환성을 중점으로 두었습니다. C++은 절차지향언어인 C의 효율성을 개선하기 위해 OOP(Object Oriented Programing)을 결합한 것이기 때문에 완벽한 OOP가 아닌 절차지향도 섞여 있습니다. 클래스 Java는 기본 단위가 Class로 거의 완전한 OOP라 볼 수 있습니다. C++은 C언어의 상위 호환이기 때문에 절차지향이 섞여있습니다. 컴파일과 런타임의 차이 Java는 가상 머신 바이트 코드로 컴파일하며 실행시키려면 가상머신..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoeRl4%2FbtrDFKSZ7WY%2Fm3kHS5au17CjPre4AANVHk%2Fimg.png)
타입 변수의 제한 제네릭은 T 와 같은 타입 변수를 사용해 타입을 제한합니다. 이 때 extends 키워드를 사용하면 타입 변수에 특정 타입만을 사용하도록 제한할 수 있습니다. class AnimalList {...} 클래스의 타입 변수에 제한을 걸어 놓으면 클래스 내부에서 사용된 모든 타입 변수에 제한이 걸립니다. 클래스가 아닌 인터페이스를 구현할 때에도 implements 가 아닌 extends를 사용해야 합니다. interface WarmBlood {...} class AnimalList {...} // implements 키워드를 사용하면 안된다. 클래스와 인터페이스를 동시에 상속받고 구현해야 한다면 &(엠퍼센트)를 사용하면 됩니다. class AnimalList {...} 예제 public cl..
제네릭 정의 자바에서 제네릭이란 데이터 타입을 일반화(generalize) 시킨다는 것을 의미한다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시 미리 지정하는 방법입니다. 제네릭의 장점 1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. (잘못된 타입이 들오는 것을 컴파일 단계에서 방지합니다.) 2. 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다. (반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다.) 3. 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아집니다. JDK 1.5부터 도입된 제네릭을 사용하면 컴파일 시에 미리 타입이 정해지므로, 타입 검사나 타입 변환과 같은 번거로운 작업을 생략할 수..
래퍼 클래스 ( Wrapper class ) 8개의 기본 타입의 데이터를 객체로 포장해 주는 클래스를 래퍼클래스라고 한다. 래퍼 클래스는 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어 준다. 래퍼 클래스는 모두 java.lang 패키지에 포함되어 제공된다. 프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우에 사용됩니다. 예를 들어, 메소드의 인수로 객체 타입만을 요구하면, 기본 타입의 데이터를 객체로 변환한 후 작업을 수행해야 하는데 이 때 래퍼 클래스가 사용됩니다. 자바의 기본타입에 대응하는 래퍼 클래스 기본 타입 래퍼 클래스 byte Byte short Short int Integer long Long float Float double Double c..
타입(Data type) 타입은 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지 명시적으로 알려준다. 자바에서의 타입은 크게 기본형 타입 (Primitive type) 과 참조형 타입 (Reference type) 이 있다. 기본형 타입은 원시 타입이라고도 한다. 기본형 타입은 정수, 실수, 문자, 논리 리터럴 등의 실제 데이터 값을 저장하는 타입이다. 참조 타입은 객체의 주소를 저장하는 타입으로 메모리 번지 값을 통해 객체를 참조하는 타입이다. 기본형 타입 (Primitive type) 8가지의 기본형 타입을 미리 정의하여 제공한다. 기본값이 있기 때문에 Null이 존재하지 않는다. 만약 기본형 타입에 Null 을 넣고 싶다면 래퍼 클래스를 활용한다. 실제 값을 저장하는 ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXT1qV%2FbtrJlV8Mmtf%2FR8XtkEDa5VcT796rp4I9dK%2Fimg.png)
목차 개념 Stack은 자료 구조 중 하나로 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조 입니다. Stack의 가장 큰 특징은 나중에 들어간 것이 먼저 나오는 후입선출(Last In Fist Out) 형태인 것 입니다. 이 방식을 가진 자료구조인 Stack을 이용해 다양한 문제를 해결할 수 있습니다. 특징 1. 먼저 들어간 자료가 나중에 나옵니다. LIFO (Last In Frist Out) 2. 시스템 해킹에서 버퍼오버플로우 취약점을 이용한 공격을 할 때 스택 메모리의 영역에서 합니다. 3. 인터럽트 처리, 수식의 계산, 서브루틴의 복귀 번지 저장 등에 사용됩니다. 4. 그래프의 깊이 우선 탐색(DFS)에 사용됩니다. 5. 재귀적(Recursion) 함수를 호출 할 때 사용합니다. 사용법 선언..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN36Yz%2FbtrJTO3SYiW%2FLLTQpWOC1EKEeYjUiGIy20%2Fimg.png)
목차 개념 Map이란? Key와 Value의 한쌍으로 이우러진 데이터의 집합입니다. Key에 대한 중복은 없으면 순서를 보장하지 않습니다. 뛰어난 검색 속도를 가집니다. 인덱스가 따로 존재하지 않기 때문에 iterator를 사용합니다. 종류와 특징 Map은 인터페이스이므로 구현체를 선언해 사용합니다. 구현체의 종류는 4가지가 있습니다. HashMap, HashTable, LinkedHashMap, TreeMap HashMap HashMap은 내부에 Key 와 Value 를 저장하는 자료 구조를 가지고 있습니다. HashMap은 해시 함수를 통해 키와 값이 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 들어 있는 위치 또한 관계 없습니다. 특징 Key에 대한 중복이 없으며 ..