컴파일러가 가장 먼저 메모리에 할당해준다.
일반 메소드를 static 메소드에서 사용하기 위해서는 아래의 두 가지 방법이 존재한다.
※ 메소드 실습 시 계속 실수하는 부분
메소드 선언 시 타입을 잘 지켜주지 않는다.
코드를 짜고 나서 리뷰를 하지 않는다.(혹은 더 좋은 코드로 수정하지 않는다.)
charAt()와 indexOf() 메소드를 잘 활용하지 못한다.
클래스를 선언한다면 그 안의 변수와 메소드는 항상 공통요소를 가진 것을 선언한다.
한 번 선언 시 효율성, 생산성 증가
클래스명 변수; => (메모리 할당되지 않은 상태)
메모리 할당되어야 함.
클래스명 변수 = new 클래스명();
필드를 메모리에 올리고 올라간 필드의 주소값까지 가져오는 메소드.
메소드는 리턴값이 있을 경우 사용한 부분 통째로를 값으로 본다.
그러므로 클래스명( ) 라는 메소드도 할당된 필드의 주소값으로 보자.
Monkey.eat(banana);
객체화(instance)
객체(instance variable)를 만드는 작업, 추상적인 개념을 구체화시키는 작업
📌 클래스명 객체 = new 생성자( ); 추상 -> 구체화 주소값※ . (마침표) : 하위연산자, 멤버변수 접근 연산자, 닷 연산자, 점 연산자
주소값 뒤에서만 사용이 가능하며, 해당 주소를 참조(접근)하는 명령어이다.
일반값 뒤에는 사용할 수 없음.
static
모든 객체가 공유해야하는 필드일 경우에 사용한다.
클래스 하나 당 한 개만 생기기 때문에 객체로 접근하지 않고 클래스로 접근한다.
클래스 이름 뒤에 소괄호가 있는 형태
메소드와 기능이 똑같지만 메소드라고 부르지 않는다. 생성자는 리턴이라는 기능이 존재하지 않기 때문이다.
해당 클래스의 필드를 메모리에 할당한 후 부여된 주소값을 가져온다.
(주소값 = 이것이 생성자가 리턴해야하는 값)
앞 글자가 소문자면 메소드();
앞 글자가 대문자면 생성자();
지역변수 : 지역이 종료되면 변수가 메모리에서 종료.
전역변수 : 자바의 가장 큰 영역은 클래스, 그 클래스에서 선언된 변수는 전역변수 -> 자동 초기화
과거에는 전역변수밖에 없었다.
전역변수는 프로그램이 종료되면 메모리에서 해제됨.
프로그램이 종료되기 전까지는 당장 안 써도 메모리에 존재 -> 메모리 낭비
=> 지역변수 : 메모리를 효율적으로 사용, 그 지역이 끝나면 메모리에서 해제
초기화
기본 생성자 선언 아니고 사용
매개변수가 없는 생성자이며, 클래스 선언 시 자동으로 선언된다.
A a = new A();
-> 클래스에는 A( ){ }
가 자동으로 선언. 생략됨.
사용자가 직접 생성자를 선언하게 되면 기본 생성자는 없어진다.
필드에 생성자가 선언되어 있으면, 기본 생성자는 생성되지 않는다.
메소드의 한 가지 성질
구분점을 이름으로도 기준을 삼을 수 있지만, 매개변수로도 가능하다.
this
(우리가 직접 선언할 필요가 없는 매개)변수
자바에서의 전역변수는 this변수로 접근
접근한 객체가 가지고 있는 주소값
필드에 접근한 객체가 누구인지 알아야 해당 필드에 접근할 수 있다.
이 때 접근한 객체가 가지고 있는 필드의 주소값을 this라는 변수에 자동으로 담긴다.