클래스와 객체
  • 클래스는 타입이다. 집이 아니라 집의 설계도이다. 즉 실체가 아니다.
  • 따라서 클래스의 데이터 필드에 데이터를 저장할 수는 없고, 클래스의 맴버 메서더를 실행할 수도 없다.
  • new 명령으로 해당 클래스 타입의 객체를 만든 후, 그 객체에 데이터를 저장하고, 메서드를 실행하는 것이다.
  • 하나의 예외가 존재하는데 그것이 static 이다.
static 맴버는 클래스 안에 실재로 존재하면 객체에는 존재하지 않는다.
왜 main 메서더는 반드식 static 이어야하는가?

메인은 프로그램에 출발점이기때문에 누군가가 객체를 생성할 수 없기때문에

static 메서드/필드의 용도는?
  • main 메서드
  • 상수 혹은 클래스 당 하나만 유지하고 있으면 되는 값(혹은 객체) ex) Math.PI System.out
  • 순수하게 기능만으로 정의되는 메서드, 대표적인 예로는 수학함수들 ex) Math.abs(k) Math.sqrt(n)