1. JFC (Java Foundation Class) 

- Window용 Application(eclipse, 알집, 알약, 카톡,,,,,)을 작성할 때 사용 (디자인용)

- AWT (Abstract Window Toolkit)와Swing을 제공함

- java만 가지고는 “.exe (Windows용 실행파일)”인 파일을 제작할 수 없음

- 설치되더라도 JDK는 별도로 존재해야 함(프로그램을 여러 개 설치해야 함)

 

 2. JFC – Swing 

- AWT 차후 버전

- 장점 : 가벼운 컴포넌트(빠르다)

          에러가 적다

          OS가 달라도 동일한 모양의 Component를 제공

          이미지 다루기가 쉬움

- javax.swing package에서 Component를 제공함 (JComponenet Class와 그 상속 클래스들)

   > swing은 component 기능을 나타내는 class 앞에 J가 붙어있음

- Swing은 AWT와 호환 가능함

- event 처리에 사용되는 interface와 class는 java.awt.event 패키지에 존재하는 것을 같이 사용함

 

작성법)

1) Window Component(JFrame)를 상속 (is a 관계)

2) 일반 컴포넌트를 생성 (사용자가 사용할 기능 제공)
           : JButton jbtn = new JButton(“버튼”); 

3) 일반 컴포넌트를 배치 (기능을 잘 사용할 수 있도록 적절한 위치에 놓음 – UI설계)

: add(2)에서 생성한 컴포넌트명) // Container 클래스에 존재 => 코드의 재사용성

4) window의 크기(보여줄 크기)를 설정

: setSize(int width, int height) // Window 클래스 => 코드의 재사용성

5) 사용자에게 보여주는 기능을 가진 method 호출 (가시화)

: setVisible(true) // Window 클래스 => 코드의 재사용성

 

** 닫기 버튼만 클릭하면 instance가 사라지지 않으므로 하기 method 추가 필요
=> 윈도우 종료 이벤트 처리
=> instance 삭제 : setDefaultCloseOperatinon(JFrame.EXIT_ON_CLOSE)

 

3. Component 

- 최소의 기능을 가진 단위

- Component Programming : 기능을 가진 최소의 디자인 단위를 사용하여 프로그램을 제작하는 것

 

- Component 종류 :

  • Visual Component : 눈에 보이는 Component
  • Non-Visual Component : 눈에 보이지 않는 Component

- Visual Component 기능상의 분류 :

  • Window Component : 사용자에게 보여주는 일
    - Container Component 또는 Component를 가지고 사용자에게 보여주는 일을 하는 Component
    - Window, Frame, Dialog, FileDialog
  • Container Component : 배치하는 일
    - Container Component 또는 일반 Component를 배치하는 일
    - Panel, ScrollPane
  • Component : 기능
    - Button, Lable, TextField, TextArea, CheckBox, RadioButton, Choice(ComboBox), Menu, MenuItem, MenuBar

'Development > Java' 카테고리의 다른 글

[Java] MVC Pattern  (0) 2021.08.18
[Java] Layout Manager (배치관리자)  (0) 2021.08.17
[Java] Stack / autoboxing / unboxing  (0) 2021.08.12
[Java] JCF - Set, Map  (0) 2021.08.11
[Java] JCF - List / Generic  (0) 2021.08.10

 1. Stack 

- Vector의 자식클래스

- LIFO (Last Input First Output)를 구현한 클래스

- is a 관계로 객체화 하지 않음

- 부모가 제공하는 method를 사용하면 Stack의 동작에 맞지 않기 때문에 사용하지 않음

  (add와 get을 사용하게되면 LIFO의 기능을 수행할 수 없으므로)

- Stack이 저장할 수 있는 크기보다 더 많은 값이 입력되면 StackOverflow가 발생함

- Stack의 요소들은 element가 아니라 item이라고 부름

- Stack은 프로그램 내의 history를 저장하게 될 때 사용함

- Stack사용법)

  1) 생성 : Stack<String> stk = new Stack<String>();

  2) 값 할당 : 입력되는 값은 순차적으로 쌓임

                  stk.push(값);

  3) Stack이 비었는지 확인 : stk.empty(); // 비어있을 때 true

  4) Stack에서 값 얻기 : stk.pop(); // 꺼낸 값은 사라짐

 

 2. autoboxing / unboxing 

