1. OOP란? 상태와 행위를 가진 객체로 구성되어있고 이러한 객체들의 연관관계를 표현한 프로그램을 뜻한다 2. 장점 - 코드의 재사용성이 높다 : 누군가가 만든 클래스를 가져와 상속을 통해 확장이 가능 - 유지보수가 쉽다 : 수정해야할 부분이 클래스 내부에 멤버 변수 혹은 메소드로 존재하기 때문에 해당 부분만 수정하면 됨 - 대형 프로젝트에 적합하다 : 클래스 단위로 모듈화시켜 개발할 수 있으므로 업무 분담이 쉬움 3. 단점 - 처리 속도가 상대적으로 느리다 - 객체가 많아지면 용량이 커질 수 밖에 없다 - 설계시 많은 노력과 시간이 필요하다 3. 객체 지향 프로그래밍의 특징 - 추상화 : 불필요한 정보는 숨기고 필요한 정보만을 표현함으로써 공통의 속성이나 기능을 묶어 이름을 붙이는 것 - 캡슐화 : ..
JCF(Java Collection Framework) Collection 인터페이스 1. Iterable/Iterator 인터페이스 Iterable : ㄴ public Iterator iterator(); Iterator 인터페이스를 반환하는 메소드 Iterator : ㄴ public boolean hasNext(); / public E next(); /public remove(); Collection은 Iterable 인터페이스를 상속받고 List, Set을 구현하는 클래스에서 위의 메소드를 구현하여 데이터를 저장, 삭제하게 된다. 2. 저장 가능한 데이터 타입 Collection은 기본 데이터형이 아닌 참조 데이터형만 저장이 가능하므로 Object 타입의 객체로 저장해야 한다. 기본 데이터형은 Wr..
래퍼 클래스란(Wrapper Class) 기본 타입의의 데이터를 객체로 포장해주는 클래스 프로그래밍 중 기본 타입의 데이터를 객체로 표현해야 할 때 사용된다 ex) DB에서 자료형이 정수형이지만 null 값이 필요한 경우 VO에서 Integer를 사용 - 객체는 null 값 처리 가능, 기본타입은 불가능 래퍼 클래스 구조도 래퍼 클래스의 부모는 Number, 최종 부모 클래스는 Object인 것을 볼 수 있다 박싱(Boxing)과 언박싱(UnBoxing) Boxing : 기본 타입의 값을 Wrapper 객체로 만드는 과정 UnBoxing : Wrapper 객체에서 기본 타입의 값을 얻는 과정 자동 박싱(AutoBoxing)과 자동 언박싱(AutoUnBoxing) Wrapper 객체에 기본 타입의 데이터가..
자바 객체 정렬 방법 Comparable 인터페이스 객체 자신이 가지고 있는 자신의 정렬 기준을 정의하는 인터페이스 직접 클래스를 만들때 해당 클래스 객체의 정렬 기준을 미리 설정해두기 위해 구현하는 인터페이스 래퍼 클래스나 String과 같이 자바에서 정렬이 가능한 타입들은 모두 Coparable을 구현하고 있다 Int ComporeTo()메소드 리턴값 음수일 경우 : 두 요소의 위치를 바꿈 양수일 경우: 두 요소의 위치를 그대로 만약 배열이 {3,6,1}이라면 처음 비교할 때 compareTo의 파라미터값은 3, this 값은 6 package Programmers.sort; import java.util.ArrayList; import java.util.Collections; import java...
프로그램의 오류 두가지 1. 컴파일 에러 (컴파일 중 발생하는 에러) 2. 런타임 에러 (어플리케이션 실행 중 발생하는 에러) 자바 1. 에러 - JVM 실행에 문제 -> 개발자가 해결할 수 없음 2. 예외 - 사용자의 잘못된 조작 or 개발자의 잘못된 코딩으로 발생 둘의 공통점 : 둘다 프로그램이 예기치 못하게 종료된다 예외는 예외처리를 통해 프로그램의 종료를 막고 정상 실행할 수 있다 예외처리 2가지 방법 1. try/catch try 안에서 에러가 발생하면 catch 메소드의 매개변수에 에러를 담고있는 exception 객체를 JVM이 넘겨주고 메소드를 실행시킨다 catch 구문의 메소드에 예외처리 로직을 넣어 예외를 처리할 수 있다 예외 발생 여부와 관계없이 무조건 실행문이 있다면 finally ..
1. Overriding 부모 클래스의 메소드를 자식이 재정의하는 것 (메소드 업그레이드) 부모 메소드의 리턴타입과 매개변수의 갯수, 타입, 순서가 같아야 오버라이딩을 할 수 있다 2. Overloading 같은 클래스 안에서 메소드의 이름은 같지만 매개변수를 다르게 받는 것 똑같은 취지 & 똑같은 동작 방법이지만 매개변수의 타입 또는 갯수가 다름으로 인하여 또 다른 이름의 메소드를 만드는 것을 방지 같은 클래스 내에서 같은 이름의 메소드 다른 타입 혹은 갯수의 매개변수 리턴값이 같아야 한다
JVM 구성 요소 1. Class Loader JVM 내로 클래스 파일을 load하고 link를 통해 배치를 수행하는 모듈로 Runtime 시에 동적으로 클래스를 로드한다. 자바는 동적 코드, 컴파일 타임이 아니라 런타임에 참조한다. 즉, 클래스를 처음으로 참조할 때 해당 클래스를 load하고 link한다. 2. Execution Engine class loader를 통해 배치된 클래스를 실행시킨다. 클래스 파일(바이트 코드)은 비교적 인간이 보기 쉬운 형태이기 때문에 기계가 실행할 수 있는 형태로 변경시키는데 이 때, 두 가지 방식을 사용한다. ( 인터프리터, JIT ) 3. Interpreter 실행 엔진은 바이트 코드를 명령어 단위로 실행한다. 이는 한 줄 씩 수행하기 때문에 느리다는 단점을 가지고..
1. 람다 함수(Lambda Function)이란? 함수형 프로그래밍 언어에서 사용되는 개념으로 익명함수라고도 한다 Java 8 부터 지원되며, 불필요한 코드를 줄이고 가독성을 향상시키는 것을 목적으로 두고 있다 람다 함수를 특정 메소드의 매개변수로 넘기기 위해서는 메소드의 매개변수가 함수형 인터페이스여야 한다 자바에서 함수형 인터페이스는 @FuntionalInterface를 붙여 선언한다. 이 인터페이스는 반드시 추상 메소드 한개만 정의되어있다 - 함수형 인터페이스와 람다 예시 //익명 함수 사용법 new Thread(new Runnable() { @Override public void run() { System.out.println("Thread!"); } }).start(); //람다식 사용법 ne..