[JAVA] 헷갈렸던거 정리(static, 생성자, 기본생성자, 초기화)

2022. 9. 9. 17:55·💻 개발/언어
728x90

1. static


[static 변수]

1. static 한 변수는 공유된다.

2. static 한 변수는 값을 저장할 수 있는 하나의 공간이 생성된다. -> 인스턴스가 여러 개 생성해도 static 한 값은 마지막의 값으로 결정된다.

 

[static 메소드]

1. static 한 메서드는 Class가 인스턴스화 되지 않아도 사용할 수 있다.

2. static 한 메서드에서는 static 한 변수만을 사용할 수 있다.

    public class VariableScopeExam {
        int globalScope = 10; 

        public void scopeTest(int value){
            int localScope = 20;            
            System.out.println(globalScope);
            System.out.println(localScope);
            System.out.println(value);
        }   
        public static void main(String[] args) {
            System.out.println(globalScope);  //오류
            System.out.println(localScope);   //오류
            System.out.println(value);        //오류  
        }   
    }

 

2. 생성자


클래스 변수명 = new 생성자()

 

 

[모든 클래스는 인스턴스화 될 때 생성자를 사용한다.]

  • 생성자를 프로그래머가 만들지 않으면  매개변수가 없는 생성자가 컴파일할 때 자동으로 만들어진다.
  • 매개변수가 없는 생성자를 기본 생성자라고 한다.
  • 생성자를 하나라도 프로그래머가 만들었다면 기본 생성자는 자동으로 만들어지지 않는다.

 

728x90

[생성자의 역할]

  • 객체를 생성하면서. 하고 싶은일들, 해야할 일들을 정의한다.(객체가 될 때 필드를 초기화하는 역할을 수행한다.)
//this.를 활용한 초기화 - Person 생성자 생성

class Person{
    int age;
    
    Person(int number) {
        this.age = number; 
    }
}

Person 클래스에서 Person 생성자를 만들어주었으며 이는 Person 클래스를 생성할 때 number 값을 정의하도록 세팅해둔것

[디폴트 생성자]

클래스가 생성될 때 프리 컴파일 단계에서 jvm이 생성자 존재 유무를 판단해서 디폴드 생성자를 만들어준다.

그러나 생성자를 하나라도 만들었다면, jvm이 디폴트 생성자를 만들지 않는다.

 

 

[자기 자신을 호출하는 생성자 키워드] 

기본 생성자를 호출하였을 때 name을 "이름 없음" , 숫자를 0으로 초기화 하기

 

이렇게 하면 중복으로 오류 발생

    public Car(){
        this.name = "이름없음";
        this.number = 0;
    }

 

[this 키워드를  사용하여 기본 생성자 호출 및 초기화 하기]

 public Car(){
        this("이름없음", 0);
    }
  • this괄호로 시작하면 자신의 생성자를 호출하는 것이다.
  • 자기 자신의 생성자를 호출함으로써 비슷한 코드가 중복돼서 나오는 것을 방지할 수 있다.

 

3. enum타입 열거형과, 상수(Final) 변수 선언의 차이


[상수 선언 방법의 문제점]

   public class EnumExam {
        public static final String MALE = "MALE";
        public static final String FEMALE = "FEMALE";

        public static void main(String[] args) {
            String gender1;
            
            genter1 = "나는 빡빡이"; //이게 가능해서 상수키워드 변수 선언은 사용을 잘 안함

            gender1 = EnumExam.MALE;
            gender1 = EnumExam.FEMALE;                  
        }
    }

 

[enum타입 사용]

enum Gender{
	MALE, FEMAIL;
}
Gender gender2;

    gender2 = Gender.MALE;
    gender2 = Gender.FEMALE;

특정 값만 가져야 한다면 열거형을 사용하는 것이 좋다.

 

 

혹시 더 좋은 방법이 있다면 댓글로 피드백 부탁드리겠습니다! 감사합니다.

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'💻 개발 > 언어' 카테고리의 다른 글

[SQL] varchar(50)은 몇 글자를 저장할 수 있을까?  (0) 2022.11.08
[JAVA] Super() 키워드 예제 / Super 부모, 자식  (2) 2022.09.09
[JAVA](모든 시도 해봄) / java.lang.ClassNotFoundException 오류 해결  (4) 2022.03.12
[JavaScript] 프로미스와 프로미스 API구조  (0) 2021.10.19
[Python] 중복단어 삭제하기(연속적으로 나오는 경우/ 전체 단어 중 삭제)  (0) 2021.09.03
'💻 개발/언어' 카테고리의 다른 글
  • [SQL] varchar(50)은 몇 글자를 저장할 수 있을까?
  • [JAVA] Super() 키워드 예제 / Super 부모, 자식
  • [JAVA](모든 시도 해봄) / java.lang.ClassNotFoundException 오류 해결
  • [JavaScript] 프로미스와 프로미스 API구조
foodev
foodev
이것저것 개발과 이것저것 리뷰 합니다.
    250x250
  • foodev
    개발 개맛집
    foodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (109)
      • 🌟🙇🏻‍♂️ 꼭 읽어봤으면 하는 글 (0)
      • 💻 개발 (76)
        • 설정 및 세팅 (4)
        • DB&서버&네트워크&암호 (12)
        • React (0)
        • JPA, Querydsl (14)
        • 알고리즘 (7)
        • 언어 (15)
        • 프레임워크 (14)
        • HTML, CSS (10)
      • ✍🏻 (33)
        • 회고록 (15)
        • 독서록 (7)
        • 일지록 (10)
        • 세미나 (1)
      • 💡 리뷰 (0)
        • 제품리뷰 (0)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
foodev
[JAVA] 헷갈렸던거 정리(static, 생성자, 기본생성자, 초기화)
상단으로

티스토리툴바