기억의 DataBase

package(디렉토리)와 중요 package 본문

Java

package(디렉토리)와 중요 package

Zester; 2019. 1. 14. 12:26
  • package(디렉토리)와 중요 package
package가 없는 경우 :  그냥 java Hello.java로 실행
package가 있는 경우 :  그냥 javac -d c:₩tmp Hello.java로 실행

  • package명을 도메인으로 짓는 이유
중복으로 인하여 충돌이 발생할 수 있기 때문에 
도메인명을 거꾸로 + 프로젝트명

package가 없는 경우 :  그냥 java Hello.java로 실행
package가 있는 경우 :  그냥 javac -d c:₩tmp Hello.java로 실행

ex) www.naver.com  >> com.naver.projectName

  •  기본 package중에서 가장 중요한 것들
  1. java.lang -  기본이 되는 package(import하지 않아도 사용가능) - lib에 들어있는 jar 파일로 되어있음

        ※나머지는 import를 해줘야함
        (import는 사용하는 class가 어떤 package에 있다는 것을 JVM과 컴파일러에게 알려주는 것)
        ※같은 package내에서는 import를 할 필요없이 쓸 수 있음

  1. java.util - 유용한 class(날짜, 자료구조)
  2. java.io - 입출력
        4.java.net - 네트워크 

Constructor Summary를 먼저 확인 - 생성자가 있는지를 먼저 파악


생성자가 없는 Class는 없지만
생성자를 사용하지 못하게 하는 Class는 있음(private 생성자를 가진 경우 - api에 안나옴)

ex) Math m1 = new Math(); >> 불가능(컴파일 오류가 남 / import할 필요도 없음(lang클래스))
>> new로 Instance를 만들지 않아도, static을 활용해서 사용
>> static 메소드의 경우는 객체가 없어도 사용이 가능 
    생성 안하고 바로 Math.random( ); 

  • 만약 각각 다른 패키지에 이름이 같은 Class를 동시에 import하려면 어떻게 할까?
Package      Class

exam1         Bean
exam2         Bean

import exam1.Bean;
import exam2.Bean;

Bean b1 = new Bean();
exam2.Bean b2 = new exam2.Bean();  >> 패키지명까지 다 적어주면 됨

※ imort 할때 *를 사용한다고 해서 성능이 저하되는 것은 아님(Compile 할때 필요한 것만 import함),
   어떤 package를 사용했는지 파악이 어려울 뿐

  • 필드 
클래스 변수(static이 붙어있는 변수) >> JVM이 먼저 사용할 수 있도록메모리에 올린다
인스턴스 변수

클래스 변수(static)은 인스턴스가 만들어지기 전에 딱 한번만 메모리에 올라감
같은 클래스는 디스크에서 딱 한번만 읽어들임

public class MyBean {
       
       static int staticValue; // class 변수
       int instanceValue; // 인스턴스 변수
}

public class MyBeanTest {
       public static void main(String[] args) {
             
             MyBean b1 = new MyBean();
             MyBean b2 = new MyBean();
             
             b1.staticValue = 5; // b1 인스턴스에서 값을 줌
             System.out.println(b2.staticValue);
             // 5가 출력됨(다른 인스턴스지만, staticValue는 메모리에 올라가 있는 상태라 b2에서 호출해도 나옴)
             System.out.println(MyBean.staticValue);
             // 클래스 변수를 사용할때는 이렇게 써주는게 정확함
       
    }
}

각각의 인스턴스가 다른 값을 가지게 하려면, 클래스변수가 아니라, 인스턴스 변수를 줘야함 

'Java' 카테고리의 다른 글

생성자  (0) 2019.01.17
예외처리(Exception)  (0) 2019.01.17
객체지향  (0) 2019.01.16
OOP(Object Oriented Programming) - 객체지향과 Memory  (0) 2019.01.14
JAVA Start  (0) 2019.01.11
Comments