Ch06: Methods: A DEEEP DARK⭐️ LooK

static Methods, Fields and Class Math

static 메소드 (클래스 메소드)

  • static 메소드 안에서는 인스턴스 변수 접근이 불가능하다. 클래스 변수는 접근이 가능하다.
  • static 메소드는 유틸리티 성 메소드를 작성할 때 많이 사용된다.

Math 클래스 메소드

  • 클래스 Math 는 수학적 계산을 수행하는 static 메소드들을 제공한다.

Math 클래스 static 상수 PI와 E

  • 접근 지정자가 public, finalstatic 이다.
// abs(x) : x의 절대값.
abs(23.7) == 23.7
abs(0.0) == 0.0
abs(-23.7) == 23.7

// ceil(x) : x보다 큰, 가장 작은 정수.
ceil(9.2) == 10.0
ceil(-9.8) == -9.0

// floor(x) : x보다 작거나 같은, 가장 큰 정수.
floor(9.2) == 9.0
floor(-9.8) ==  

// 이 밖에도 cos, exp, log, max, min, pow, sin, sqrt, tan이 있다.

클래스의 필드

  • static 변수들과 인스턴스 변수들을 말한다.

static 변수

  • 클래스의 모든 객체는 static 필드를 공유한다.

인스턴스 변수

  • 클래스의 객체 각각은 메모리에 별도의 인스턴스 변수를 가진다.

Declaring Methods with Multiple Parameters

  • 메소드는 한 가지 값만 반환할 수 있다. 단, 반환값이 다양한 값의 인스턴스 변수를 가지는 클래스에 대한 참조값일 수 있다.
  • 클래스의 한 가지 이상의 메소드에서 사용에 필요할때나, 메소드 간의 호출 사이에서 프로그램이 값을 저장해야 할때, 변수가 필드에 선언되어야 한다.

Notes on Declaring and Using Methods

non-static 메소드

  • 같은 클래스의 어떠한 메소드직접 호출이 가능하다.
  • 같은 클래스의 어떠한 필드직접 조작이 가능하다.

static 메소드

  • 오직 같은 클래스의 다른 static 메소드만 직접 호출이 가능하다.
  • 같은 클래스의 static 필드만 직접 조작이 가능하다.
  • 클래스의 non-static 멤버에 접근하려면, 오직 그 클래스의 객체의 참조를 이용해야 한다.

Method-Call Stack and Activation Records

프로그램-실행 스택(메소드-콜 스택)

  • 메소드 호출의 연속이다. main() → mA() → mB()

스택 프레임

  • 각각의 스택 프레임은 호출한 메소드로 돌아가기 위한 주소와 지역 변수를 가진다.

Secure Random-Number Generation

난수 생성기

  • class Random
    • java.util 패키지에 존재한다.
    • 결정론적 난수이다.
    • 예측이 가능하다.
  • class SecureRandom
    • java.secure 패키지에 존재한다.
    • 비결정론적 난수이다.
    • 예측이 불가능하다.
  • Math.random
    • 0.0<x<1.00.0 < x < 1.0
secureRandom randomNumbers = new SecureRandom();
int randomValue = randomNumbers.nextInt(3); // range 0 ~ 2

A Game of Chance; Introducing enum Types

enum

  • 서로 연관된 상수들의 집합이다.
  • enum 형 변수에는 오직 해당 enum 에 선언된 상수만 할당 가능하다.
  • 자바는 enum 형 상수와 int 형 상수의 비교를 허용하지 않는다.

Scope of Declarations

기본 범위 규칙

  • 매개 변수 범위는 메소드의 바디이다.
  • 지역 변수 범위는 선언이 등장하는 곳부터 블록의 마지막까지이다.
  • for 문 헤더의 초기화 구역 안에 선언된 지역 변수의 범위는, for 문의 바디와 헤더 안의 다른 표현들이다.
  • 메소드와 필드의 범위는 클래스의 전체 바디이다.
  • 어떠한 블록도 지역 변수를 가질 수 있다.
  • 만약 메소드의 지역 변수와 매개 변수가 클래스의 필드와 같은 이름을 가진다면, 필드는 블록이 실행 종료할 때까지 "가려진다". 이러한 것을 shadowing이라 한다.

Method Overloading

  • 같은 클래스 같은 이름의 메소드가 존재하도록 하는 것이다.
  • 다른 매개 변수 집합을 가져야 한다.
  • 같거나 비슷한 일을 하지만, 매개 변수의 자료형이 다를때 사용한다.
  • 컴파일러는 메소드들을 시그니쳐로 구별한다.
    • 메소드의 이름
    • 매개 변수의 수, 자료형, 순서
    • 반환형으로 구별할 수 없다.

좋은 웹페이지 즐겨찾기