배열은 기본타입 뿐만 아니라 객체 참조 타입의 배열도 만들 수 있습니다. 하지만 배열은 선언 시 크기가 고정되고 저장, 삭제, 추가하는 메소드가 없어서 불편한 점이 많습니다. 이런 배열이 가지는 불편함을 해결하기 위해 자바는 컬렉션 프레임워크를 제공합니다. 자바의 자료구조 자바는 널리 알려져있는 자료구조를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 인터페이스와 구현 클래스를 java.util 패키지에 제공합니다. 이것들을 컬렉션 프레임워크라고 부릅니다. 컬렉션 프레임워크 주요 인터페이스로 List, Set, Map이 있습니다. 그리고 이 인터페이스들은 컬렉션 클래스를 사용하는 방법을 정의한 것입니다. List 컬렉션 List 컬렉션은 배열과 비슷하게 객체를 인스턴스로 관리합니다. < 특..
🧮Programming/Java
에러( Error )와 예외( Exception ) 자바에서 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용 프로그램 실행 오류가 발생하는 것을 에러라고 합니다. 그리고 그 외 프로그램 자체에서 발생하는 오류를 예외라고 합니다. 예외의 종류와 발생 경우를 알아보겠습니다.🧐 예외 (Exception) 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 예외라고 합니다. 예외가 발생되면 프로그램은 곧바로 종료됩니다.💢 프로그램이 종료되는 것을 막기 위해 예외를 적절하게 사용해야 합니다. 예외 처리를 적절하게 하면 프로그램이 종료되지 않고 정상 실행상태로 유지 가능합니다. 🩹 또한 자바에서는 예외 발생 가능성이 높은 코드 컴파일할 때, 예외 처리 유무를 확인합니다. 만약 예외 ..
👩💻 What is 추상 클래스? 여러 클래스의 공통된 특성(필드, 메소드)를 추출해서 선언한 것을 추상 클래스라고 합니다. 실체 클래스(객체 생성용)들의 공통적인 특성(필드, 메소드)를 추출하여 선언한 것입니다. 추상 클래스와 실체 클래스는 부모, 자식 클래스로서 상속 관계를 가집니다. 그림으로 나타내면 이렇습니다. 🔦추상 클래스의 용도 실체 클래스에 반드시 존재해야 할 필드와 메소드를 선언합니다. 자식 클래스들이 공통적으로 가져야하는 규격들을 추상클래스로 정의해놓고 자식 클래스들이 추상 클래스 규격대로 실체 클래스를 작성하기 위함입니다. 추상 클래스를 썼을 때 장점이 무엇인가 알아본다면 실체 클래스에는 공통된 내용은 빠르게 물려받고, 다른 점만 선언하면 되므로 시간절약할 수 있습니다. 추상 클래스 ..
클래스 상속 객체 지향 프로그램에서 부모 클래스의 멤버를 자식 클래스에게 물려줄 수 있습니다. 이것을 상속이라고 합니다. 이미 개발된 클래스를 재사용하여 새로운 클래스를 만들기 때문에 중복되는 코드를 줄일 수 있습니다. 부모 클래스의 한번의 수정으로 모든 자식 클래스까지 수정되는 효과가 있어 유지보수 시간이 줄어듭니다. 이렇게 B는 A의 상속을 받음으로써 B는 B의 method2()와 field2 뿐만 아니라 A의 method1()과 field1 모두를 사용할 수 있습니다. 🚨유의사항🚨 - 동시에 여러 개의 부모 클래스 상속할 수 없습니다. - 부모클래스에서 private 접근 제한 갖는 필드와 메소드는 상속 대상에서 제외됩니다. - 부모와 자식 클래스가 다른 패키지에 존재할 경우 default 접근 제..
패키지와 접근 제한자 프로젝트 개발 시 클래스를 체계적으로 관리하기 위해 패키지를 사용합니다. 클래스와 클래스 멤버를 사용 범위에 맞게 접근 제한자를 활용합니다. - 패키지 패키지의 물리적인 형태는 파일 시스템의 폴더입니다. 패키지는 클래스의 일부분으로, 클래스를 유일하게 만들어주는 식별자 역할을 합니다. 즉 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식합니다. 클래스의 전체 이름은 패키지 + 클래스 를 사용해서 다음과 같이 표현합니다. - 상위패키지.하위패키지.클래스 ex) com.mycompany.A 또한, 패키지명은 모두 소문자로 작성하는 것이 관례입니다. 다음과 같이 같은 폴더 안에 같은 이름의 파일을 만드는것은 불가능하지만, 하위 폴더에 같은 이름의 파일을 만드는것은 가능한 원리..
이번 시간엔 객체와 클래스에 대해서 알아보도록 하겠습니다.🙂 객체지향 프로그래밍 객체(Object) 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지며 식별 가능한 것을 말합니다. 객체는 속성(필드+동작)으로 구성되어 있습니다. 클래스는 객체의 설계도입니다. 인스턴스는 클래스로부터 만들어진 객체를 의미합니다. 객체지향 프로그래밍 단계 - 클래스 설계 -> 설계된 클래스로 사용할 객체 생성(new) -> 객체 이용 객체의 생성과 클래스 변수 클래스로부터 객체를 생성합니다. - new 클래스(); new 연산자로 메모리 힙 영역에 객체 생성합니다. 클래스 변수 = new 클래스(); 객체 생성 후 객체 메모리 주소가 리턴됩니다. 클래스 변수에 저장하여 변수를 통해 객체 사용 가능..
이번 시간엔 많은 양의 데이터를 적은 코드로 처리하는 배열에 대해서 자세히 알아보도록 하겠습니다. 👩💻Why Use Array? 많은 양의 데이터를 다루는 프로그램의 예로 학생 30명의 성적을 저장하고 평균값을 구한다고 생각해봅시다. int score1 = 83; int score2 = 93; ... int score29 = 100; int score30 = 49; 이렇게 변수 30개를 만들어 준 뒤, int sum = score1; sum += score2; sum += score3; ... sum += score30; int avg = sum / 30; 변수 전체를 더한 뒤 30으로 나눠 주는 과정을 거쳐야 합니다. 30명일 땐 할만하겠지만 100명이 되고, 1000명이 된다면 이것만큼 비효율적인 ..
저번 시간엔 주로 기본타입에 대해 알아봤습니다. 이번 시간엔 참조타입에 대해서 깊이 알아보겠습니다! 참조타입 기본타입(primitive type) : 정수, 실수, 문자, 논리리터럴을 변수에 직접 값으로 지정합니다. 참조타입(reference type) : 객체(object)의 번지를 참조하는 타입입니다. 객체 = 배열, 열거, 클래스, 인터페이스 기본 타입들은 크기가 명확하기 때문에 그 값 자체가 변수에 저장되는 반면, 객체들은 크기가 일정하지 않고 정의하는 대로 크기가 변경되기 때문에 특정 공간을 할당하는 것은 쉽지 않습니다. 그래서 주소값을 가지고 변수에 저장합니다. 이렇게 기본타입과 참조타입은 모두 스택영역에 저장됩니다. 기본타입은 그 값이 그대로 스택영역에 저장되는 반면, 참조타입은 힙영역에 저..