본문 바로가기

Programming language/Java

Java - 6 [try - catch, 인스턴스 변수 - 클래스 변수]

try-catch 예외처리

- 자바에서는 오류가 날 수 밖에 없는 코드가 존재 할수 있다.

예를 들면 사용자의 입력에 따라 다른데 배열에서 for문이 먼저 정의된

길이보다 초과해서 입력이 되었다거나, 입력 문자열의 크기가 너무 크다거나 다른 형태의

자료형으로 입력되었다거나 하는 형식이다.

 

이러한 문제를 해결하려면 예외처리가 필수적이다.

        try{
            // 오류를 발생 시킬 수 있는 코드
        } catch (Exception e) {
            // 오류가 발생한 경우 처리 할 코드
        }
실행 예외 발생 이유
ArithmeticException 0으로 나누기와 같은 부적절한 산술 연산을 수행할 때 발생
IllegalArgumentException 메서드에 부적절한 인수를 전달할 때 발생
IndexOutOfBoundsException 배열, 벡터 등에서 범위를 벗어난 인덱스를 사용할 때 발생한다.
NoSuchElementException 요구한 원소가 없을 때 발생한다.
NullPointerException null 값을 가진 참조 변수에 접근할 때 발생한다.
NumberFormatException 숫자로 바꿀 수 없는 문자열을 숫자로 변환하려 할 때 발생한다.

예외 키워드는 위와 같다.

 

        try{
            // 오류를 발생 시킬 수 있는 코드
        } catch (NullPointerException e) {
            // 오류가 발생한 경우 처리 할 코드
        } catch (IndexOutOfBoundsException e){
            // 오류가 발생한 경우 처리 할 코드
        } catch (IllegalArgumentException e){
            // 오류가 발생한 경우 처리 할 코드
        } catch (NoSuchFieldException e){
            // 오류가 발생한 경우 처리 할 코드
        } catch (NumberFormatException e) {
            // 오류가 발생한 경우 처리 할 코드
        } catch (ArithmeticException e) {
            // 오류가 발생한 경우 처리 할 코드
        }

인스턴스 변수 - 클래스 변수

인스턴스 변수

- 일반적으로 클래스 안에 변수를 정의하면 인스턴스 변수가된다.

즉, 클래스를 만들고 객체를 생성하면 해당 객체 안에 있는 변수가 인스턴스 변수가 되는 것이다.

해당변수는 클래스로 객체를 많이 생성해 내도 객체와 객체사이에는 공유하는 변수가 없다.

 

이러한 공유하는 변수가 바로 클래스 전체에서 적용되는 클래스 변수이다.

public static void main(String[] args) {
    Person p1 = new Person();
    p1.count++;

    Person p2 = new Person();
    p1.count++;
    p2.count = p1.count;

    Person p3 = new Person();
    p1.count++;
    p2.count++;
    p3.count = p2.count;

    Person p4 = new Person();
    p1.count++;
    p2.count++;
    p3.count++;
    p4.count = p3.count;

    System.out.println(p1.count);
    System.out.println(p2.count);
    System.out.println(p3.count);
    System.out.println(p4.count);
}

위 코드를 보면 객체가 생성된 수 만큼 count를 늘리고 싶은데 

객체를 생성할 때마다. count 변수를 늘리는 것을 볼수 있다.

 

클래스 전체에 적용되는 변수가 바로 클래스변수이다.

public class Person {
    static int count;
    
    public Person(){
    	count++;
    }
}
public static void main(String[] args) {
    Person p1 = new Person();
    Person p2 = new Person();
    Person p3 = new Person();
    Person p4 = new Person();
    System.out.println(Person.count);
}

- 이렇게 일반적인 클래스안의 인스턴스 변수에서 static 을 추가하면 해당 변수는 클래스 전체를 범위로 하는

변수가 된다.

 

따라서 상수를 좀 더 상수 답게 만드려면 static변수를 이용하여

클래스 전체에 해당하는 범위를 주어 상수를 만들수 있다.

 

public static final

public static final double PI = 3.141592653589793;
public static final double EULERS_NUMBER = 2.718281828459045;
public static final String THIS_IS_HOW_TO_NAME_CONSTANT_VARIABLE = "Hello";