실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용주요 특징코드의 재사용성이 높다.코드의 관리가 용이하다.신뢰성이 높은 프로그래밍을 가능하게 한다.java의 정석 chapter6
클래스정의: 객체를 정의해놓은 것, 객체의 설계도 또는 툴용도: 객체를 생성하는데 사용객체정의: 클래스에 정의된 내용대로 메모리에 생성된 것클래스로부터 객체를 만드는 과정 = 클래스의 인스턴스화(instantiate)어떤 클래스로부터 만들어진 객체 = 클래스의 인스턴스
클래스로부터 인스턴스를 생성하는 방법Ex)인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.같은 클래스로부터 생성되었을지라도 각 인스턴스의 속성(멤버변수)은 서로 다른 값을 유지 할 수 있음객체 배열 안에 객체가 저장되는
메서드: 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것메서드를 사용하는 이유높은 재사용성(reusability)중복된 코드의 제거프로그램의 구조화메서드는 크게 '선언부(header, 머리)'와 '구현부(body, 몸통)'로 이루어져 있다.메서드의 이름, 매개변수
변수의 종류 : 클래스 변수, 인스턴스 변수, 지역변수변수의 종류를 결정짓느 요소 = 변수의 선언된 위치인스턴스변수(instance variable)인스턴스마다 고유한 상태를 유지해야하는 속성의 경우 인스턴스 변수로 선언클래스변수(class variable)모든 인스
7. JVM의 메모리 구조 응용프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리 메서드 영역(method area) 프로그램 실행 중 어떤 클래스가 사용되면, JVM
클래스메서드: 메서드 앞에 static이 붙어있는 메서드 \- 객체를 생성하지 않고도 클래스이름으로 호출 가능인스턴스메서드: 클래스메서드가 아닌 메서드 \- 메서드의 작업을 수행하는데 인스턴스 변수를 필요로 하는 메서드 \- 객체를 생성해야만 호출 가능어느 경우에
한 클래스 내에 같은 이름의 메서드를 여러 개 정의 하는 것메서드 이름이 같아야 한다.매개변수의 개수 또는 타입이 달라야 한다.\*return값은 오버로딩을 구현하는데 아무런 영향을 주지 못함메서드의 이름만 보고도 '같은 기능을 한다'는 것을 예측할 수 있음메서드의 이
생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다.인스턴스 변수의 초기화 작업이나, 인스턴스 생성 시 실행되어야 할 작업을 위해 사용 됨생성자도 오버로딩 가능하나의 클래스에 여러개의 생성자 존재 가능생성자의 조건생성자의 이름은 클래스의 이름과 같아야
변수를 선언하고 처음으로 값을 저장하는 것가능하면 변수를 선언힘과 동시에 초기화 하는 것이 바람직함지역변수는 사용하기 전에 반드시 초기화해야 함 (멤버변수는 선택적)각 타입의 기본 값멤버변수의 초기화 방법 1\. 명시적 초기화 2\. 생성자 3\. 초기화 블
조건식을 계산한다조건식의 결과와 일치하는 case문으로 이동한다이후의 문장들을 수행한다break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다조건식의 결과와 일치하는 case문이 하나도 없는 경우 -> default문으로 이동switch문에서 bre
초기화에서 둘 이상의 변수가 필요할 때는 콤마를 구분자로 초기화하면 됨단, 두 변수의 타입은 같아야 함증감식도 쉼표를 이용해서 두 문장 이상을 하나로 연결해서 쓸 수 있음 Ex)활용짝수(2 i), 홀수(2 i +1), 제곱(i \* i), 역순(11-i), 순환(i
타입 변수이름;변수이름 = new 타입길이배열의 선언과 생성을 따로 하는 경우에는 new 타입\[]생략 불가(매개변수로 받는 경우도 생략 불가)Ex)Arrays.toString(배열이름) 배열의 모든 요소를 문자열로 반환System.arraycopy(복사할 배열명,
참조형 배열(객체 배열)에는 실제 객체가 아니라 객체의 주소가 저장된다Ex) string배열char배열과 String클래스String클래스는 char배열에 기능(메서드)를 추가한 것String객체(문자열)는 읽을 수만 있고 내용을 변경할 수 없음변경되는 것 같지만 새로
Ex)2차원 이상의 다차원 배열을 생성할 때 전체 배열 차수 중 마지막 차수의 길이를 지정하지 않고, 추후에 각기 다른 길이의 배열을 생성함으로써 고정된 형태가 아닌 유동적인 가변 배열을 구성할 수 있음Ex)java의 정석 chapter5
정의: 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것장점: 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 기여구현 방법: 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 'extends'와 함께 써준다.Ex)조상클래스와 자손
조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것조상클래스의 메서드와 '이름', '매개변수', '리턴타입'이 같아야 한다.(jdk1.5부터 리턴타입을 자손 클래스의 타입으로 변경하는 것은 가능하도록 조건이 완화됨)제한적 조건접근제어자는 조상 클래스의 메서드보다 좁
클래스의 묶음(클래스 또는 인터페이스를 포함시킬 수 있음)모든 클래스는 반드시 하나의 패키지에 속해야 함(작성하지 않을경우 자동으로 '이름없는 패키지'가 제공됨)패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있음패키지는 물리적으로 클래스 파일(.class)을
클래스, 변수, 메서드의 선언부에 함께 사용됨부가적인 의미를 부여함하나의 대상에 대해서 여러 제어자를 조합하여 사용가능(접근제어자는 한 개만 사용 가능)종류접근 제어자: public, protected, default, private그 외: static, final,
멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할접근 제어자가 지정되어 있지 않다면 default임접근 범위가 넓은 순public > protected > default > private하나의 소스파일(\*.java)에는
여러 가지 형태를 가질 수 있는 능력한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 함Ex)조상 타입으로 참조하면 자손타입 인스턴스의 모든 멤버를 사용할 수 없음(자손 타입에서 선언한 멤
멤버변수가 조상 클래스와 자손 클래스에 중복으로 정의된 경우, 조상타입의 참조변수를 사용했을 때는 조상 클래스에 선언된 멤버변수가 사용되고, 자손타입의 참조변수를 사용했을 때는 자손 클래스에 선언된 멤버변수가 사용된다.매개변수가 조상 클래스 타입으로 선언된 경우, 메서
미완성 메서드(추상 메서드)를 포함하고 있는 클래스추상클래스로 인스턴스는 생성할 수 없고 상속을 통해서 자손클래스에 의해서만 완성될 수 있음추상클래스로부터 상속받는 자손클래스는 오버라이딩을 통해 조상인 추상클래스의 추상메서드를 모두 구현해주어야 함Ex) abstrac
일종의 추상클래스추상메서드와 상수만을 멤버로 가질 수 있음(몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없음)모든 멤버변수는 public static final이어야 하며, 이를 생략할 수 있다.모든 메서드는 public abstract이어야 하며, 이
인터페이스를 구현한 클래스의 인스턴스를 인터페이스 타입의 참조변수로 참조할 수 있음Ex)인터페이스를 매개변수의 타입으로 사용하면 매개변수로 해당 인터페이스를 구현한 클래스 인스턴스를 넘겨줘야 함리턴타입을 인터페이스 타입으로 선언하고 구현한 클래스를 반환해도 됨Ex)개발
클래스 내에 선언된 클래스선언하는 이유두 클래스가 서로 긴밀한 관계에 있기 때문장점내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있음코드의 복잡성을 줄일 수 있음(캡슐화)Ex)인스턴스 클래스스태틱 클래스지역클래스익명 클래스Ex)내부 클래스도 abstract나
에러의 종류컴파일 에러: 컴파일 할 때 발생하는 에러\*컴파일러소스코드에 대해 오타나 잘못된 구문, 자료형 체크 등의 기본적인 검사를 수행하여 오류가 있는지 알려줌실행도중에 발생할 수 있는 잠재적인 오류까지 검사할 수 없음런타임 에러: 프로그램의 실행도중에 발생하는 에
컬렉션 프레임웍: 데이터 군을 저장하는 클래스들을 표준화한 설계List순서가 있는 데이터의 집합, 데이터의 중복을 허용구현클래스: ArrayList, LinkedList. Stack, Vector 등Set순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않
스택마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO구조ArrayList와 같은 배열기반의 컬렉션 클래스가 적합자바에서 Stack클래스로 구현하여 제공큐처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO구조데이터의 추가/삭제가 쉬운 LinkedList로 구현
Set인터페이스를 구현한 가장 대표적인 컬렉션저장순서를 유지하지 않으므로 저장순서를 유지하고자 한다면 LinkedHashSet을 사용해야 함HashSet은 내부적으로 HashMap을 이용해서 만들어졌으며, HashSet이란 이름은 해싱을 이용해서 구현했기 때문에 붙여
printStackTrace()예외발생 당시의 호출스택에 있었던 메서드의 정보와 예외 메시지를 화면에 출력함getMessage()발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있음Ex)멀티 catch블럭catch블럭을 '|'기호를 이용해서 하나의 catch블럭
예외의 발생여부에 상관없이 실행되어야 할 코드를 포함시킬 목적으로 사용try블럭에서 return문이 실행되는 경우에도 finally블럭의 문장들이 먼저 실행된 후, 현재 실행 중인 메서드 종료Ex)사용했던 자원을 반환해야 하는 경우 사용try-with-resources
다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어듬. 즉, 다룰 객체의 타입을 미리 명시해줌으로써 번거로운 형변환을 줄여줌클래스 옆
Box< T >의 객체를 생성할 때 참조변수와 생성자에 대입된 타입(매개변수화된 타입)이 일치해야 함 (상속관계에 있어도 불가능)단, 두 지네릭 클래스의 타입이 상속관계에 있고, 대입된 타입이 같은 것은 괜찮음Ex)지네릭 타입에 'extends'를 사용하면, 특정
서로 관련된 상수를 편리하게 선언하기 위한 것여러 상수를 정의할 때 사용하면 유용자바의 열거형은 타입에 안전한 열거형임상수는 값이 바뀌면 해당 상수를 참조하는 모든 소스를 다시 컴파일해야 하지만 열거형 상술르 사용하면 다시 컴파일하지 않아도 됨정의enum 열거형이름 {
주석, 주해, 메모프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것프로그래밍 언에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보를 제공할 수 있음annotation의 종류표준 annotation메타 annotation메서드