그냥 프린트문이랑 같은 기능이지만 System.~ 에 너무 많은 기능이 있어 프로그램이 무거워진다.
추후 사용되는 프로그램들에는 println문을 잘 사용하지 않는다.
JVM의 기능 중
가비지 컬렉터 GC - 청소부
=> 간단하게 말하면 주소값을 잃은 변수들을 정리해준다.
너무 자주, 혹은 너무 오랜 기간 동안 청소하면 비효율적이다.
그냥 오토매틱으로 사용해도 무관하다.
필드의 수식에는 public / private 을 줄 수 있다.
( 공개 / 비공개 )
pritvate => The field Car.speed is not visible
private이라는 수식어가 붙은 변수는 Car클래스 외부에서 접근이 불가능
class안에 생성된 변수들을 멤버변수, 전역변수
멤버변수들 -> 모여있는 곳 필드
*ptivate 변수 값 우회해서 얻어오기
getter // setter 를 사용하는 이유
1. 외부에서 남의 데이터가 직접 접근하는 것을 막기위해
2. 세분화된 접근제어 가능
ex) getter 만 만들고, setter를 안 만들면? => 읽기전용
ex) setter 만 만들고, getter를 안만들면? => 쓰기전용
ex) 둘다 만들면? => 읽고쓰기 다 가능
ex) 둘다 안 만들면? => 비공개
3. 입력값에 대한 검증 가능
// getter 만들기
// 수식어는 public
// 반환유형은 내가 getter 되고자 하는 변수의 타입
// 메소드면 get+변수명 (첫글자를 대문자)
// 매개변수는 없음
// setter 만들기
// 수식어는 public
// 반환유형은 void
// 메소드면 set+변수명 (첫글자를 대문자)
// 매개변수 : set되고자 하는 변수와 같은 타입의 매개변수 한개
// 몸통 : { 내가 setter하고자 하는 변수 = 매개변수 }
자동으로 만들기 => Alt + Shift + s
생성자
생성자 (contructor) => 메소드이다.
=> 객체가 생성될 때(new) 반드시 한번 수행되는 메소드
* 오버로딩
이와 같이 함수명(메소드명)은 같은데, 매개변수가 다른것을 메소드 오버로딩이라고 한다.
메소드 오버로딩 : 매개변수가 다른 두개 이상의 함수를 정의하는 것
(오버라이딩이랑은 다르다.)
생성자의 특징
1. 수식어는 왠만하면 public
*2. 문법적으로 반환유형 자체가 없음
3. 얘도 메소드니까 오버로딩 가능
*4. 생성자 메소드의 이름은 클래스명과 완벽하게 같음
*2번과 4번이 반드시 지켜져야먄 컴파일러가 생성자로 인식한다.
생성자도 메소드며, 객체가 생성될때 다른 메소드들과 함께 heap영역에 저장이 된다.
* 기본생성자 : 매개변수가 없는 생성자
new를 사용해 만들때 생성
생성자는 대체로 초기값을 지정하기 위해 사용한다.
* 기본 생성자는 생성자를 하나도 정의하지 않으면
몸통이 비어있는 기본생성자를 컴파일러가 잠깐 끼어넣음
=> public Car(){}
* 생성자를 하나도만들지 않으면 컴파일러가 기본생성자를 자동으로 만든다.
* 하지만 매개변수 3개짜리 생성자를 우리가 만들었음 (사용자 정의 생성자)
그러면 컴파일러가 기분생성자를 만들어주는 서비스를 제공하지 않음
* 멤버변수, 멤버함수
클래스를 구성하는 요소로 클래스를 통해 객체를 생성하면
각 객체마다 새로운 인스턴스 변수, 함수들을 생성함
객체안에 인스턴스 되서 만들어진 변수들 => 인스턴스 변수
객체안에서 만들어진 변수 => 멤버변수
인스턴스 변수==멤버변수로 볼 수 있다.
변수
지역변수 : 메소드 내에서 생성, 메소드 종료될 떄 사라짐
멤버변수 : 클래스 내부에 정의, 객체가 생성될 떄 사용됨
인스턴스 변수 : 객체가 생성될 때 생성, 객체가 죽을 때 죽음
매개변수도 stack에 쌓이고, 위치적으로 보면 지역변수이다.
'Java > 자바 기반 웹 개발자 과정 필기' 카테고리의 다른 글
[200312.14일차] (0) | 2020.03.12 |
---|---|
[200311.13일차] 상속 (0) | 2020.03.11 |
[200310.12일차] static (정적 변수,클래스변수) && 변수 정리 (0) | 2020.03.10 |
[200306.10일차] Java 10 - 클래스 && 객체 3 (0) | 2020.03.06 |
[200305.9일차] Java 9 - 클래스 && 객체 2 (0) | 2020.03.05 |
[200304.8일차] Java 8 - 클래스 & 객체 1 (0) | 2020.03.04 |
[200303.7회차] Java 7 - 배열 복습 &정렬 (0) | 2020.03.03 |