Java

남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 에러의 종류 에러의 종류에는 논리적 에러,컴파일 에러, 런타입 에러가 있다. a. 논리적 에러 개발자 실수(논리적 오류)로 인해 실행은 되지만, 의도와 다르게 동작하는 것 b. 컴파일 에러 컴파일 시점에 발생하는 에러 ex) 문법을 잘못 작성해서 발생하는 에러 ex) 타입체크 에러 c. 런타임 에러 실행 시 발생하는 에러 런타임 시 발생할 수 있는 오류에는 2가지가 있다. 에러(error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류로 시스템이 종료되어야 할 수준 ex) StackOverflowError: 재귀가 지속되어 호출 깊이가 깊어져 발생하는 오류 ex) OutOfMemoryError: JVM 메모리 부족으로 ..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 내부 클래스(inner class)? 두 클래스간의 긴밀한 관계를 가지며, 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다. 내부 클래스의 종류에는 인스턴스 클래스, static 클래스, Local 클래스, 익명 클래스가 있다. 내부 클래스도 클래스이므로 abstract나 final과 같은 제어자를 사용할 수 있다. 내부 클래스도 멤버변수처럼 접근제어자도 사용할 수 있다. a. 인스턴스(instance) 클래스? 외부 클래스의 멤버변수 선언 위치에 선언 인스턴스 멤버처럼 사용 주로 외부 클래스의 인스턴스 멤버들과 관련된 작업 접근제어자도 인스턴스 멤버처럼 동일하게 적용된다. class Cart { // 장바구니 클래스 Arra..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 추상클래스와 인터페이스를 알아보기 전에 객체지향의 핵심 원리인 다형성에 대해서 정리해보자. 1. 다형성(polymorphism)이란? 부모 타입의 참조변수로 자식타입의 객체를 다룰 수 있는 것 자식타입의 참조변수로는 부모타입의 인스턴스를 참조할 수 없다. 다형성을 사용하면 유지보수에 큰 이점을 가져올 수 있으면 객체지향의 핵심 원리이다. public class Main { public static void main(String[] args) { Parent parent = new Child(); // => 다형성 Child child = new Parent(); // 에러. 자식은 부모의 모든 멤버를 가지지만, 부모는 자식의 멤버..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 제어자 클래스, 변수, 메서드의 선언부에 사용되며, 부가적인 의미를 부여한다. 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있다.(접근제어자는 하나만 사용 가능) 접근제어자와 그 외 제어자로 나눌 수 있다. 2. 접근제어자 public: 접근제한이 없음. protected: 같은 패키지 내에서, 다른 패키지의 자식클래스에서 접근 가능 default: 같은 패키지 내에서 접근 가능 private: 같은 클래스 내에서 접근 가능 접근 제어자를 사용하는 이유는 외부로부터 데이터를 보호하며, 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해 사용한다. ⇒ 캡슐화 3. 그 외 제어자(static, final, ab..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. package란? 서로 관련된 클래스들끼리 그룹 단위를 package로 묶어서 효율적으로 관리 클래스의 이름이 동일해도 서로 다른 package이면 다른 클래스로 인식 package는 물리적으로 하나의 디렉토리이며, package에 다른 package를 포함시킬 수 있다. 2. package 네이밍 규칙 pacakge 명은 소문자로 사용하는 것이 원칙 java로 시작하는 패키지 금지(자바 표준 api에서만사용) 자바 예약어 금지 패키지는 .(dot)로 구분 한다. package 상위패키지명.하위패키지명 package org.example.pck; 3. import문 다른 패키지의 클래스를 사용할 경우 패키지명과 클래스를 모두..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 상속이란? 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 두 클래스를 부모와 자식의 관계를 맺어주는 것 자식은 부모의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외) 상속을 사용한 2가지 경우를 살펴보자. a. 상속 사용1 class Child extends Parent { void play() { System.out.println("play~~~~"); } } class Parent { int age; } 상속을 구현하는 방법은 extends키워드만 함께 써주기만 하면 된다. Child는 Parent를 상속받기 때문에 Parent의 모든 멤버(age)를 상속 받는다. play() 메서드는 오직 Child의 멤버..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. this와 super를 알아보기 전에 생성자에 대해서 알아보자. 1. 생성자(Constructor)란? 인스턴스가 생성될 때 호출되는 메서드(인스턴스 초기화 메서드) 인스턴스 변수 초기화 또는 인스턴스생성시 수행할 작업에 사용 모든 클래스는 하나 이상의 생성자가 있어야 한다. 생성자 이름은 클래스 이름과 같다. 생성자는 리턴값이 없다.(void는 쓰지 않음) 접근제한자 클래스이름(매개변수) { // 수행될 코드(인스턴스 변수 초기화 등) } 2. 생성자의 종류 기본 생성자 매개변수가 없는 생성자 생성자가하나도 없으면 컴파일러가 기본 생성자를 추가한다 class Data { int value; Data() { } // 기본 생성자(..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 오버로딩(Overloading) 기존에 없는 새로운 메서드를 정의하는 것 메서드 명은 같지만 매개변수 타입, 개수, 순서가 다른 것 같은 클래스 내에서 적용된다. int add(int a, int b) { return a + b; } int add(int a, int b, int c) { return a + b + c; } int add(int x, int y) { return x + y; } // 매개변수의 식별자만 다른 경우 => 오버로딩 x short add(int a, int b) {return a + b; } // 반환 타입이 다른 경우 => 오버로딩 a. 가변인자 오버로딩 기존에는 메서드의 매개변수가 고정적이었으나..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 매개변수를 전달하는 방법 Java에서 메서드 매개변수를 전달할 때 두가지 방법이 있다. 기본타입을 매개변수로 넘기는 경우 이를 Call by Value라고 하고, 참조타입을 넘기는 경우 Call by Reference라고 한다. Call by Value Call by Reference 2. Call by Value Call by Value는 값에 의한 전달을 뜻한다. Call by Value는 단순히 변수의 값만 읽어 올 수 가 있어 변수의 값을 변경 할 수 없다.(Read Only) public class Class1 { public static void main(String[] args) { int a = 9; set(a..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. JVM(Java Virtual Machine) 구조와 동작방식 Java 소스파일(.java) 개발자가 작성한 Java 소스코드 파일이다. Java 바이트코드(.class) Java 컴파일러(javac)가 Java 소스코드 파일을 Java 바이트코드로 컴파일한다. Class Loader(클래스 로더) Java는 클래스를 동적으로 로딩합니다. 클래스로더가 바이트코드(.class)들을 읽어서 필요 시점에 동적으로 Runtime Data Area 영역에 동적 적재한다. Execution Engine(실행엔진) 클래스 로더를 통해 Runtime Data Area 에 배치된 바이트코드를 읽어서 명령어 단위로 해석하고 바이트 코드를 실제..
kmindev
'Java' 카테고리의 글 목록 (3 Page)