객체지향 프로그래밍의 특징 / 클래스
단 한 개의 객체만 생성해서 사용하고 싶다면 싱글톤(Singleton) 패턴을 적용할 수 있음
변수, 상수, 리터럴 변수(variable) - 하나의 값을 저장하기 위한 공간 하나만 저장할 수 있어서 값이 바뀌면 바뀐 값으로 변경 상수(constant) - 한 번만 값을 저장 가능한 변수 한번 값을 저장하면 변경 불가능 final 키워드 사용 리
외우기: 연산 전에 피연산자의 타입을 일치시키는 것두가지 규칙1.두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치 시킨다)long + int → long + long → longfloat + int → float + float → floatdouble +
배열같은 타입의 여러 변수를 하나의 묶음으로 다루는 것. 배열 이름이 없다. 그러나 자동으로 idx 번호가 붙는다.저장공간이 붙어있다(연속적이다)배열의 길이배열이름.length() - 배열의 길이(int형 상수)배열은 한번 생성하면 그 <span style='b
코드 재사용성이 높다유지보수가 용이하다중복 코드 제거OOP(Object-Oriented-Programming) - 캡상추다!캡슐화상속추상화다형성정의: 클래스란 객체를 정의해 놓은 것용도: 클래스는 객체를 생성하는데 사용 객체 = 속성(변수) + 기능(메서드)정의: 실
오버로딩
생성자 기본생성자
상속
Java는 단일 상속만을 허용한다.즉, 하나의 부모만 상속할 수 있다.비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.Object 클래스는 모든 클래스의 조상이다부모가 없는 클래스는 자동적으로 Object 클래스를 상속받게 된다.즉 상속받지 않은 클래스
참조변수 super와 생성자 super()
state/final/abstract/access modifier
외부로부터 데이터를 보호하기 위해서 = 캡슐화
다형성: 조상 타입 참조 변수로 자손 타입 객체를 다루는 것
사용할 수 있는 멤버의 갯수를 조절하는 것
다형적 매개변수하나의 배열로 여러 종류 객체를 다룰 수 있음.
추상클래스는 미완성 설계도로, 미완성 메서드를 갖고 있는 클래스이다.
결론적으로는, 인터페이스는 추상메서드의 집합이다.
내부 클래스(inner class) 클래스 안의 클래스 원래 클래스는 이런모양, 그래서 class B에서 A 멤버에 접근하려면 클래스 B에 A의 객체를 생성해줘야 한다. 그러나 내부 클래스로 하면, > 내부 클래스의 장점 내부 클래스에서 외부 클래스의 멤버들을 쉽
[ch8-1] 프로그램 오류 컴파일 에러(complie-time error): 컴파일 할 때 발생하는 에러 정확한건 컴파일 타임 에러. javac.exe 파일이 자바 컴파일러인데 원래는 명령어를 써서 컴파일을 해야하는데 이클립스가 알아서 해줌. 프로그램
printStackTrace(): 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다. **getMessage()
연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음,키워드 throw를 이용해서 예외를 발생시킨다. throw가 던지면 catch가 잡는다!checked 예외: 컴파일러가 예외 처리 여부를 체크(예외 처리 필수) → Exception과 자손들unche
모든 클래스의 최고 조상이다.오직 11개의 메서드만을 갖고 있다.notify(), wait() 등은 쓰레드와 관련된 메서드다.제어자가 protected로 되어있는건 오버라이딩을 하고 public으로 변경한 후 사용 가능하다.clone(): 객체 자신의 복사본을 반환eq
: 문자열을 다루기 위한 클래스String 클래스 = 데이터(char\[]) + 메서드(문자열 관련)char\[]: 문자 배열메서드: 문자 배열을 다루는 메서드들내용을 변경할 수 없는 불면(immutable) 클래스 a+b가 합쳐진 "ab"는, 새로운 주소값 0x300
join()은 여러 문자열 사이에 구분자를 넣어서 결합한다.⤷ 여러 문자열: 배열이나 collection이 담겨있는 문자열String 문자열 여러개를 계속 더해주면 String 객체가 계속 생성되는데 join()을 쓰면 내부적으로 StringBuffer를 사용하기 때문
StringBuffer 클래스 문자열을 저장하기 위한 클래스 String 처럼 문자형 배열(char[])을 내부적으로 가지고 있다. 그러나, String과 달리 내용을 변경할 수 있다(mutable) append() 를 통해 내용을 추가할 수 있다.
StringBuilder와 StringBuffer는 거의 똑같다.다른점은 StringBuilder는 동기화 되어있지 않고StringBuffer는 동기화 되어있다. 멀티 쓰레드에 안전(thread-safe)동기화란 멀티쓰레드에 안전하게 하는 것이다.멀티 쓰레드 프로그램이
기본형값을 감싸는 클래스를 말한다8개의 기본형을 개체로 다뤄야 할 때 사용하는 클래스IntegercompareTo() 는 오른쪽 값과 왼쪽 값이 같으면 0오른쪽 값이 왼쪽보다 작으면 양수오른쪽 값이 왼쪽보다 크면 크면 음수모든 숫자 래퍼 클래스의 조상
문자열을 숫자로 변환하는 다양한 방법n진법의 문자열을 숫자로 변환하는 방법Integer.parseInt("숫자", 원하는 진수 숫자)JDK1.4 이전에는 기본형과 참조형간의 연산이 불가능했다.기본형의 값을 객체로 자동변환하는 것을 오토박싱, 그 반대는 언박싱]예) 기본
날짜와 시간을 다룰 목적으로 만들어진 클래스(JDK 1.0이상)Date 의 메서드는 거의 deprecated(앞으로 사용하지마..) 되었지만, 여전히 쓰이고 있다.Date 클래스를 개선한 새로운 클래스(JDK1.1이상)그러나 여전히 단점히 존재한다Date와 Calend
여러 객체(데이터)를모아 놓은것을 의미표준화, 정형화된 체계적인 프로그래밍 방식프로그래밍 방식: 프로그래밍을 어떻게 어떻게 해라 라고 정해놓은 것자유도는 적지만 정해진대로만 해서 생산성이 올라간다는 장점이 있다또한 유지 보수가 쉽다참고로 데시몰포맷이나 심플데이터포맷은
ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일하다.Vector는 자체적으로 동기화가 되어있고, ArrayList는 동기화가 안되어있다는 차이점이있다.List 인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다.데이터(객체)의
LIFO 구조. 마지막에 저장된 것을 제일 먼저 꺼내게 된다.(Last In First Out)밑이 막힌 상자라고 생각하자push / pop ↳ 저장할 땐 0 → 1 → 2 순으로 저장되고추출할 땐 2 → 1 → 0 순으로 추출한다.= 저장과 추출의 순서가 반대!배열과
컬렉션에 저장된 데이터를 접근하는(읽어오는데) 사용되는 인터페이스 위에 두개만 신경쓰자!‣ <span style='background-color: ‣ <span style='background-color: Enumeration은 Iterator의 구버젼이라고
Arrays 배열을 다루기 편리한 메서드(static) 제공(util method) 배열의 출력 toString(배열) 배열을 넣어주면 “문자열”로 반환해준다. 배열의 복사 copyOf(), copyOfRange()
Set 인터페이스를 구현한 대표적인 컬렉션 클래스순서 X, 중복X 지만!순서를 유지하려면, LinkedHashSet 클래스를 사용하면 된다.범위 검색과 정렬에 유리한 컬렉션 클래스예) from 10 to 20HashSet보다 데이터 추가, 삭제에 시간이 더 걸린다.생성
TreeSet 이진 탐색 트리(binary search tree)로 구현. 범위 탐색과 정렬에 유리하다(from~to) 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖음 하나의 요소에 연결된 요소가 최대 2개(0개~2개) 각 요소(node)가 나무(tr
저장 순서 X, 키 중복 X, 값 중복 OMap 인터페이스를 구현.데이터를 키와 값의 쌍(key, value)으로 저장HashMap(동기화X)은 Hashtable(동기화O)의 신버전이다.Map인터페이스를 구현한 대표적인 컬렉션 클래스순서를 유지하려면 LinkedHash
Sevlet의 여러 종류의 필터(filter)와 인터셉터(interceptor)를 이용해서 처리된다.필터: 서블릿에서 말하는 단순 필터인터셉터: 스프링에서 필터와 유사한 역할을 함필터와 인터셉터는 특정 서블릿이나 컨트롤러의 접근에 관여한다는 점에서 유사하지만,결정적인
과거의 서버는 브라우저라는 하나의 대상만을 상대로 데이터를 제공했으므로 브라우저가 소화 가능한 모든 데이터를 HTML 형태로 전달했고, 브라우저는 이걸 화면에 보여주는 역할을 해왔다.그러나 모바일 시대가 되면서 앱(App)이라는 고유한 애플리케이션을 이용해서 데이터를
특정 스레드의 작업을 중단하는 가장 쉬운 방법은 변수를 사용하는 것인데, volatile boolean runFlag = true 값으로 work 스레드에 대한 작업 중단을 지시한다고 하자.하나의 작업에 3초가 걸린다고 가정하고 sleep(3000)을 지정하고 실행시키