이것이 자바다 8

Chapter 09. 중첩 선언과 익명 객체

🏷 중첩 클래스 객체 지향 프로그램에서는 클래스 간에 서로 긴밀한 관계를 맺고 상호작용한다. 클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이 좋으나, 특정 클래스만 관계를 맺는 경우에는 중첩 클래스로 선언하는 것이 유지보수에도 도움이 되는 경우가 많다. 중첩 클래스란 ? 클래스 내부에 선언한 클래스를 의미한다. 중첩 클래스를 사용하면 클래스의 멤버를 쉽게 사용할 수 있고, 외부에는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점이 있다. 선언 위치에 따라 두가지로 분류된다. 멤버 클래스 - 클래스의 멤버로서 선언되는 중첩 클래스 로컬 클래스 - 메소드 내부에서 선언되는 중첩 클래스 중첩 클래스도 하나의 클래스이기 때문에 컴파일하면 바이트코드 파일(.class)가 ..

Chapter 08. 인터페이스

🏷 인터페이스 역할 인터페이스는 사전적인 의미로 두 장치를 연결하는 접속기를 말한다. 여기서 두 장치를 서로 다른 객체로 본다면, 인터페이스는 이 두 객체를 연결하는 역할을 한다. 아래 그림과 같이 객체 A는 인터페이스를 통해 객체 B를 사용할 수 있다. 객체 A가 인터페이스의 메소드를 호출하면, 인터페이스는 객체 B의 메소드를 호출하고, 그 결과를 받아 객체 A로 전달해준다. 객체 A가 객체 B의 메소드를 직접 호출하면 간단할텐데 왜 중간에 인터페이스를 거치도록 하는걸까? 만약, 객체 B가 객체 C로 변경이 된다고 가정해보자 객체 A는 인터페이스 메소드만 사용하므로 객체 B가 객체 C로 변경되는 것에는 관심이 없다. 만약 인터페이스가 없다면 객체 A의 소스 코드를 객체 B에서 객체 C로 변경하는 작업이..

Chapter 07. 상속

🏷 상속 개념 상속은 부모가 자식에게 물려주는 행위를 말한다. 객체 지향 프로그램에서도 부모 클래스의 필드와 메소드를 자식 클래스에게 물려줄 수 있다. 상속의 장점 ! 상속은 이미 잘 개발된 클래스를 재사용하여 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여 시간을 단축할 수 있다. public class A { int field1; void method1() { ... } } public class B extends A { // A 클래스 상속 String field1; void method2() { ... } } // A로부터 물려받은 필드와 메소드 B b = new B(); b.field1 = 10; b.methdo1(); // B가 추가한 필드와 메소드 b.filed2 = "홍길동"; meth..

Chapter 06. 객체 지향 프로그래밍 - 2

🏷 인스턴스 멤버 필드와 메소드는 선언 방법에 따라 인스턴스 멤버와 정적 멤버로 분류 할 수 있다. 인스턴스 멤버 객체에 소속된 멤버 - 객체를 생성해야지만 사용할 수 있는 멤버 정적 멤버 클래스에 고정된 멤버 = 객체 없이도 사용할 수 있는 멤버 ✔️ 인스턴스 멤버 선언 및 사용 필드와 메소드는 인스턴스 멤버이기 때문에 외부 클래스에서 사용하기 위해서는 Car 객체를 먼저 생성하고 참조 변수로 접근해서 사용해야 한다. Car myCar = new Car(); myCar gas = 10; myCar.setSpeed(60); Car yourCar = new Car(); yourCar gas = 20; yourCar.setSpeed(70); 위와 같이 인스턴스를 생성했을 때, gas 필드는 각각의 인스턴스 ..

Chapter 05. 참조 타입

5.1 데이터 타입 분류 자바의 타입 기본 타입 : 정수, 실수, 논리 타입 참조 타입 : 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스. 인터페이스 타입이 있다. 더보기 객체란 ? 객체는 데이터와 메소드로 구성된 덩어리 객체 = 데이터(필드) + 메소드 기본 타입 vs 참조 타입 기본 타입은 값을 저장할 때, 값 자체를 저장하지만, 참조 타입은 객체가 생성된 메모리 번지를 저장한다. 메모리 상에서 변수들이 갖는 값 변수들은 모두 stack 이라는 메모리 영역에 생성된다. 기본 타입인 price와 age는 직접 값을 저장하고 있지만, 참조 타입 변수인 name과 hobby는 번지를 저장하고 해당 번지를 통해 String 객체를 참조한다. 5.2 메모리 사용 영역 자바에서 사용하는 메모리 영역에 대..

Chapter 04. 조건문과 반복문

4.2 if 문 if 문은 조건식의 결과에 따라 블록 실행 여부가 결정된다. 조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나 boolean 변수가 올 수 있다. 중괄호 {} 를 생략할 수 있는데 생략하지 않고 그냥 쓰는 것이 더 좋다. 중괄호 블록을 생략하면 코드의 가독성이 좋지 않고, 버그 발생의 원인이 될 수 있다. 🏷 else-if 문 else-if는 상위 조건식이 false 일 경우 평가되고, else if 가 true이면 해당 블록이 실행된다. 마지막에는 else 블록을 추가할 수 있는데 모든 조건식이 false 이라면 else 블록을 실행하고 if문을 벗어나게 된다. 4.3 switch 문 변수의 값에 따라서 실행문이 결정되기 때문에 같은 기능의 if 문 보다 코드가 간결해..

Chapter 03. 연산자

3.1 부호/증감 연산자 부호 연산자는 변수의 부호를 유지하거나 변경한다. 주의할 점은 부호 변경 후의 타입이다. 정수 타입 (byte, short, int) 연산의 결과는 int 타입이다. 부호를 변경하는 것도 연산이므로 부호 변경 후, 타입은 반드시 int에 대입해야 한다. 🏷 ++ 연산자, -- 연산자 int x = 1; int y = 1; int result1 = ++x + 10; // x를 1 증가 -> int result1 = 2 + 10 int result2 = y++ + 10; // y + 10 -> y를 1 증가 부호 + 피연산자 피연산자의 값을 1 증가시킨다. 피연사자 + 부호 다른 연산을 수행한 후에 피연산자의 값을 1 증가시킨다. 3.2 산술 연산자 산술 연산자는 (+, -, *, ..

Chapter 02. 변수와 타입

🏷 2.1 변수 선언 변수 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름 변수를 통해 프로그램은 메모리 번지에 값을 저장하고 읽을 수 있다. 타입 별로 그에 해당하는 타입을 저장 할 수 있다. 변수의 메모리 할당 변수 선언 시, 메모리에 할당이 되는 것이 아니고, 변수에 최초로 값이 할당 될 때 메모리에 값이 저장된다. 변수에 최초로 값을 대입하는 행위를 변수 초기화 라고 하며, 초기화 되지 않은 변수는 아직 메모리에 할당되지 않았기 때문에 변수를 통해 메모리 값을 읽을 수 없다. 🏷 2.1 정수 타입 변수는 선언 시 타입에 따라 저장할 수 있는 값의 종료와 허용 범위가 달라진다. 정수 , 실수 , 논리 값을 저장할 수 있는 기본(primitive) 타입 8개를 제공한다. 정수 : byte, c..