티스토리 뷰
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 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday