JAVA기초 -11

아기코딩단2·2022년 4월 3일
0

non-static 과 static 변수를 언제써야할까?
static 공통적으로 사용하는 경우에 사용
non-static 은 instance마다 개별적으로 관리하는 경우에 사용

public static final int GUEST = 0;
조회용으로 사용할 변수는 이렇게 public으로 공개해도 된다
그리고 각 인스턴스마다 공통으로 사용할 거면 static 으로 쓰면 된다
보통 상수 변수는 public static final 임
패키지 멤버에는 static 이 안붙는다.
import하게 되면 앞에 class 명을 생략해도 된다. 왜냐하면 import static 명령문에서 변수의 소속을 이미 밝혔기 때문에 클래스 이름을 적을 필요가 없다. 근데~~!! import 안하고 쓰면 클래스명 붙여서 써야한다~

static 이 안붙은 메서드를 호출하려면 객체 생성 후 호출해야한다.
HEAP은 인스턴스 변수가 생성되는 곳

static method 는 this 라는 내장변수 사용할 수 없음
instance method는 local variable table에 기본적으로 내장변수 this 가 존재한다.

컴파일러가 자동으로 this 만들기 때문에 우리가 this 선언하면 안됨

인스턴스 필드가 존재하지 않더라도 heap에 클래스 정보를 담은 instance가 생성된다(이거 원래 항상 만들어짐)
즉 new 했을 때 인스턴스 필드가 존재하지 않을 때라도 클래스 정보(타입 정보가 더 맞는 말임)를 담은 최소 메모리가 만들어진다.
즉 new 했을 때 인스턴스가 안만들어지는 경우는 없다

static 메서드에 접근할 때는 클래스 이름으로 접근해야함 즉 객체 주소를 담은 변수(레퍼런스)로 접근 하면 올바른 접근이 아님

모든 인스턴스 변수는 this 내장 변수가 있다. 여기에는 유효한 값이 들어가야함 null 이런 거 들어가면 나가리다

null의 뜻 주소 없음. 이라는 뜻
NullPointerException 의 오류는 인스턴스를 생성안했다는 거임
this 는 넘어오는 주소값을 가짐/ 인스턴스 메서드에서는 this 생략가능 자동으로 this 붙여줌
파라미터랑 인스턴스 변수의 이름이 같을 경우 가까이 있는 애를 가리킴 그래서 중복되는 경우에는 인스턴스 변수 앞에 this. 붙여주면 돰

메서드는 method area에 하나만 존재한다.
로컬변수를 쓸 때는 항상 초기화 시켜야함

설계도를 사용하는 그 시점에 Method Area 에 class 가 로딩된다

인스턴스 변수는 내장변수 this 가 항상 만들어짐

로컬변수는 자동 초기화가 안되지만 인스턴스 변수는 자동으로 초기화된다 레퍼런스는 null인데 2진수로 표기하면 0임

method는 metod area에 존재한다

인스턴스를 사용하지 않는 메서드는 걍 스태틱 메서드로 만들자ㅇㅇ 보통 파라미터 값을 받아서 가공해서 리턴하는 애들
특정 인스턴스의 변수를 다루는 것이 아니라
외부에서 전달한 파라미터 값을 가지고 작업을 수행하는 메서드인 경우

클래스 메서드로 정의하면 사용하기 편하다!

static 메서드는 new 명령어 사용해서 쓸 필요 없다

this 객체는 주소를 갖고있는 변수다~Heap 에 있는 new 로 인스턴스의 주소

static method/ instance method 어떨 때 구분하는 가 하면 그냥 instance 안에 잇는 애들 쓸 거면 instance method쓰면 되고 아니면 static method 쓰면 된다

생성자는 void 같은 거 붙이면 안됨 리턴타입이 없다 () <== 이게 생성자를 호출한 거임

파라미터가 없는 생성자를 default constructor 이라고 말함 생성자이름은 클래스 이름과 같아야하고 리턴 타입이 없어야한다. 기본 생성자는 무조건 호출해야한다.

자바의 모든 클래스는 무조건 생성자가 하나 이상이 있다.

생성자는 s3.Score(); 이런식으로 따로 호출 할 수 없다.
생성자가 한 개라도 있으면 컴파일러는 기본 생성자를 만들어 주지 않는다. 즉 Score(-)이렇게 있으면 default constructor(Score()<=이렇게 생긴 거) 만들어 주지 않음

기본 세팅을 제공하기 위해 생성자를 사용한다.(생성자 안에서 기본적으로 설정하라~)
즉 생성자는 뭔가 기본 값으로 세팅해주는 그런 느낌 인스턴스 생성하자마자 자동으로 호출

파라미터를 받을 생성자가 없으면 컴파일 오류 뜸

생성자는 new 명령어 실행할 때 자동으로 나오는 거지 이후에 따로 호출 할 수 없음!!!!!!
클래스 로딩의 순간 : 클래스 코드를 사용하는 시점에 메모리에 로딩된다. 선언할 때는 클래스를 로딩하지 않는다.

static 메서드는 this 가질 수없음
인스턴스 메서드만

profile
레거시 학살자

0개의 댓글