예외 처리 코드 프로그램에서 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 코드를 예외 처리 코드라고 한다. 자바 컴파일러는 소스파일을 컴파일 할 때 일반 예외가 발생할 가능성이 있는 코드를 발견하면 컴파일오를 발생시킨다. 그렇기 때문에 예외 처리코드를 작성해야한다. 예외처리 코드는 try - catch - finally 블럭을 이용한다. 생성자 내부와 메서드 내부에서 작성되어 일반 예외와 실행예외가 발생할 경우 예외 처리를 할 수 있도록 해준다. try{ 예외 발생 가능 코드 } catch(예외클래스 e) { 예외 처리 } finally { 항상 실행; } try 블럭에는 예외 발생 가능 코드가 위치한다. try 블럭의 코드가 예외 발생없이 정상 실행되..
전체 글
반복문 반복문은 어떤 작업이 반복적으로 실행되도록 할 때 사용되며, 반복문의 종류로는 for문, while문, do-while문이 있다. for문은 반복 횟수를 알고 있을 때 주로 사용하고, while문은 조건에 따라 반복할 때 주로 사용한다. while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐일 뿐 동작 방식은 동일하다. int Num = 0; Num++; //1 Num++;//2 Num++;//3 System.out.println(Num); 똑같은 실행문을 반복적으로 실행할 경우가 있다. 위에 코드는 1~3까지의 합을 구하는 것으로 작성되어 있다. 하지만 구하는 값이 커진다면 코드양이 엄청 늘어나게 된다. for문 int sum = 0; for(int i = 1; i ..
예외와 예외 클래스 자바에서는 에러 이외에 예외(exception) 라고 부르는 오류가 있다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서는 에러가 동일하다. 그러나 예외는 예외처리(Exceptoin Handling)를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 자바에서는 예외를 클래스로 관리한다. JVM은 프로그램을 실행하는 도중에 예외가 발생하면 해당 예외 클래스로 객체를 생성한다. 그리고 나서 예외 처리 코드에서 예외 객체를 이용할 수 있도록 해준다. 예외는 두 가지 종류가 있다. 하나는 일반예외(Exception) 이고, 다른 하나는 실행 예외( Runtime E..
1. 코드 실행 흐름 제어 2. 조건문 ( if문, switch문) 코드 실행 흐름 제어 자바 프로그램을 시작하면 main() 메서드의 시작 중괄호에서 끝 중괄호까지 위에서 아래로 실행하는 흐름을 가지고 있다. 이러한 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것이 제어문이다. 제어문의 종류는 조건문과 반복문이 있다. 조건문에는 if문, switch문이 있고 반복문에는 for문, while문, do-while문이 있다. if문 조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나, boolean 변수가 올 수 있다. 조건식이 true이면 블럭을 실행하고 false이면 블럭을 실행하지 않는다. if(조건식) { // 조건식이 참(true)일 때 수행될 문장들을 적는다. } ..
인터페이스의 역할 인터페이스는 객체의 교환성을 높여주기 떄문에 다형성을 구현하는 매우 중요한 역할을 한다. 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 메서드를 호출하면 인터페이스는 객체의 메서드를 호출한다. 그렇기 때문에 개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메서드만 알고 있으면 된다. 인터페이스를 사용하는 이유? 개발 코드가 직접 객체의 메서드를 호출하면 되는데 굳이 인터페이스를 사용하는 것일까 의문점이 생길 수 있다. 그 이유는 개발 코드를 수정하지 않고, 사용하는 객체를 변경 할 수 있도록 하기 위해서이다. 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능하므로 어떤 객체를 사용하느냐에 따라서 실행 내용과 리턴 값이 다를 수 있다..
final final의 의미는 최종적이랑 뜻을 가지고 있다. final 키워드는 클래스, 필드, 메소드 선언 시에 사용할 수 있다. 해당 선언이 최종상태이고, 수정 될 수 없다. final 타입 필드 [=초기값]; final 변수: 값 변경하지 못한다. int a = 10; final int b = 10; a++; b++; //컴파일 오류 final 메서드 final 메서드는 오버라이딩 할 수 없다. 메서드를 선언할 떄 final 키워드를 붙이게 되면 이 메서드는 최종적인 메서드이므로 오버라이딩을 할 수 없는 메서드가 된다. 즉 부모 클래스를 상속해서 자식 클래스를 선언 할 때 부모 클래스에서 선언된 final 메서드는 자식 클래스에서 재정의 할 수 없다. public class Car { //필드 pu..
타입변환 다형성을 위해 자바는 부모 클래스(상위)로 타입 변환을 허용한다. 즉 부모 타입에 모든 자식객체가 대입될 수 있다. 이것을 이용하면 객체는 부품화가 가능하다. 강제 타입 변환(Casting) 강제 타입변환(Casting)은 부모타입을 자식 타입으로 변환하는 것을 말한다. 그렇다고 해서 모든 부모타입을 자식클래스 타입으로 강제 변환할 수 있는 것은 아니다. 자식 타입이 부모타입으로 자동 변환한 후 , 다시 자식 타입으로 변환할 떄 강제 타입변환을 사용할 수 있다. Parent parent = new Child(); parent.field1 = "XX"; parent.method1(); parent.method2(); parent.field2 = "yy"; //컴파일에러 parent.method3(..
다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다. 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다. 객체지향에서 다형성의 개념이 적용된 두 가지 형태인 오버로딩과 오버라이딩이다. 오버로딩은 메서드 중복정의, 오버라이딩은 메서드 재정의를 뜻한다. Overriding(재정의) 부모쪽에서 사용한 것을 자식클래스에서 오버라이딩을 하였다. 8. shpae 타입 객체가 S변수에 전달이 되고 Shape 클래스의 makeArea() 메서드가 호출된다. 9. Circle 타입의 매개변수가 전달되면 upcasting이 이루어진다. S변수에 전달이 되며 자료형은 Shape이기떄문에 Shape영역만 참조할수있다. 그럼에도 불구하고 Shape안에 있는 makeAr..
깃(Git)프로젝트에 담겨있는 데이터들은 파일 시스템 상에서의 스냅샷(Snapshot)이라고 볼 수 있습니다. 실제로 프로젝트를 커밋(commit)하여 적용할 떄의 순간을 중요시한다는 특징이 있습니다. 파일 자체를 저장하기보다 수정내역자체를 저장합니다. Git 동작원리 세 가지 구성요소 - Working Directory : 작업할 파일이 있는 디렉토리입니다. - Staging Area: 커밋(Commit)을 수행할 파일들이 올라가는 영역입니다. - Git Directory : Git 프로젝트의 메타 데이터와 테이터 정보가 저장되는 디렉토리 입니다. Git 의 기본적인 동작 과정 특정한 파일을 추가, 수정등의 작업을 Working Directory 하게되면 Staging Area 올리기 위해 add를 합..
깃(git) 을 이용하면 하나의 프로젝트를 여러 사람들과 함께 효과적으로 관리하여 협업할 수 있습니다. 동시에 프로젝트를 진행할 때 소스코드를 여러명이 동시에 보면서, 수정하며 개발해야하는데 이러한 작업은 협업관리도구가 없으면 쉽지 않습니다. 깃(Git)은 여러명이 병렬적으로 개발을 할 수 있게 해준다는 점에서 프로젝트 개발 속도를 매우 빠르게 해줍니다. 실제로 리눅스를 포함해서 다양한 오픈소스 프로젝트들은 수천명이 넘는 개발자가 포함되어 있는데. 이들의 작업 내역을 보았을 때 효과적으로 관리를 할 수 있는 점을 볼 수 있습니다. SVN 은 각 컴퓨터가 중앙 서버처럼 사용하는 컴퓨터로부터 파일을 다운로드 받아 이용하는 방식입니다. 깃(Git)은 중앙서버의 개념이 없으며 서버가 망가졌을 때 다른 컴퓨터로부..