본문 바로가기

STUDY/국비과정

[JAVA 웹 개발 공부] 국비지원 11일차 - 패키지, import문, 정적 멤버(static member), Math 클래스

패키지(package)

 

패키지는 폴더와 동일한 개념이다. 관계가 밀접한 클래스와 인터페이스를 묶은 단위이다. 

클래스 관리가 편해지며, 클래스 간 이름 충돌을 방지하기도 한다.

또한, 패키지는 패키지 내에 선언된 클래스에 대하여 접근 보호 기능도 있다.

 

+) 패키지이름 명명 규칙

패키지명이 중복되지 않도록 회사의 도메인 이름 역순으로 패키지 이름을 지어준다.

 

 

import문

 

코드를 작성할 때 다른 패키지의 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 한다.

import문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다. 

컴파일 시에 컴파일러는 import문을 통해 소스파일에 사용된 클래스들의 패키지를 알아 낸 다음, 모든 클래스 이름 앞에 패키지명을 붙여 준다.

import 패키지명.클래스명;

import 패키지명.*;

 

+) 이클립스 import문 자동완성

클래스안 우클릭 > Source > Organize imports

Ctrl + Shift + O

 

 

정적 멤버(static member)

 

1. 정적 멤버(static member)

프로그램을 작성하다보면 여러 개의 객체가 하나의 변수를 공유해야 되는 경우가 있다. 이러한 멤버를 정적 멤버(static member) 또는 클래스 멤버(class member)라고 한다. 필드를 정의할 때 앞에 static을 붙이면 정적 멤버가 되고, 메소드 앞에 static을 붙이면 정적 메소드가 된다.

 

2. 인스턴스 멤버 vs 정적 멤버

클래스의 멤버는 인스턴스 멤버와 정적 멤버로 나누어진다. 동일한 클래스를 이용하여 많은 객체들이 생성될 때 각각의 객체(인스턴스)들은 자신만의 필드를 가진다. 이들 필드는 인스턴스마다 별도로 생성되기 때문에 인스턴스 변수(instance variable)라고도 한다. 각 객체는 이들 변수에 대하여 독립적인 기억 공간을 가지고 있으며 각기 다른 값을 가질 수 있다.

정적 변수(class variable)는 클래스당 하나만 생성되는 변수이다. 정적 변수를 만들려면 변수를 정의할 때 앞에 static을 붙이면 된다. 정적 변수는 하나의 클래스에 하나만 만들어지고 동일한 클래스로 생성된 모든 객체들은 하나의 정적 변수를 공유한다.

 

3. 정적 변수의 생성 시기

정적 변수는 객체의 생성과는 상관없이 클래스가 자바 가상 기계에 적재되는 순간 생성된다. 객체가 사라져도 정적 변수는 없어지지 않는다. 정적 변수는 프로그램이 종료되어야 비로소 소멸된다.

반면에 인스턴스 변수는 객체가 생성되어야 비로소 만들어진다. 또한 객체가 소멸되면 인스턴스 변수도 없어진다. 인스턴스 변수는 객체 생성 후에만 사용이 가능하다.

 

4. 정적 메소드

변수와 마찬가지로 메소드도 정적 메소드로 만들 수 있다. 정적 메소드도 정적 변수와 마찬가지로 static 수식자를 메소드 앞에 붙여서 만든다. 정적 메소드의 예는 Math 클래스에 들어 있는 각종 수학 메소드들이다. 이들 수학 메소드들은 정적 메소드로 정의되는데 실수의 제곱근을 구하는데 Math 클래스의 객체를 생성할 필요가 없기 때문이다.

 

 

Math 클래스

 

Math 클래스는 기본적인 수학계산에 유용한 메서드로 구성되어 있다.

메서드 설명 예제 결과
abs() 주어진 값의 절대값을 반환한다. int i = Math.abs(-10);
double d = Math.abs(-10.0)
i = 10
d = 10.0
// double, float, int, long
ceil() 주어진 값을 올림하여 반환한다. double d = Math.ceil(10.1);
double d2 = Math.ceil(10.000015);
d = 11.0
d2 = 11.0
// double
floor() 주어진 값을 버림하여 반환한다. double d = Math.floor(10.8);
double d2 = Math.floor(-10.8);
d = 10.0
d2 = -11.0
// double
round() 소수점 첫째자리에서 반올림한 정수값을 반환한다. long l = Math.round(1.2); l = 1
// double, float
max() 주어진 두 값을 비교하여 큰 쪽을 반환한다. double d = Math.max(9.5, 9.5001); d = 9.5001
// double, float, int, long
min() 주어진 두 값을 비교하여 작은 쪽을 반환한다. double d = Math.min(9.5, 9.5001); d = 9.5
// double, float, int, long
random() 0.0 ~ 1.0범위의 임의의 double값을 반환한다. double d = Math.random(); 0.0 <= d < 1.0
// double