글 작성자: 취업중인 피터팬
728x90
기본 환경
JDK : 1.8.0_261 버전
JRE : 1.8.0_261 버전
JAVA VERSION : 8 업데이트 261
Eclipse IDE VERSION : 2020-06버전

 

 

목표

자바에서 관리하는 패키지 속성에 대해 이해한다.


 

 

패키지

패키지를 먼저 보면서 설명을 해드리겠습니다.

이번에 주목해야 할 클래스와 패키지는 PackageMain.java, CommonUtil.java, ex09package.kosmo.util 입니다. 먼저 설명해 드릴것은 패키지 속성입니다. 윈도우 탐색기에서 패키지를 찾아보겠습니다.

 

다음과 같이 ConnonUtil 파일은 package패키지 하위 kosmo하위 util폴더에 있습니다. 그래서 PackageMain.java 파일에서 import를 kosmo.util만 해주면 될거 같지만 자바는 하위 패키지로 인식하지 않고 하나의 다른 패키지로 인식하기 때문에 풀 패키지 명을 임포트 해주어야 합니다. 이제 코드를 봅시다.

 

코드

 

PackageMain.java

package ex09package;

import java.util.Date;

import ex09package.kosmo.util.CommonUtil;

public class PackageMain {

	public static void main(String[] args) {
		
		/*
		 하나의 클래스 안에서 패키지는 다르나 같은 이름의 클래스를 사용해야 할 때.
		 방법 1 : 클래스명 앞에 풀 패키지 경로를 기술한다.
		 밥법 2 : 하나의 클래스는 import하고, 다른 하나는 풀 경로를 사용한다.
		 */
		Date utilDate = new Date();
		System.out.println("utilDate = " + utilDate);
		
		java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
		System.out.println("sqlDate = " + sqlDate);
		
		/////////////////////////
		
		/*
		 ex09package 하위에 ex09package.kosmo.util 패키지가 생성되지만
		 이 두개는 서로 다른 패키지로 인식한다.
		 따라서 isNumber() 메소드를 호출하기 위해서는 해당 패키지를 import해야한다.
		 */
		
		String strValue = "987654321";
		
		/*
		 static으로 선언된 메소드는 new를 통한 객체생성없이
		 클래스명만으로 즉시 호출이 가능한다.
		 */
		boolean isNum = CommonUtil.isNumber(strValue);
		if(isNum = true)
			System.out.println("문자열은 숫자입니다.");
		else
			System.out.println("숫자가 아닙니다.");
		
		System.out.println(ex09package.kosmo.util.CommonUtil.isNumber("백20"));
		
	}

}

 

여기에서는 보이지 않지만 이클립스에서 작성해 보면 isNumber이 이테릭체로 보일겁니다. 이텔릭체로 보인다는 것은 static으로 선언되었다는 겁니다. static명으로 선언된 메소는 앞에서 말했다 싶이 객체 생성 없이 클래스명으로 즉시 호출이 가능합니다.

 

 

CommonUtil.java

package ex09package.kosmo.util;

public class CommonUtil {
	/*
	 전달된 문자열을 검사하여 숫자가 안닌 문자가 포함된 경우 false를 반환하고, 
	 모두 숫자인 경우 true를 반환
	 */
	public static boolean isNumber(String strValue) {
		
		if(strValue.length() == 0)
			return false;
		
		for(int i = 0; i < strValue.length(); i++) {
			//각 인덱스에 해당하는 문자의 아스키코드값을 반환함.
			int acode = strValue.codePointAt(i);
			if( !(acode>='0' && acode<='9')) {
				return false;
			}
	}
		
		return true;
	}
}

 

전달된 문자가 숫자인지 문자인지 검사하는 간단한 로직의 클래스 입니다.

 

 

 

결과 값