Java 29

[Java] 컬렉션 프레임워크 활용

배열의 한계 배열 사이즈가 정적이기 때문에 추가 연산시 자리가 부족할 수 있다. 배열의 중간 원소 삽입이나 삭제가 힘들다. 배열 사이즈가 정적임을 대비해 너무 크게 할당할 경우 메모리 낭비가 심해진다. 이러한 한계를 극복한 것이 컬렉션이다. 컬렉션 배열을 동적으로 변경해서 사용자가 사용할 수 있도록 만든 프레임워크이다. 제너릭으로 되어있고, 객체 생성시 타입을 지정한다. 동일 타입의 데이터를 저장할 수 있다. 장점 일관된 API 프로그래밍 노력 감소 프로그램 속도 및 품질 향상 클래스/ 인터페이스 구조도 주요 인터페이스 List 순서 유지 인덱스 존재 원소 중복 가능 ArrayList Array를 이용해서 내용 유지 배열 크기 부족해지면 50%로 늘림 연속적 주소 할당 검색 성능 👍🏻 연속적으로 주소 할..

Java 2022.10.20

[Java] 배열(심화)

일차원 배열 변수는 한 개의 데이터만 저장할 수 있음 동일한 데이터 타입을 여러 개 저장하고 싶을 경우 배열 사용 인덱스는 0부터 시작 배열 원소 사이에는 순서가 존재 하나의 배열 이름을 공유할 수 있기 때문에 나중에 for문과 같이 사용 선언 방법 배열 선언시 저장할 원소 개수만 알고 있는 경우 데이터타입[] 배열변수이름 = new 데이터타입[데이터 개수]; 배열 선언시 원소값을 알고 있는 경우 데이터타입[] 배열변수이름 = {...,...,...,...,...,}; 배열 객체가 없다면 null 초기화 가능 데이터타입[] 배열변수이름 = null; 메모리 원소가 원시타입인 경우 int[] nums = {10, 20, 30, 40, 50}; 원소가 참조 타입인 경우 String[] names = {"Sa..

Java 2022.10.05

[Java] 자바 입출력

입출력 스트림 네트워크에서 자료의 흐름이 물의 흐름과 같다는 비유에서 유래됨 자바는 다양한 입출력 장치에 독립적으로 일관성있는 입출력을 입출력 스트림을 통해 제공 입출력이 구현되는 곳: 파일 디스크, 키보드, 마우스, 네트웍, 메모리 등 모든 자료가 입력되고 출력되는 곳 입출력 스트림의 구분 대상 기준 : 입력 스트림 / 출력 스트림 자료의 종류 : 바이트 스트림 / 문자 스트림 기능 : 기반 스트림 / 보조 스트림 입력 스트림과 출력 스트림 입력 스트림 : 대상으로부터 자료를 읽어 들이는 스트림 출력 스트림 : 대상으로 자료를 출력하는 스트림 종류 입력 스트림: FileInputStream, FileReader, BufferedInputStream, BufferedReader 등 출력 스트림: File..

Java 2022.10.02

[Java] 예외 처리

자바는 안정적인 것을 많이 신경 쓴 언어입니다. 그래서 프로그램에서의 오류를 잘 핸들링하기 위한 장치들이 있습니다. 프로그램에서의 오류 컴파일 오류(compile error) 프로그램 코드 작성 중 발생하는 문법적 오류 최근에는 개발 환경(eclipse)에서 대부분의 컴파일 오류는 detection 됨 실행 오류(runtime error) 실행 중인 프로그램이 의도 하지 않은 동작(bug)을 하거나 프로그램이 중지 되는 오류 실행 오류는 비정상 종료가 되는 경우 시스템의 심각한 장애를 발생할 수 있음 이러한 프로그램에서의 오류를 잘 다루는 것이 중요합니다. 예외 처리의 중요성 프로그램의 비정상 종료를 피하여 시스템이 원할이 실행되도록 함 실행 오류가 발생한 경우 오류의 과정을 재현하는 것은 현실적으로 힘..

Java 2022.10.02

[Java] 자바의 유용한 클래스

Object 클래스 모든 클래스의 최상위 클래스입니다. 루트 클래스라고도 합니다. 자동으로 import되기때문에 따로 import하지 않아도 사용가능합니다. final로 정의 되어있는 메서드를 제외하고 모두 재정의해서 사용할 수 있다. 모든 클래스는 Object 클래스를 상속 받는다 java.lang.Object 클래스 모든 클래스는 Object에서 상속받고, Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음 컴파일러가 extends Object를 추가함 class Student => class Student extends Object toString() 메서드 객체의 정보를 String으로 바꾸어서 사용할 때 쓰임 String이나 Integer 클래스는 이미 재정의 되어 있음 Objec..

Java 2022.10.01

[Java] 제네릭 프로그래밍

제네릭 자료형 정의 클래스에서 사용하는 변수의 자료형이 여러개 일수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정 할 수 있도록 선언 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식 컬렉션 프레임워크에서 많이 사용되고 있음 제네릭 타입을 사용하지 않는 경우의 예 재료가 Powder인 경우 public class ThreeDPrinter1{ private Powder material; public void setMaterial(Powder material) { this.material = material; } public Powder getMaterial() { return material; } } 재료가 Pla..

Java 2022.10.01

[Java] 자료구조

자료구조란? 프로그램에서 사용할 많은 데이타를 메모리 상에서 관리하는 여러 구현방법들 효율적인 자료구조가 성능 좋은 알고리즘의 기반이 됨 자료의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있음 여러 자료 구조 중에서 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야 하므로 자료구조에 대한 이해가 중요합니다. 자료구조의 종류 배열 (Array) 선형으로 자료를 관리, 정해진 크기의 메모리를 먼저 할당받아 사용하고, 자료의 물리적 위치와 논리적 위치가 같음 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조 정해진 크기가 있음 요소의 추가와 제거시 다른 요소들의 이동이 필요함 배열의 i 번째 요소를 찾는 인덱스 연산이 빠름 jdk 클래스 : ArrayList, Vector 연결 리스트 (Lin..

Java 2022.10.01

[Java] 컬렉션 프레임워크

컬렉션 프레임워크 프로그램 구현에 필요한 자료구조를 구현해 놓은 JDK라이브러리입니다. java.util 패키지에 구현되어 있음 개발에 소요되는 시간을 절약하면서 최적화 된 알고리즘을 사용할 수 있음 Tree라는 말이 앞에 붙으면 정렬이 된다고 생각하면 됩니다.(바이너리 서치 트리) Collection 인터페이스 하나의 객체를 관리하기 위한 메서드가 선언된 인터페이스의 하위에 List와 Set 인터페이스가 있음 List 인터페이스 객체를 순서에 따라 저장하고 관리하는데 필요한 메서드가 선언된 인터페이스 자료구조 리스트 (배열, 연결리스트)의 구현을 위한 인터페이스 중복을 허용함 ArrayList, Vector, LinkedList, Stack, Queue 등... ArrayList ArrayList를 이..

Java 2022.10.01

[Java] 다형성 / 다운 캐스팅

다형성(polymorphism) 이란? 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 다른 실행 결과가 나옴 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나임 다형성을 잘 활용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 만들수 있음 다형성을 볼 수 있는 코드 class Animal{ public void move() { System.out.println("동물이 움직입니다."); } public void eating() { } } class Human extends Animal{ public void move() { System.out.println("사람이 두발로 걷습니다."); } public void readBooks() { System.ou..

Java 2022.09.23

[Java] 상속

클래스 상속 새로운 클래스를 정의 할 때 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나 기능을 확장하여 클래스를 구현합니다. 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야 할때 기존 클래스를 상속합니다. 상속하는 클래스 : 상위 클래스, parent class, base class, super class 상속받는 클래스 : 하위 클래스, child class, derived class, subclass 상속의 문법 class B extends A{ } extends 키워드 뒤에는 단 하나의 클래스만 올 수 있습니다. 자바는 단일 상속(single inheritance)만을 지원하기 때문입니다. 어느 경우에 상속을 구현할까? 상위 클래스는 하위 클래스 보다 더 일반적..

Java 2022.09.23