class 클래스 이름{
맴버변수;
void 메서드이름(){
...
}
}
-> class라는 예약어와 클래스의 이름을 명시하고 {...}블록을 구성한다.
-> 맴버변수는 여러개 존재할수 있다. 이 때, 값을 선언과 동시에 할당할 수도 있고,
객체를 통해 간접적으로 할당할 수도 있다.
-> 메서드는 여러개 존재할 수 있다.
-> 클래스 안에 포함된 맴버변수와 메서드를 특성에 따라 그룹화하기 위한
기법이 클래스를 작성하는 것이라고 이해 할수있다.
객체의 선언
클래스이름 객체이름 :
객체의 할당
객체이름 = new 클래스이름();
선언과 할당의 통합
클래스이름 객체이름 = new 클래스이름();
객체 안에 포함된 변수나 메서드는 점(.)으로 연결하여 접근한다.
-> 값 접근
객체이름.맴버변수;
->객체 안에 포함된 변수의 값을 다른 변수에 복사하는 경우
변수 = 객체이름.멤버변수;
->객체 안에 포함된 변수의 값에 다른 값을 대입하는 경우
객체이름.맴버변수= 값;
->객체 안에 포함된 메서드를 호출하는 경우
객체이름.메서드이름();
->객체 안에 포함된 메서드의 파라미터를 전달하는 경우
객체이름.메서드이름(값1 , 값2, . .);
->객체
같은 클래스를 통하여 생성된 객체라 할지라도 서로 다른 값을 대입하면 서로 독립적인 형태로 존재하게 된다.
std.name="이순신";
std.age=20;
std2.name="홍길동";
std2.age=30;
값이 대입되지 않은 맴버변수를 갖는 클래스
-> 클래스란 객체를 위한 틀을 제공하는 것이기 때문에 클래스 작성과정에서 맴버변수에
대입된 값은 객체를 통하여 맴버변수의 값을 지정하기 전까지 사용될 "기본값"으로서 의미이다.
-> 객체를 통하여 새로운 값이 대입되면 클래스 작성시에 맴버변수에 대입한 값은 의미를 잃어버리게 된다.
-> 때문에 일반적으로 클래스 작성시에는 맴버변수에 값을 지정하지 않는다.

java에서 null은 참조 변수가 어떤 객체도 가리키지 않음을 나타내는 단어
기본 데이터타입에 쓸수 없다.
게본 데이터타이에서 쓸수 없다
int null; // errer
double b =null // errer
String c = null //가능
imt[] d = null // 가능
자기 자신을 의미하는 키워드
클래스 안에서 this를 사용하여 "자기자신"을 표현한다.
class Student{
String name;
public void setName(){
String name;
name = "자바학생"; //결과 null
}
}


-> 맴버변수와 지역변수가 동일한 이름으로 공존할 경우
유효성 범위가 작은 변수가 우선적으로 인식된다.
-this를 사용하여 지역변수와 멤버변수 구분하기
class Student{
String name;
public void setName(){
String name;
name = "자바학생";
this.name = "홍길동"; //결과 홍길동
}
}
파라미터도 해당 메서드 안에서만 유효한 지역변수의 일종이다.
파라미터를 사용하여 멤버변수의 값을 간접적으로 설정하고자 할경우, 변수의 이름을 서로 다르게
사용하는 것 보다는 이름은 동일하게 지정하고 this키워드를 사용하여 맴버변수와 파라미터를 구별하는 것이
java언어 일반적이 규칙이다.
class Student{
String name;
public void setName(String name){
this.name =name;
}
}
-> 모든 맴버변수 앞에는 this 키워드를 사용하여 멤버변수임을 직관적으로 표시하는 것이 소그코드의
가독성을 위하여 바람직하다.