- JDK1.5에서부터 추가된 기능

- JCF가 Wrapper Class를 Generic으로 사용하고 있을 때, 기본형 데이터형을 직접 할당하거나, 

  얻을 때 JVM이 자동으로 처리하는 일

 

1) autoboxing

- 기본형 데이터형 값을 추가할 때 동작하며, 기본형이 그에 대응하는 Wrapper클래스로 생성되어 할당되는 것

- 사용 : List<Integer> list = new ArrayList<Integer>();

            Generic이 Wrapper Class이므로 객체가 할당되어야하는데 기본형 데이터형이 할당된다.

            > list.add(10); // 기본형 데이터형을 추가하면 아래처럼 Wrapper로 객체화되어 할당됨

            >> list.add(new Integer(10)); // JDK 1.8까지는 괜찮음

            >> list.add(Intefer.valueOf(10)); // JDK 1.9부터 생성자가 비추천이므로 static method 사용

 

2) unboxing

- Wrapper Class가 Generic으로 사용된 JCF에서 값을 얻을 때 동작하며, Wrapper Class가 기본형으로 나오는 것

- 사용 : Integer val = list.get(0); // Wrapper Class로 값을 받음

              int val = list.get(0); // 내부적으로 코드가 int val = ((Integer)list.get(0)).intValue();

 


# 오늘의 코딩 #

- Stack을 이해해보자!

package test;

import java.util.Stack;

/**
 * Stack : LIFO를 구현한 자료구조 - 후입선출
 * Queue : FIFO(First Input First Output) - 선입선출
 * @author user
 */
public class UseStack {

	public UseStack() {
		
		//1. 객체화 : is a 관계의 객체화를 하지 않음 (stack 역할을 하기 위해)
		Stack<String> stack = new Stack<String>();
		
		//2. 값할당 : 부모의 method를 사용할 수 있으나 사용하지 않음
		stack.push("Java");
		stack.push("Oracle");
		stack.push("JSP");
		stack.push("HTML");
		System.out.println(stack);
		
		//3. 값 사용 : stack이 비었는지 확인하고 사용해야 함
		System.out.println(stack.empty()); // 비어있을 때 true
		
		while (!stack.empty()) { //stack이 비어있지 않으면 반복
			System.out.println(stack.pop());
		}//while
		
		System.out.println(stack);
		//Stack은 프로그램안에서 history를 저장할 때 사용
		
		
	}//UseStack
	
	public static void main(String[] args) {

		new UseStack();
		
	}//main

}//class

# 출력 결과 #

[Java, Oracle, JSP, HTML]
false
HTML
JSP
Oracle
Java
[]

 

>> Stack은 LIFO로! 마지막으로 들어간게 가장 먼저 POP 되는 것 확인!! 

 

 

 

'Development > Java' 카테고리의 다른 글

[Java] Layout Manager (배치관리자)  (0) 2021.08.17
[Java] JFC / Swing / Component  (0) 2021.08.15
[Java] JCF - Set, Map  (0) 2021.08.11
[Java] JCF - List / Generic  (0) 2021.08.10
[Java] JCF - List, Set, Map  (0) 2021.08.09

 1. Set 

- 일차원 배열처럼 생성됨

- 중복값을 저장하지 않고, 검색의 기능이 없음 (List와의 차이점, 값을 얻을 수 없음)

- 입력되는 값은 순차적으로 입력되지 않음

 

- 사용법)

1) 생성 : Set<E> set = new HashSet<E>();

           Set<String> set = new HashSet<String>();

2) 값 할당 : 중복값을 저장하지 않고 순차적으로 입력되지도 않음

               set.add(값);

3) 크기 : set.size();

4) 값 삭제 : 값의 내용과 일치하는 element를 삭제함

set.remove(값);

set.clear(); // 모든 방의 값 삭제

5) 값 얻기 : 값을 얻기 위한 객체 사용(Iterator)

> set에서 Iterator에게 제어권을 할당해야 함 (List도 사용가능)

    Iterator<E> ita = set.iterator(); // Set의 element 개수를 알 수 없으므로 while 사용

    while( ita.hasNext() ) { // 5-1. 요소가 존재하는지?

    ita.next() // 5-2. 값을 얻고, 포인터를 다음 요소로 이동}

6) 배열로 복사

6-1) Generic으로 선언된 데이터형을 사용하여 배열 선언

           String[] arr = new String [ set.size() ];

