전체 글 120

Java Comparator & Comparable

■ Java Comparator & Comparable - 객체의 정렬 기준을 제공하는 Interface로, Comparator, Comparable을 이용하여 객체를 정렬할 수 있다. • Comparator Interface - 정렬하는 규칙을 정의하는 Interface - 정렬 규칙이 여러 군데에 사용된다면 Interface를 구현한 클래스를 구현하지만, 한 번씩만 사용된다면 익명 내부 클래스 또는 람다식을 이용하여 구현한다. - 일반적으로 String, Integer 등 Java에서 제공하는 타입에 대해서는 Comparator을 사용한다. * Integer, Double : 오름차순 정렬 * String : 사전 순 정렬 - compare(T o1, T o2) 메서드 1) 오름차순 정렬 a. o1이..

Coding/Java 2020.09.22

Java Lambda Expression(람다식)

■ Java Lambda Expression(람다식) - Java 1.8에서 추가된 함수형 프로그래밍(Functional Programming)을 구현하는 방식 - 클래스를 생성하지 않고 함수의 호출만으로 기능을 수행 - 병렬 처리가 가능함 - Lambda를 이용하면, 함수를 변수처럼 사용할 수 있다 (Use funcation like variable) - Java에서 '메소드'를 '함수'처럼 사용하는 방식 * Java에는 '함수'라는 게 없음. * 함수형 프로그래밍을 하려면 '1급 함수'라는 개념이 필요 • Functional Programming - 순수 함수(Pure Function)를 구현하고 호출 * 순수 함수 : 외부의 상태를 변경하지 않으면서, 동일한 인자에 대해 항상 똑같은 값을 리턴하는 ..

Coding/Java 2020.09.18

Java Inner Class(내부 클래스)

