length() 문자열 길이 리턴 equals() 문자열 비교 (대소문자 구분) equalsIgnoreCase() 대소문자 구분하지 않고 문자열 비교 charAt() 특정 인덱스에 위치한 문자 1개 리턴 substring() 특정 범위 문자열(부분 문자열) 추출 concat() 문자열 결합 indexOf() 문자열의 첫 인덱스부터 찾을 문자 인덱스 리턴 lastIndexOf() 문자열의 끝 인덱스부터 찾을 문자 인덱스 리턴 (인덱스 번호는 그대로! 탐색을 거꾸로 하는 것뿐) replace() 특정 문자 또는 문자열에 대한 치환 기능(char, String 타입 모두 가능) trim() 문자열 앞 뒤 공백제거(문자열 사이의 공백 제거하지 않음) toUppercase(), toLowerCase() 알파벳 대..
반복자 Iterator Set과 List 객체를 차례대로 접근하기 위한 객체 Set, List 객체의 iterator() 메서드를 호출해 Iterator 타입 객체를 리턴 List li = new ArrayList(Arrays.asList(1,2,3,4,5)); Set st = new HashSet(li2); Iterator iterator = li.iterator(); Iterator iterator2 = st.iterator(); hasNext() 메서드로 다음 요소의 존재 여부를 판별하고 (다음 요소가 존재하면 true가 리턴) 요소가 존재하면 next() 메서드로 꺼내올 수 있다. while(iterator.hasNext()) { Object o = iterator.next(); System.ou..
스택 Stack - 데이터를 아래에서 위로 차례대로 쌓는 구조로 삽입과 삭제가 항상 한 쪽(Top)에서 이루어진다. - LIFO : 마지막에 추가된 데이터가 먼저 삭제됨 = FILO - Redo/Undo 기능에 활용된다. Backwrad, Forward로 구분하여 사용된다. Stack stack = new Stack(); stack.push("1"); stack.push("2"); stack.push("3"); System.out.println(stack); // toString() 생략 // 출력: [1, 2, 3] System.out.println(stack.push("4")); // 데이터 추가 // 출력: 4 Object peek() 스택 맨 위의 요소(마지막에 추가된 데이터)를 제거하지 않고 리..
컬렉션 프레임워크 - 자바에서 자료구조를 구현하여 제공하는 클래스들의 모음 - 컬렉션 인터페이스에는 Set, List, Map이 있다. - Set과 List는 Collection 인터페이스를 상속받고 있어 대부분의 메서드가 동일하다. Set - 인덱스 사용할 수 없어 저장 순서가 유지되지 않는다. - 중복 데이터는 저장되지 않는다. - Set 계열의 구현체 클래스 : HashSet, TreeSet 등 Set은 (인터페이스라서) new로 생성되진 않지만 인터페이스로 사용이 가능하다. HashSet > Set으로 업캐스팅하여 사용 (대부분의 기능을 사용하는 데 문제가 없다) Set set = new HashSet(); isEmpty() - boolean : 컬렉션 객체가 비어있는지 판별하는 메소드 size(..
Wrapper 클래스 - 자바 기본 데이터타입과 일대일 대응하는 8개의 클래스 모음(java.lang 패키지) - 기본 데이터타입 변수로 할 수 있는 일이 한정적이므로 클래스로 정의하여 다양한 작업을 수행하도록 지원한다. 기본 데이터타입은 Stack 공간에 데이터를 저장 및 관리하지만 참조 데이터타입(객체)은 Heap 공간에 실제 데이터가 저장되며, 참조변수가 해당 공간의 주소값을 저장 및 관리한다. 기존엔 기본 데이터타입 변수와 참조 데이터타입 변수가 호환이 불가능 했으나 현재는 오토 박싱, 언박싱 기능의 제공으로 자동변환이 가능하다. 오토박싱 기본 데이터타입에서 Wrapper 클래스 타입 객체로 자동변환 (기본 데이터 => Wrapper) Heap 공간의 객체 박스에 기본 데이터타입 변수를 전달하여 ..
enum 상수를 간편한 선언으로 한정된 데이터를 관리 가능하나 컴파일 시점에서 오류가 나면 발견하기 어려워 범위 내의 값인지 판별하는 작업이 필요한데 이때 열거형(enum type)이 필요하다 [접근제한자] enum 열거타입명 { // 중괄호 내에는 값을 갖는 상수 이름만 나열(별도의 값을 지정하지 않음) 상수, 차례대로, 나열;// 대문자로 쓰임, 각각 하나의 객체 } - 클래스, 인터페이스 정의 문법과 유사하나 중괄호 내에는 상수로 사용될 이름만 지정 - 지정된 상수 외 다른 값은 전달이 불가능하다. public class Ex2 { public static void main(String[] args) { Ex2 ex2 = new Ex2(); //compareEnum();// static 이라서 안됨..
interface - 순수 추상 메서드, 상수를 멤버로 가질 수 있다. - 상수 선언만 가능하며 인스턴스나 정적 멤버 선언은 할 수 없다. - 다중 상속(extends), 다중구현(implements) 가능 - 생성자가 없으며 객체 생성이 불가하다. (추상클래스는 생성자 가능하나 객체 생성 불가) interface Interface { // 상수만 가능 // 추상메서드만 가능 } - 멤버변수, 매개변수, 로컬변수 타입으로 선언 가능 class TV implements RemoteCon { @Override public void turnOn() { System.out.println("TV On"); } @Override public void turnOff() { System.out.println("TV O..
추상 클래스 객체를 생성할 수 없는 클래스, new 연산자를 이용한 생성자 호출이 불가능하다. - 추상메서드를 가질 수 있으나 상속받는 서브클래스에서 반드시 오버라이딩 해야한다. (구현의 강제성을 부여해서 코드의 통일성이 향상) - 추상메서드, 일반메서드, 생성자, 멤버변수를 가질 수 있음 - 상속으로 서브클래스에서 사용 가능, 업캐스팅으로 다형성 활용 가능 abstract method 추상 메서드. - 메서드의 구현부가 없는 추상메서드는 실행할 코드가 없기 때문에 외부에서 호출 불가 - 추상 메서드를 갖는 클래스는 반드시 추상 클래스로 선언해야한다! (반대의 경우는 가능하다) [접근제한자] abstract [리턴타입] 메서드명 ([매개변수...]); public class Ex1 { public sta..