6-2) 복사

           set.toArray(arr);

 

 2. Map 

- KVP (Key Value Pair) : 키와 값의 쌍(entry)으로 이루어진 데이터형

- 이차원 배열처럼 생성

- entry는 비순차적

- 키를 가지고 값을 검색하는 일

- 키는 유일하나 값은 중복될 수 있음

- 같은 키가 입력되면 기존의 key에 덮어씀

- 구현 클래스 중 HashTable, HashMap, Properties 등이 자주 사용되는 구현 클래스임

  • HashTable : Key를 사용하여 값을 얻을 때 사용
               MultiThread에서 동시접근 불가(느림)
               initial capacity : 11 (11개의 행이 만들어짐)
  • HashMap : Key를 사용하여 값을 얻을 때 사용
    MultiThread에서 동시접근 가능(빠름)
    initial capacity : 16 (16개의 행이 만들어짐)

>> HashTable과 HashMap은 데이터가 전체 크기에 약 75%가 채워져 있을 때 빠른 검색을 함

 

- 사용법)

1) 객체화 : Map<K,V> map = new 구현클래스<K,V>();

     Map<String,String> map = new HashMap<String,String>();

     Map<String,String> map = new HashTable<String,String>();

2) 값 할당 : entry는 순서대로 들어가지 않음. 같은 키가 입력되면 기존의 키에 덮어씀

     map.put(“A”,”에이”);

3) 특정 키 존재 여부 : boolean b = map.containsKey(“키”);

4) 값 얻기 : 데이터형(Generic) 값 = map.get(“키”);

5) 삭제 : map.remove(“키”); // 키에 해당하는 entry 삭제

                map.clear(); // 모든 entry 삭제

6) 모든 키 얻기 : map의 검증용도 (Set과 iterator 활용) / map에 뭐가 들어있는지 확인하겠다!

           Set<E> set = map.keySet();

           Set<String> set = map.keySet();

           Iterator<String> ita = set.iterator();

           String key="";

           while (ita.hasNext()) {

                       key=ita.next();

                       System.out.println("키:" + key + " / 값:" + map.get(key));           }

7) 크기 : map.size(); // intial capacity가 아니라 entry의 크기


# 오늘의 코딩 #

- Set과 Map 특성 확인하기

 

#먼저 Set!

package test;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * Set의 사용 : 값은 중복되지 않고, 검색 기능이 없음. 데이터는 순차적으로 입력되지 않음
 * 
 * @author user
 */
public class UseSet {

	public UseSet() {
		// 1. 객체화 : Set<E> set = new HashSet<E>();
		Set<String> set = new HashSet<String>();
		// 2. 값 할당 : set.add("값"); 순서x 중복x
		set.add("1.주헌");
		set.add("2.기현");
		set.add("3.형원");
		set.add("4.셔누");
		set.add("5.민혁");
		set.add("5.민혁"); // 동일값 추가해도 반영안됨

		// 3. 크기
		System.out.println(set.size());
		System.out.println(set);

		// 4. 값 얻기 : set은 검색기능이 없어서 값을 얻을 수 없으므로
		// Iterator를 사용하여 값을 얻어와야 함
		// Iterator의 객체 생성, 제어권을 할당한 후 포인터 이동으로 값 얻을 수 있음
  		Iterator<String> ita = set.iterator();
		
		while(ita.hasNext()) {//요소가 존재하면 반복시킴
			System.out.println(ita.next()); //값을 얻고 포인터를 다음으로 이동
		}//end while
		
		// 배열로 복사
		// set의 크기로 배열 생성
		String[] arr = new String[set.size()];
		// 복사
		set.toArray(arr);
		
		//삭제
		set.remove("2.기현");
		System.out.println("set 객체 : " + set);
		
		// java.util.Arrays 클래스를 사용하면 배열에 대한 여러가지 작업 수행 가능
		System.out.println("배열 객체 : " + Arrays.toString(arr));

	}// UseSet

	public static void main(String[] args) {

		new UseSet();

	}// main

}// class

# 출력 결과 #

5
[3.형원, 4.셔누, 1.주헌, 2.기현, 5.민혁]
3.형원
4.셔누
1.주헌
2.기현
5.민혁
set 객체 : [3.형원, 4.셔누, 1.주헌, 5.민혁]
배열 객체 : [3.형원, 4.셔누, 1.주헌, 2.기현, 5.민혁]

 

