혼자 공부하는 자바 📖
Chapter 12-1. 멀티 스레드(1)
멀티 스레드 프로세스(process) 실행중인 하나의 애플리케이션 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는 것 스레드(thread) 프로세스 내부에서의 코드 실행 흐름 멀티 프로세스(multi process) 하나의 애플리케이션은 멀티 프로세스를 만들기도 하는데, 예를 들어 메모장을 2개 열어 작성한다면 2개의 메모장 프로세스 즉, 멀티 프로세스가 생성된 것 멀티 태스킹(multi tasking) 비슷한 의미로, 두 가지 이상의 작업을 동시에 처리하는 걸 멀티 태스킹이라고 하는데 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다 음악을 들으며 워드로 문서 작성하는 것을 예로 들 수 있다. 하지만, 멀티 태..
Chapter 10-1. 예외 클래스
예외 클래스 에러(error) 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것 예외(exception) 에러 이외에 프로그램 자체에서 발생하는 오류 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류 일반 예외, 실행 예외 예외 처리(exception handling) 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 하는 것 자바에선 예외 발생 가능성이 높은 코드 컴파일 시 예외 처리 유무를 확인하나 모든 예외를 확인하진 않음 예외의 종류 숙지 예외와 예외 클래스 자바에서는 예외를 클래스로 관리 모든 예외 클래스는 java.lang.Exception 클래스를 상속 일반 예외와 실행 예외 클래스는 RuntimeException 클래스를 기..
Chapter 08-2. 타입 변환과 다형성
인터페이스의 다형성 : 프로그램 소스 코드는 변함이 없는데, 구현 객체를 교체함으로써 프로그램의 실행결과가 다양해지는 것 자동 타입 변환 : 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것 : 필드의 다형성과 매개 변수의 다형성을 구현 가능 구현 객체가 인터페이스 타입으로 변환되는 것은 자동 타입 변환에 해당 필드와 매개변수의 타입을 인터페이스로 선언하면 다양한 구현 객체를 대입해서 실행결과를 다양하게 만들 수 있음 필드의 다형성 한국 타이어와 금호 타이어는 공통적으로 타이어 인터페이스를 구현 둘 다 타이어 인터페이스에 있는 메소드 소유 타이어 인터페이스로 동일하게 사용할 수 있는 교체 가능한 객체 필드 타입으로 타이어 인터페이스를 선언하면 필드 값으로 한국, 금호 타이어 객체 대입 가능 pub..
Chapter 07-1. 상속
상속 자식이 부모가 물려준 것을 자연스럽게 이용하는 것처럼 프로그래밍에서도 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여줄 수 있고, 부모 클래스(상위 클래스)의 수정으로 모든 자식 클래스(하위 또는 파생 클래스)들도 수정되는 효과가 있어 유지 보수 시간을 최소할 수 있다 클래스 상속 자식 클래스를 선언할 때 어떤 부모 클래스를 상속받을 것인지 결정하고, 선택된 부모 클래스는 extends 뒤에 기술 class 자식클래스 extends 부모클래스 { // 필드 // 생성자 // 메소드 } 특징 다중 상속 허용 X : extends 뒤에 오는 부모 클래스는 여러 개일 수 없고 단 하나만 올 수 있다 접근 제한자에 따른 상속 제외 부모 클래스에서 private 접근 ..
Chapter 06-6(2) 패키지와 접근 제한자
접근 제한자(Access Modifier) 클래스 및 인터페이스 그리고 이들이 가지고 있는 멤버의 접근을 제한하기 위해 사용 public : 외부 클래스가 자유롭게 사용할 수 있도록 함 protected : 같은 패키지 또는 자식 클래스에서 사용할 수 있도록 함 private : 개인적인 것이라 외부에서 사용될 수 없도록 함 default : 위 3가지 접근 제한자가 사용되지 않을 경우 적용되고 같은 패키지에 소속된 클래스에서만 사용할 수 있도록 함 접근 제한자 클래스 내부 동일 패키지 자식 클래스 다른 패키지 private O X X X default O O X X protected O O O X public O O O O 클래스의 접근 제한 클래스 선언 시 해당 클래스를 어느 범위까지 사용할 것인지 ..
Chapter 06-6(1) 패키지와 접근 제한자
패키지(package) 파일 시스템의 폴더 기능을 하며 클래스의 일부분으로, 클래스를 유일하게 만들어주는 식별자 역할 클래스를 체계적으로 관리하기 위해 사용 클래스 이름이 동일해도 패키지가 다르면 다른 클래스로 인식 클래스의 전체 이름은 '패키지 이름 + 클래스 이름' 패키지가 상,하위로 구분되어 있으면 도트를 사용하여 표현 상위 패키지.하위패키지.클래스 com.mycompany.A 패키지 선언 클래스를 작성할 때 해당 클래스가 어떤 패키지에 속할 것인지를 선언하는 것 패키지는 클래스의 일부 클래스만 따로 복사하여 다른 곳으로 이동하면 클래스를 사용할 수 없음 이동해야 한다면 패키지 전체를 이동시켜야 한다 패키지 이름 생성 규칙 숫자로 시작할 수 없고 _ , $ 를 제외한 특수문자를 사용할 수 없음 ja..
Chapter 06-3(2) 생성자 오버로딩, 다른 생성자 호출: this()
생성자 오버로딩 (overloading) : 매개 변수를 달리하는 생성자를 여러 개 선언하는 것 - 다양한 데이터들을 이용하여 객체를 초기화하려면 생성자도 다양화될 필요가 있다 - 제공 데이터가 없을 경우, 기본 생성자로 객체를 생성할 수 있어야 한다 (예를 들어 Car 객체) - model, color 등의 데이터가 제공될 경우에도 Car 객체를 생성할 수 있어야 한다 - 매개 변수의 타입과 개수, 선언된 순서가 똑같을 경우 매개 변수의 이름만 바꾸는 것은 생성자 오버로딩이 아님 // 오버로딩의 올바른 예 public class Car { Car() {} Car(String model) {} Car(String model, String color) {} Car(String model, String co..
프로그래밍 기초 언어 과제 제출 (Java)
항해99 프로그래밍 기초주차 언어 과제 제출 (Java) 다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었다. 어디서 잘못 작성된 것일까? int var1=5; int var2=2; double var3=var1/var2; int var4=(int)(var3 * var2); System.out.println(var4); // 출력 : 4 문제 해석) 5라는 값을 정수형 변수 var1에 할당, 2라는 값을 정수형 변수 var에 할당, 변수 var1을 변수 var2로 나눈 값을 실수형 변수 var3에 할당, 변수 var3과 var2를 곱한 값을 int 형으로 캐스팅하여 var4에 할당 이에 대한 값을 5로 기대했는데 4로 출력되었다. 위에서는 정수형 변수인 var1과 var2를 ..