■ Java Inner Class (내부 클래스) - Outer(Class, Method) 내부에 선언하는 클래스로 중첩 클래스(Nested Class)라고도 부름 - 보통 해당 Outer(Class, Method)에서만 사용하기 위해서 사용된다. • Inner Class Type - Instance Inner Class - Static Inner Class - Local Inner Class - Anonymous Inner Class • Compile 시, Class Name Instance, Static Inner Class : {OuterClass}${InnerClass}.class Local Inner Class : {OuterClass}$1{InnerClass}.class (1은 해당 Class..

Coding/Java 2020.09.18

Java Handling Exception(예외 처리)

■ Java Handling Exception(예외 처리) • 오류 (Error) - 메모리 부족 또는 프로그램 실행이 꼬이는 경우 등 프로그램 복구가 불가능한 상황 - 오류가 발생하는 원인을 찾아서 제거하는 방법으로 해결 • 예외 (Exception) - 오류(Error)에 비해서 심각도가 낮고, 프로그램의 정상적인 흐름만 방해 파일을 읽으려 했으나, 해당 파일이 없는 경우 네트워크 연결이 유실되는 경우 - 문제 상황을 처리하는 로직을 구현하여, 런타임에서 자연스럽게 해결 가능 1. 예외 처리 - 예외가 발생했을 경우, 이 상황을 감지하고 처리하는 코드 - Throwable 클래스를 상속하는 자식 클래스로 이러한 문제들을 해결 • try ~ catch 문 종류 1. try ~ catch try{ // ..

Coding/Java 2020.09.17

Java Generic(제네릭)

■ Java Generic(제네릭) - 대상 객체의 타입을 입력받아서 사용하는 형식 - 미리 사용할 수 있는 타입을 명시해서 컴파일 타임에 체크 가능 입력을 Object로 입력받아, Casting을 런타임에 instanceof로 객체로 체크를 할 수 있지만, 비효율적으로 코드를 작성하게 된다. 제네릭을 사용할 경우 이러한 과정없이 간결하게 코드를 작성할 수 있다. 1. 제네릭 클래스 (Generic Class) • 클래스 선언 시, 설정되지 않은 타입을 타입 파라미터로 표현 class GenericFoo { // T: 타입 파라미터 String name; T memberVar; GenericFoo(String name, T memberVar){ this.name = name; this.memberVar ..

Coding/Java 2020.09.17

Java Enumeration(열거형)

■ Java Enumeration(열거형) - enum 키워드 사용 - java.lang.eum 클래스를 상속 - enum은 다른 클래스를 상속하지 못하지만, 인터페이스 구현은 가능(이미 상속하고 있기 때문에) - 내부적으로는 클래스 동작 - 열거형 타입에는 열거형 상수와 null 값 할당 가능 - public과 default만 사용 가능 • 기본 구현 - 열거형 상수는 객체이다. enum Job { // 각 상수는 0부터 숫자를 가지지만, Symbol로만 사용하고 숫자는 사용하지 않는다. STUDENT, MARKETING, DEVELOPER, CHIEF_EXECUTIONAL_OFFICER; // 열거형 } class Foo{ enum Symbol{ ONE, TWO, THREE; } } class Tes..

Coding/Java 2020.09.17

Java Abstract Class & Interface

■ Java Abstract Class & Interface 1. 추상 클래스 (Abstract Class) • 일부 메소드가 구현되지 않고, 선언만 되어있는 클래스(abstract 키워드) - 자식 클래스에서 구현되지 않은 메소드를 반드시 구현하도록 강제하는 것 - 상속한 모든 클래스가 구현하도록 하기 때문에 안정성을 높임 • 추상 클래스는 객체를 생성할 수 없다. - 그렇기 때문에 구현된 자식 클래스 객체를 받아야 한다. abstract class AbstractFoo{ int x, y; public void method(){ System.out.println("method"); } public abstract void abstractMethod(); // 세미콜론을 잊지말아야 한다 // 선언만 하고..

Coding/Java 2020.09.17

Java Polymorphism(다형성)

■ Java Polymorphism(다형성) - Overloading에 의한 다형성 - Override 에 의한 다형성(상속 이용) • 다형성 특징 1. 부모 클래스 타입으로 자식 클래스 타입의 객체를 참조하는 특징 - 부모 클래스 타입으로 자식 클래스(메소드, 멤버 변수)에 접근할 수 없다. class Foo{ public void methodA(){ } } class Bar extends Foo{ public void methodB(){ } } public class Polymorphism { public static void main(String[] args) { Bar bar = new Bar(); // 자식 객체를 생성 Foo foo = (Foo)bar; // 부모 클래스 타입으로 자식 객체를 ..

Coding/Java 2020.09.17

Java Modifier(제어자)

■ Java Modifier(제어자) - 클래스, 변수, 메소드에 부가 기능을 부여하는 키워드 1. 접근 제어자 (Access Modifiers) - 접근할 수 있는 범위를 정하는 제어자 - private : Class 안에서만 사용 가능 - default : 같은 Package 내에서 사용 가능 - protecte : 같은 Package 또는 다른 Package에 속한 자식 클래스에서 사용 가능 - public : 전체에서 사용 가능 * Class는 private와 public만 가능 • 기본 Package package PackageA; public class ClassA { public int x; protected int y; int z; // default (=package) private in..

Coding/Java 2020.09.16

Java Inheritance(상속)

■ Java Inheritance (상속) - 클래스를 상속하게 되면 모든 멤버변수 및 메소드를 계승하여, 새로운 클래스를 생성하는 것 - 상속할 대상 : 추상 클래스, 부모 클래스, 상위 클래스, 슈퍼 클래스 - 상속 결과 : 자손 클래스, 자식 클래스, 하위 클래스, 서브 클래스 - 상속 관계를 흔히 'IS-A' 관계라고 부른다. - extends 키워드를 사용 // 부모 클래스 class Person{ ... } // 자식 클래스{ class Developer extends Person{ ... } • 포함 관계 (Class Composition) - 'HAS-A' 관계 - 하나의 클래스가 다른 클래스의 객체를 보유하는 관계 class MainMachine{ ... } class Developer{..

Coding/Java 2020.09.16