# 이제 Map!

package test;

import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * KVP(Key Value Pair)로 이루어진 데이터형
 * Key 유일, 값 중복가능
 * key를 사용하여 값을 얻는 일
 * @author user
 */
public class UseMap {

	/**
	 * HashMap : 16개의 행이 생성. 키를 검색할 때 데이터가 약 75%가 채워져 있을 때 가장 빠름
	 */
	public void useHashMap() {
		//1. 생성 : Map<K,V> map = new HashMap<K,V>();
		Map<String,String> map = new HashMap<String,String>();
		System.out.println(map + "/" + map.size()); // initial capa가 아니라 entry의 크기
		
		//2. 값 할당 : map.put(키,값); // 비순차적으로 입력됨
		map.put("A","세심하다. 친절하다"); 
		map.put("B","성질더럽다.");
		map.put("AB","싸이코");
		map.put("O","우유부단");
		map.put("A","소심"); // entry를 입력할 때 키가 중복된다면 이전 키에 덮어씀
		map.put("K","기름");
		System.out.println(map + "/" + map.size()); // initial capa가 아니라 entry의 크기

		//3. 값 삭제 (행이 줄어듦)
		map.remove("K");
		System.out.println(map + "/" + map.size()); // initial capa가 아니라 entry의 크기
		
		//4. 키가 존재하는지?
		System.out.println(map.containsKey("a"));
		
		//5. 값 얻기
		System.out.println(map.get("AB"));
		
		//6. 모든 키 얻기 : 맵의 검증 용도
		Set<String> set = map.keySet();
		Iterator<String> ita = set.iterator();
		
		String key="";
		while (ita.hasNext()) {
			key=ita.next();
			System.out.println("키:" + key + " / 값:" + map.get(key));
		}//end while
		}//useHashMap
	
	public static void main(String[] args) {

		UseMap um = new UseMap();
		um.useHashMap();
		
	}//main
}//class

- HashMap을 쓰든 HashTable을 쓰든 똑같음

 

# 출력 결과 #

{}/0
{A=소심, AB=싸이코, B=성질더럽다., K=기름, O=우유부단}/5
{A=소심, AB=싸이코, B=성질더럽다., O=우유부단}/4
false
싸이코
키:A / 값:소심
키:AB / 값:싸이코
키:B / 값:성질더럽다.
키:O / 값:우유부단

 

 

 

 

'Development > Java' 카테고리의 다른 글

[Java] JFC / Swing / Component  (0) 2021.08.15
[Java] Stack / autoboxing / unboxing  (0) 2021.08.12
[Java] JCF - List / Generic  (0) 2021.08.10
[Java] JCF - List, Set, Map  (0) 2021.08.09
[Java] DecimalFormat Class  (0) 2021.08.06

 1. List 

- java.util 패키지에 존재

- 일차원 배열처럼 생성됨

- 값은 중복되며, 검색의 기능이 있음

- 객체를 저장하므로 기본형 데이터형을 저장할 수 없음.

   > 기본형 데이터형은 Wrapper class를 사용하여 객체로 만든 후 저장됨 (=autoboxing)

 

- List사용법) List list = new ArryList();  // is a 관계 객체화

   > JDK1.4까지 : 모든 객체를 저장할 수 있음

                     : 장점) 편의성-모든 값을 저장할 수 있음 / 단점) 값을 꺼내 사용할 때 문제

   > JDK1.5이후 : 특정 객체만 저장할 수 있음 (<E> : Generic)

1) 생성 : ArrayList al = new ArrayList();

2) 값 추가 : 모든 객체를 다 할당할 수 있음

                //값을 추가할 때마다 Element가 증가함

                  al.add(“안녕”); , al.add(new Integer(10));, al.add(new 클래스명(매개변수))

 

 2. Generic 

- JDK1.5에서부터 추가된 기능

- JCF(Java Collection Framework)의 입력 데이터형 제한

- Generic이 사용된 JCF는 설정된 데이터형만 입력가능해짐 (모든 데이터형>특정 데이터형 입력)

- <E>는 Element의 약자, List의 방 데이터형을 설정하는 것으로 하나만 입력 가능

- 기본형 => Wrapper Class 사용

