본문 바로가기

반응형

자바

(14)
예외처리 (종류와 범위) 지난 글에서 1,2번에 대해 알아봤습니다. 1. 예외가 어디서 발생하고 어디서 처리되는지 2. 예외가 발생하는 위치에 따른 코드의 흐름 3. 예외의 종류와 범위 이번에는 예외의 종류와 범위에 대해 알아보고자 합니다. 예외는 크게 프로그래머들의 실수로 발생할 수 있는 RunTimeException과 사용자들의 실수로 인해 발생 하는 Exception 이 있습니다 라고 언급되지만 여기서는 이 내용을 다루기 위한 것이 아니기에 넘어가도록 하겠습니다. 이전 글들에서 썻던 예외 중 가장 상위 클래스 Exception입니다. 모든 예외의 조상이기 때문에 Exception을 쓰게 되면 모든 예외를 다 처리할 수 있습니다. parent 클래스를 생성하고 child 라는 자손 클래스로 이를 상속했습니다. 그리고 chil..
예외처리 (발생하는 위치와 코드의 흐름) 예외처리에 대한 글을 쓰면서 3가지 유의 사항이 있다고 했습니다. 1. 예외가 어디서 발생하고 어디서 처리되는지 2. 예외가 발생하는 위치에 따른 코드의 흐름 3. 예외의 종류와 범위 이번 글에서는 2번째 내용 2. 예외가 발생하는 위치에 따른 코드의 흐름에 대해 알아보려 합니다. 기본적으로 위에서 아래로 순차적으로 진행되는 코드의 흐름에서 try~catch 문에서 예외를 처리하면서 순서를 건너뛰게 되는 상황이 발생하며 이는 자바 관련된 시험에 많이 다뤄지는 것을 봤습니다. 위의 코드는 1부터 순차적으로 출력됩니다. 1,2,3,4, 하지만 0/0에서 0으로 나눠지지 않기에 예외가 발생하며 5가 출력되지 않고 catch 구문으로 가서 6을 출력한 뒤 마지막으로 7을 출력합니다. 2번째 코드를 보겠습니다. ..
예외처리 예외처리라고 하면 예외가 날 구문을 작성하고 예외가 났을 경우 실행할 코드를 작성해 주는 아래와 같은 구문이 생각나게 됩니다. 저도 사실은 이게 다라고 생각했지만 예외처리 부분에서 꼭 알아야 할 내용들이 몇 가지 있다는 것을 알게 되었습니다. 1. 예외가 어디서 발생하고 어디서 처리되는지 2. 예외가 발생하는 위치에 따른 코드의 흐름 3. 예외의 종류와 범위 첫번째로 예외가 발생되고 처리되는 위치에 대해 알아보겠습니다. 우선 이 코드에 대해 설명하자면 method1에서 예외를 발생시키고 method2에서 예외를 처리했습니다. 그리고 method3 은 method1에서 발생한 예외를 전달받는 코드입니다. main에서 method1()을 호출해 보겠습니다. 예외처리가 안되었기 때문에 당연히 예외가 발생하였기..
생성자, Constructor 이전의 글에서 클래스, 객체지향이 무엇인가에 대해 다뤘습니다. 그리고 클래스의 객체를 정의하고 객체를 생성할 때 사용한다고 언급했습니다. 이 객체를 생성할 때 사용하는 것이 바로 생성자입니다. 생성자의 구조는 메서드와 비슷합니다. void나 리턴타입이 존재하지 않고 클래스명과 동일한 이름 가지게 됩니다. lecture_constructor con = new lecture_constructor(); 라는 명령어를 통해 객체를 생성하게 됩니다. 메서드를 수행할 때 명령어를 보면 main에서 ToString();이라는 명령어를 통해 메서드를 실행하게 됩니다. 마찬가지로 new라는 명령어를 통해 객체를 생성하면서 lecture_constructor();라는 메서드와 동일한 생성자를 수행해 객체를 만들게 됩니다...
클래스와 인스턴스의 차이? static 의 특징, new를 왜 써야 클래스 변수에 붙게 되는 static에 대해 조금 더 언급하고자 합니다. 사실 저도 static이라고 하면 클래스 변수와 인스턴스 변수를 구분하는 용도? 정도로만 알고 있었는데 메모리라는 측면에서 큰 차이가 있다는 것을 알게 되었습니다. 그중 static 이 들어간 클래스의 메서드와 변수의 경우 new 명령어를 쓰지 않고 바로 클래스명.변수 또는 클래스명.매서드를 쓸 수 있다는 것은 다 알고 있을 것입니다. 반대로 static 이 들어가지 않은 클래스의 메서드나 변수의 경우 반드시 new를 통해 객체를 생성한 후 해당 클래스의 변수나 메서드를 쓸 수 있었습니다. 이 클래스는 클래스 변수 a, b와 인스턴스 c, d를 가지고 있고 complie 시 클래스 변수 a 값이 5가 되고 다시 ++a를 통해 6이 ..
자바 클래스? 객체지향? 자바를 늘 객체지향 언어라고 말합니다. 그리고 클래스를 설계도 클래스를 통해 만들어진 객체를 제품이라고 언급합니다. 붕어빵 틀이 어쩌니 붕어빵이니 이러니 저러니 라고 하지만 솔직히 자바를 많이 공부한 입장에서는 다 맞는 말이고 쉽게 이해가 되지만 자바를 배우는 입장에서는 쉽게 이해가 가지 않습니다. 클래스를 일반적으로 아래와 같이 정의합니다. - 객체를 정의해 놓은 것 - 객체를 생성할 때 사용 - 데이터 타입 그리고 객체는 - 클래스를 구체화한 것 - 실제로 동작하는 것 - 메모리에 생성된 데이터 그리고 클래스를 구체화, 객체화한 것이 객체, 인스턴스라고 정의합니다. 여전히 무슨 말인지 모르겠습니다. 위와 같이 배열을 많이 봤을것입니다. 자바에서 배열을 선언하는 방법입니다. 사실 이렇게 new는 위에서..
자바 클래스 초기화 블럭 이전 글에서는 클래스 변수와 인스턴스 변수가 어떻게 선언되는지에 대해 알아봤습니다. 이번 글에서는 또다른 초기화 방식인 초기화 블럭에 대해 알아보려 합니다. 초기화 블럭은 문자 그대로 { }으로 구성됩니다. { } 안에 조금 더 긴 문장을 넣을수 있습니다. 명시적 초기화 역시 static을 붙인 클래스 변수와 아무것도 붙지 않은 인스턴스 변수가 있습니다. 이렇게 for문이나 if 문등의 긴 코드를 통해 초기화가 필요한 경우를 위해 사용됩니다. 클래스 변수의 초기화에도 순서가 있습니다. 기본 초기화가 1번 명시적 초기화(참조형 변수의 선언) 예를 들어 우리가 보고 있는 클래스 variable_lecture 의 객체를 만들기 위한 variable_lecture vl = new variable_lecture(..
자바 변수의 초기화, 초기화 블럭 이번 글에서는 자바의 변수들이 어떻게 초기화되는지 그리고 각 변수들(인스턴스 변수, 클래스 변수, 지역 변수)들의 초기화 순서에 대해 알아보겠습니다. 인스턴스 변수와 클래스 변수는 변수의 선언이 없을 경우 디폴트 값으로 지정되어 있습니다. 변수 a, b, c, d, e, f, g를 출력하면 이렇게 값을 초기화하지 않아도 인스턴스와 클래스 변수는 타입에 따라 디폴트 값으로 정해지게 됩니다. 그렇다면 초기화의 순서는 어떻게 될까요? 위에서 아래로 차례대로 a, b, c, d ~ h 순서로 될까요? 위의 코드의 a,b,c 의 값이 어떻게 될까요? 음... a는 초기화가 선언되지 않았으니 디폴트 값 0일 테고 b는 a에서 1 올린 값과 같아지니 b = 1 가 될 테고 c값은 1인 a를 다시 1 올린 값과 같아지..

반응형