-
[JAVA9] 객체지향 모델링 심화비전공자 공부일기/:: JAVA 2020. 3. 11. 16:45
한국기술교육대학교 온라인평생교육원
모던웹개발을 위한 JAVA9 프로그래밍
8회차 수업학습목표
1) 정적 변수와 정적 메소드 - static 변수와 static 메소드
2) 패키지와 임포트 - package의 개념과 import의 사용법
사전지식
- 정적변수&정적메소드: 클래스 레벨에서 바로 사용할 수 있는 변수와 메소드
- 패키지: 자바에서 클래스를 계층적으로 저장하고 관리하기 위해 사용하는 개념 / .(점)을 구분자로 계층구성
** 강사님 설명
static
- 클래스에 선언된 메소드나 멤버변수는 반드시 객체화시켜야 사용 가능
그런데 객체를 만들지 않고(인스턴스화 시키지 않고) 메소드를 사용하고 싶을 때 static을 사용한다.
>> 단순 반복 처리작업을 해야 할 경우 종종 사용
static 상수
- static 변수는 주로 상수로 많이 사용됨
(** 문법적으로 상수는 대문자로 선언하며, 앞에 final 이라는 키워드를 붙여준다)
static 초기화 블록
- 클래스 내부에 선언됨(아래 참고)
public class SampleDAOClass { static { Class.forName("oracle.jdbc.driver.OracleDriver"); } }
- 생성자는 객체를 생성할 때 수행
- static 초기화 블록은 클래스가 최초로 메모리에 로딩될 때 수행
그 최초로 로딩하는 순간에 무언가 수행하라는 명령을 위해 static 초기화 블록이 사용된다.
static 메소드 - 팩토리 메소드
- static 메소드는 흔히 팩토리 메소드를 만드는 데 사용된
- 클래스의 새로운 인스턴스를 반환하는 static 메소드
- 불필요하게 새 객체를 생성하는 대신 공유 객체를 반환하는 것도 가능
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
>> getCurrencyInstance() 메소드가 팩토리 메소드에 해당
new 키워드 말고 객체를 생성하는 방법이다.
패키지 package
- 자바에서 말하는 패키지란, 연관된 클래스를 한 패키지에 넣어두는 것을 말한다.
- 작업을 조직화하고, 다른 사람이 제공한 코드와 라이브러리를 분리
- java.lang, java.util, java.math 등과 같은 표준 자바 라이브러리도 모두 패키지로 구분
패키지명을 정의하는 방법
- 패키지 이름은 java.util.regex처럼 점(.)으로 구분된 식별자 목록이다
- 패키지 이름에서 유일성을 보장하기 위해 인터넷 도메인을 역순으로 사용한다.
- 클래스를 패키지 안에 넣으려면 소스 파일의 첫문장에 package문을 추가한다.
클래스 패스 class path
Jar 파일
- 클래스 파일을 포함하는 아카이브 파일 - zip파일과 구조가 같음
- 클래스 파일을 파일시스템에 바로 저장하지 않음
- 라이브러리 뿐만 아니라 프로그램을 묶는데도 사용됨
Class path
- 해당 파일 위치를 컴파일러와 JVM에게 알려줌
- 프로젝트에서 라이브러리 JAR 파일을 사용할 때 클래스 패스 지정
import 문을 사용하면 전체 이름 없이도 클래스 사용 가능
- 해당 파일 위치를 컴파일러와 JVM에게 알려줌문을 사용하면,
풀네임인 java.util.Random를 명시하지 않아도 Random만 써서 사용할 수 있음
- 와일드카드 사용 가능 - java.util.*;
Static import 정적 임포트
import static java.lang.Math.*;
sqrt(pow(x,2) + pow(y,2));
// 즉 Math.sqrt와 Math.pow를 의미
클래스 만들어보기
(1) 데이터 구조를 정의하는 모델 클래스
디렉토리에서
src --- 루트패키지
패키지명
(2) static method를 포함하는 유틸리티 클래스
정리
static에 대한 장점은 크게 두 가지이다.
1) static을 쓴 변수나 메소드는 객체생성 없이 모든 객체가 아무런 제약없이 공유할 수 있다.
2) static을 쓴 변수는 값을 공유하므로, 연속적으로 그 값의 흐름을 이어갈 수 있다.
다시 말해서 일반변수는 객체 생성시마다 그 값이 초기화되지만, 정적변수는 객체생성을 하지 않으므로 다른 객체에서 계속적으로 이어서 그 값을 변화시킬 수 있다.'비전공자 공부일기 > :: JAVA' 카테고리의 다른 글
[Java] 배열 연습문제 - 짝수만 입력받아 출력하기 (0) 2020.04.14 [Java] 배열 연습문제 - 정수를 여러개 입력받아 순서대로, 거꾸로 출력하기 (0) 2020.04.14 [JAVA9] 상속 (0) 2020.03.18 [JAVA9] 객체지향 모델링 (0) 2020.03.11 [비전공자 눈높이] 자바, 웹+자바 관련 용어 심플정리 (0) 2019.07.02