- 사용법) List<E> list = new ArrayList<E> ();

             Ex. 문자열만 저장가능한 List 생성 : List<String> list = new ArrayList<String>();

                  기본형은 Wrapper Class 사용 : List<Integer> list = new ArrayList<Integer>();

                   VO => 방 하나에 여러 개의 값 저장 시 : List<VO> List = new ArrayList<VO>();


# 오늘의 코딩 #

ArrayList를 활용해보자! (중복값 가능, 검색 기능 있음)

package test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

/**
 * ArrayList 활용 Class
 * @author user
 */
public class UseArrayList {
	/**
	 * 10~20 사이의 난수를 발생시켜, 이름 배열의 임의의 방 값을 얻어 List넣고 반환하는 method<br>
	 * @return 발생된 난수 횟수만큼 임의의 값이 저장된 list
	 */
	public List<String> randomName() {
		List<String> list = new ArrayList<String>();
       
		String[] data = "셔누,형원,주헌,민혁,기현,창균,동동".split(",");
		
		Random random = new Random();
		int num = (random.nextInt(11) + 10); // 10~20까지의 난수 발생

		for (int i = 0; i < num; i++) { // 난수 횟수만큼 list에 값 할당하는 for
			list.add(data[random.nextInt(data.length)]); // 할당되는 값도 random
		} // end for

		return list;
	} // randomName

	/**
	 * randomName method에서 반환된 list를 개선된 for로 출력하는 method
	 */
	public void printRandomName() {
		List<String> nameList = randomName(); // 위 method에서 반환된 list를 nameList에 할당
		
		System.out.println("추출횟수 : " + nameList.size()+"회");
		for (String val : nameList) {
			System.out.print(val + " ");
		} // end for
	}// printRandomName
	
	public static void main(String[] args) {
    
		UseArrayList ul = new UseArrayList();
		ul.printRandomName();

	}// main
}// class

 

 

# 출력 결과 #

추출횟수 : 12회
동동 셔누 동동 형원 동동 기현 민혁 창균 창균 창균 주헌 기현

 

 

'Development > Java' 카테고리의 다른 글

[Java] Stack / autoboxing / unboxing  (0) 2021.08.12
[Java] JCF - Set, Map  (0) 2021.08.11
[Java] JCF - List, Set, Map  (0) 2021.08.09
[Java] DecimalFormat Class  (0) 2021.08.06
[Java] import / static import  (0) 2021.08.05

  JCF  

- 데이터 구조(DataStructure)를 미리 구현해놓은 클래스들

- 데이터를 처리하기 위해서 구성 및 동작해야 할 메모리의 형태

- List, Set, Map이 java.util.package에서 제공됨

  (List, Set – Collection 계열 / Map – Map 계열)

- JDK 1.5이상에서부터는 Generic, autoboxing, unboxing이 사용됨

- 가변길이형 (값이 추가되면 길이가 늘어나고, 값이 삭제되면 길이가 줄어듦)

 

 1. List 

- 일차원 배열처럼 생성됨

- 값은 순차적으로 입력되고, 중복 값을 저장할 수 있으며, 검색의 기능이 있음

- 구현클래스로 ArrayList, Vector, LinkedList 등 제공

 

 2. Set 

- 일차원 배열처럼 생성됨

- 값은 비순차적으로 입력되고, 중복 값을 저장할 수 없으며, 검색의 기능이 없음

- 구현클래스로 HashSet 제공

 

 3. Map 

- 이차원 배열처럼 생성됨 (행과 열로 구성)

- 키와 값의 쌍(=entry)으로 구성됨

- entry는 비순차적으로 입력됨

- 키는 중복될 수 없고 (=유일), 값은 중복 가능

- 키를 사용하여 값을 검색함

- 구현클래스로 Hashtable, HashMap 제공

 

'Development > Java' 카테고리의 다른 글

[Java] JCF - Set, Map  (0) 2021.08.11
[Java] JCF - List / Generic  (0) 2021.08.10
[Java] DecimalFormat Class  (0) 2021.08.06
[Java] import / static import  (0) 2021.08.05
[Java] Calendar Class(2)  (0) 2021.08.03

 DecimalFormat Class 

- 숫자형식을 변환할 때 (정수, 실수 모두 가능)

- java.text package에서 제공하는 Class

 

- 사용법)

