라벨이 클래스인 게시물 표시

[JAVA] enum 클래스

enum을 사용하는 이유를 정리하면 아래와 같다. 1. 열거체를 비교할 때 실제 값과 타입을 모두 체크한다. 2. 열거체의 상수값이 재정의 되더라도 다시 컴파일할 필요가 없다. 3. 코드가 단순해진다. 4. 인스턴스 생성과 상속을 방지한다. 5. 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 나타낼 수 있다. 정의 및 사용 방법 enum 키워드를 사용하여 열거체를 정의한다. //문법 enum 열거체이름 { 상수1이름 , 상수2이름 , ... } //예제 enum Fruit { APPLE , BANANA , ORANGE , WATERMELON }   열거체를 사용 방법 //문법 열거체이름 . 상수이름 //예제 Fruit . APPLE 상숫 정의 및 추가 열거체의 첫 번째 상수 값은 0부터 설정되며 그 이후로 바로 앞의 상수값 보다 1만큼 증가되며 설정된다. 추가적으로 불규칙한 값을 상수값으로 설정하고 싶으면 상수의 이름 옆에 괄호(())을 추가하고 그 안에 원하는 상수값을 명시할 수 있다. 이때 주의할 점은 불규칙한 특정 값을 저장할 수 있는 인스턴스 변수와 생성자를 다음과 같이 별도로 추가해야만 한다. //예시 enum Fruit { APPLE ( 30 ), BANANA ( 10 ), ORANGE ( 22 ), WATERMELON ( 5 ); private final int value ; Fruit ( int value ) { this. value = value ; } public int getValue () { return value ; } } 대표적인 Enum 메소드 static E values()  해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환함. static E valueOf(String name)   전달된 문자열과 일치하는 해당 열거체의 상수를 반환함. protected void finalize()   해당 Enum 클래스가 final 메소

[JAVA] 클래스변수(class variable/Static Field), 인스턴수변수(instance variable/Non-Static Field)

JAVA 클래스변수(class variable), 인스턴수변수(instance variable) java에서의 클래스는 변수와 메서드를 그룹핑해서 가지고있는 묶음이다.  클래스는 일종의 설계도와 같은 역할을 한다. JAVA 클래스는 선언위치에 따른 변수의 종류가 존재한다. class안에 정의된 변수를 멤버변수라고하며 멤버변수는 클래스변수와 인스턴수변수 2가지로 나누어진다. 인스턴스변수(instance variable) = 각각의 클래스가 가지고있는 변수(개별적인 속성) -클래스 영역에 선언되며 클래스의 인스턴스를 생성할 때 만들어진다. 그렇게 때문에 인스턴스 변수의 값을 읽어오거나 저장하기 위해서는 먼저 인스턴스를 생성해야한다. 인스턴스 생성방법 => 클래스명 변수명 = new 클래스명(); -인스턴스는 서로 독립적인 저장공간 즉 각각의 메모리 공간을 생성해서 각각의 서로 다른 값을 갖는다. 인스턴스마다 고유한 상태를 유지해야하는 경우 인스턴스변수로 선언한다. 인스턴스변수는 인스턴스가 생성될 때 마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로 항상 공통된 값을 갖는다. 다른 폴더에 있는 메소드의 경우 파일을 import해줘야 사용이 가능하다. main메서드 밖에서 선언된 메서드는 다른 클래스에서도 클래스이름.메서드명으로 사용이 가능하다. 또한 매개변수도 전달 가능하다. 클래스 변수(class variable) =공유변수라고도 하며 공통속성을 가지는 변수 (고정값으로 사용) -클래스 영역에 선언되며 클래스가 메모리에 올라갈때 생성된다.  static 클래스(클래스 변수)의경우 저장공간을 만들지 않더라도 컴파일러 과정중에 자동으로 저장공간을 만들어주지만 메모리 공간이 1개이기때문에 값을 1개만 저장가능하다. -클래스 변수는 인스턴스 변수와 달리 new연산자를 사용하여 인스턴스를 생성하지 않고도 언제라도 바로 사용할 수 있으며  참수변수명.클래스변수  또는  클래스이름.클래스변

JAVA 클래스(class)와 인스턴스(instance)

JAVA 클래스(class)와 인스턴스(instance) 클래스는 설계도라고 생각 할 수 있고 인스턴스는 제품이라고 생각할 수 있다. 클래스는 서로 연관된 데이터와 메소드를 묶어놓은 설계도(그룹)이다. 이러한 클래스를 가지고 new연산자와 생성자함수를 통해 각각의 변수에 클래스를가지고 만들어진 제품(인스턴스)를 담을 수 있다. 즉 인스턴스는 하나의 클래스를 복제해서 서로 연관된 데이터의 값과 메소드를 가진 복제본을 만드는것이다. 이렇게 인스턴스로 생성되는 클래스의경우 내부에서 static키워드를 사용하면 오류가 발생한다. 그이유는 클래스를 통해 생성된 인스턴스는 독립된 저장공간을 가지고있기때문이다.  static키워드는 공통으로 사용하고자하는 값 또는 메소드에 사용되는 키워드이기때문에 각각의 독립된 저장공간을 가지고있는 인스턴스에 사용할 수 없다. 인스턴스화가 가능한 클래스가 존재하고 불가능한 클래스가 존재한다. java api documentation에서 확인하기 java는 메소드로 구조를 잡고 메소드와 변수를 그룹핑해서 클래스로 구조를 잡고 클래스를 복제한 인스턴스를 통해 또다른 구조를 만드는식으로 코드를 작성해 나갈 수 있다.