> 생성) DecimalFormat df = new DecimalFormat(“pattern”);

           - pattern : 0 : 해당 자리에 값이 없으면 0을 넣어서 보여줌 // 전체 자릿수를 맞출 때

                         # : 데이터가 존재하는 것까지만 보여줌

> 값 얻기) String str = df.format(값);

          Ex. DecimalFormat df = new DecimalFormat(“0,000,000”); // 0

               df.format(2021); => 뒷자리부터 채워져서 0,002,021됨!

          Ex. DecimalFormat df = new DecimalFormat(“#,###,###”); //#

               df.format(2021); => 2,021

               DecimalFormat df = new DecimalFormat(“#,###”); // # 다 쓸필요 없음

               df.format(2021111); => 2,021,111 // 규칙을 가지고 ,가 들어감!!

          Ex. DecimalFormat df = new DecimalFormat(“#,###.##”); // ,와 . 혼용 가능

               df.format(2021.989); => 2,021.99

          => 설정한 다음 자리가 반올림 대상이면 반올림 된다

 

 


# 오늘의 코딩 #

package test;

import java.text.DecimalFormat;

/**
 * 숫자형식을 변경할 때 사용하는 DecimalFormat Class
 * @author user
 */
public class UseDecimalFormat {

	public UseDecimalFormat() {

		// 1.생성
		DecimalFormat df = new DecimalFormat("0,000,000"); // 데이터가 모자라면 0을 채워서 보여줌
		// 2. 일
		String value = df.format(2021);
		System.out.println(value);

		// 1.생성
		DecimalFormat df2 = new DecimalFormat("#,###,###"); // 데이터가 존재하는 곳 까지만 보여줌
		// 2. 일
		String value2 = df2.format(2021);
		System.out.println(value2);

		// 1.생성
		DecimalFormat df3 = new DecimalFormat("#,###.###"); // 실수도 가능
		// 2. 일
		String value3 = df3.format(2021.9998); // 실수 부분은 설정한 다음 자리가 반올림 대상이라면 반올림하여 보여줌
		System.out.println(value3);

		// 1.생성
		DecimalFormat df4 = new DecimalFormat("#,###"); // 규칙을 가지고 ,가 들어간다
		// 2. 일
		String value4 = df4.format(20200000);
		System.out.println(value4);

	}// UseDecimalFormat

	public static void main(String[] args) {

		new UseDecimalFormat();

	}// main

}// class

- DecimalFormat Class는 실수 사용시 반올림된다는 것을 주의하자!

 

# 출력 결과 #

0,002,021
2,021
2,022
20,200,000

 

 

'Development > Java' 카테고리의 다른 글

[Java] JCF - List / Generic  (0) 2021.08.10
[Java] JCF - List, Set, Map  (0) 2021.08.09
[Java] import / static import  (0) 2021.08.05
[Java] Calendar Class(2)  (0) 2021.08.03
[Java] Calendar Class / VO Class  (0) 2021.08.02

1. import

- 클래스가 존재하는 패키지 외부에 다른 클래스를 사용할 때

- package선언과 class 선언 사이에 필요한 만큼 정의하여 사용

- JDK1.5에서부터는 static import 추가

- java.lang 패키지에 포함되어 있는 class는 따로 import가 필요 없음

 

- 주의!) 패키지가 다르나 같은 이름의 클래스, 인터페이스가 존재한다면 두 클래스 중 하나만 import 받을 수 있음

   => full path로 해결 가능

        - 클래스를 사용할 때 패키지를 기술하여 사용하는 것

        - 문법) 패키지명.클래스명 객체명 =

        - Ex)  Date d = null; // java.util package의 Date (얜 import한 Date)

                java.sql.Date d1 = null; // java.sql package의 Date도 사용할 때(full path 사용)

 

- 문법)

import 패키지명.*; => 다른 패키지내의 모든 클래스를 사용할 때 (Java에서는 권장하지 않음)

import 패키지명.클래스명; => 다른 패키지내의 특정 클래스만 사용할 때

 

2. static import

- 다른 클래스에 존재하는 Constant나 static method를 클래스에 존재하는 것처럼 사용할 때

- 기본 import에서 더 확장된(들어간) 개념

- import 안 해도 됐던 java.lang 패키지도 static import 사용하려면 선언이 필요함!

 

- 주의! 패키지가 다르나 같은 이름의  Constant나 static method가 존재한다면 하나만 import 받을 수 있음

 

- 문법)

1) Constant 사용할 때 : import static 패키지명.클래스명.상수명;

2) static method 사용할 때 : import static 패키지명.클래스명.method

                                     (주의! method 기호()를 기술하지 않음) 

 

 


# 오늘의 코딩 #

- static import를 사용해보자

package test;

import static java.lang.Integer.MAX_VALUE;
import static java.lang.Integer.parseInt;
import static java.lang.Math.random;
//import static java.lnag.Byte.MAX_VALUE; // 같은 이름의 Constant는 하나만 받을 수 있음

/**
 * 다른 클래스의 상수나 static method를 내 클래스에 존재하는 것처럼 사용할 때
 * 
 * @author user
 */
public class TestStaticImport {

	public static void main(String[] args) {
		//Interger의 Constant와 method 내 것처럼 사용
		System.out.println(MAX_VALUE);
		
		String s = "7";
		String s1 = "28";
		int i = parseInt(s);
		int j = parseInt(s1);
		System.out.println(i + "/" + j);

		// random()을 내 클래스에 존재하는 것처럼 사용
		System.out.println((int) (random() * 100 + 1));

	}// main
}// class

 

# 출력 결과 #

2147483647
7/28
98

 

 

 

'Development > Java' 카테고리의 다른 글

[Java] JCF - List, Set, Map  (0) 2021.08.09
[Java] DecimalFormat Class  (0) 2021.08.06
[Java] Calendar Class(2)  (0) 2021.08.03
[Java] Calendar Class / VO Class  (0) 2021.08.02
[Java] Date Class / SimpleDateFormat Class / Locale Class  (0) 2021.08.01

# 오늘의 코딩 #

Calendar Class 를 사용하여 달력을 만들어보자!

- 1일에 해당하는 요일부터 달력시작

- 토요일이면 줄 변경하기

- 연, 월을 설정할 수 있게 작성

 

package test;

import java.util.Calendar;

/**
 * 달력 만들기<br>
 * @author user
 */
public class MyCalendar {

	public MyCalendar() {

		Calendar cal = Calendar.getInstance(); // 객체 생성
		cal.set(Calendar.YEAR, 2021); // 년도 setting
		cal.set(Calendar.MONTH, 9); // 월 setting. 실제 월 - 1

		System.out.println(cal.get(Calendar.YEAR) + "년 " + (cal.get(Calendar.MONTH) + 1) + "월");

		System.out.println("------------------------------------------------------");
		System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "일", "월", "화", "수", "목", "금", "토");
		System.out.println("------------------------------------------------------");

		for (int tempDay = 1; tempDay < 32; tempDay++) { // 최대 31일까지
			cal.set(Calendar.DAY_OF_MONTH, tempDay); // 임시일자로 달력객체 설정

			if (tempDay == 1) {// 1일 출력 전 만들어야 하는 공백의 수
				for (int blank = 1; blank < cal.get(Calendar.DAY_OF_WEEK); blank++) // 1일의 요일을 가져와서 그 수 만큼 공백 생성
					System.out.print("\t");
			} // end if

			if (cal.get(Calendar.DAY_OF_MONTH) != tempDay) { // 달의 말일보다 큰 값으로 날짜가 설정되면 자동으로 다음달 날짜가 되는 것을 검증
				break; // 그 달의 말일과 tempDay가 다르면 break
			} // end if

			System.out.printf("%-3d\t", cal.get(Calendar.DAY_OF_MONTH)); // 일자 출력

			switch (cal.get(Calendar.DAY_OF_WEEK)) {
			case Calendar.SATURDAY:
				System.out.println();// 토요일이면 줄변경
			}// end switch

		} // end for

	}// MyCalendar

	public static void main(String[] args) {

		new MyCalendar();

	}// main

}// class

 

# 출력 결과 #

 

>> 말일이랑 요일때문에 좀 헷갈렸지만 성공 :)))) 

'Development > Java' 카테고리의 다른 글

[Java] DecimalFormat Class  (0) 2021.08.06
[Java] import / static import  (0) 2021.08.05
[Java] Calendar Class / VO Class  (0) 2021.08.02
[Java] Date Class / SimpleDateFormat Class / Locale Class  (0) 2021.08.01
[Java] StringTokenizer  (0) 2021.07.30

+ Recent posts