1. 패키지

    : 관련있는 클래스를 묶어놓은 디렉터리 (일종의 그룹핑)

    패키지.패키지.클래스 ⇒ 점으로 연결

    → 따로 관리하면 클래스 이름이 같아도 된다.

    → 하나의 응용 프로그램은 한 개 이상의 패키지

    → jar 파일로 패키지 압축 가능

    → 관련있는 멤버는 default (동일 패키지 상에서 접근 가능)

  2. 모듈

    : 여러 패키지와 이미지 등의 자원을 모아놓은 컨테이너

    (변수와 함수를 묶어 클래스, 클래스를 묶어 패키지, 패키지를 묶어 모듈)

    모듈로 묶이는 기준) 실행 환경 → 모든 클래스들을 패키지 기반에서 모듈로 재구성

    ⇒ 불필요한 클래스를 제외하고 하나의 런타임을 만든다.

    ex. 소형기계에는 모든 패키지 필요 X → 몇 개의 클래스를 선택해 모듈화

    ⇒ 검토할 것이 적으니 유지 보수 쉽다, 시스템 부담 감소

  3. import문

    : 다른 패키지에 있는 클래스를 사용

    java.util.* ← 패키지 내의 모든 클래스 (하위 패키지의 클래스까지 포함하지 X)

    util 클래스 안에 클래스와 패키지 존재할 수 있다.

    ⇒ 사용 자제, 불필요한 클래스도 import 되기 때문

    +) import java.* util 안에 내용 포함 X

    → 클래스이름 등 엄청 자세히 작성해야

  4. Object 클래스

    → java.lang 패키지 아래에 있고 import를 안해도 된다

    즉, 모든 클래스의 슈퍼 클래스이다, 강제 상속

    → 모든 클래스가 공통으로 가지는 객체의 속성을 가지고 있다.

    → 업캐스팅 후 찾아서 실행 ⇒ 반드시 오버라이딩 해줘야

    (해주면 내가 구현한 메소드로 구현)

    1. boolean equals(Object obj)

    2. String toString()

    3. Class getClass()

    obj 객체와 현재 객체 비교 후 true 리턴

    현 객체에 대한 문자열 표현을 리턴

    현 객체의 런타임 클래스를 리턴

    ※ 스레드 ← 안드로이드에서 중요하게 사용

    예제 6-1) 객체 비교

    Untitled

    1. == 연산자 : 객체 레퍼런스 비교

    → 객체의 주소 값으로 판단

    1. equals() : 객체 내용 비교

    → 개발자가 내용 동일 여부를 오버라이딩해서 판단

    시험문제) ==와 equals의 차이

    class Point {
    	int x, y;
    	public Point(int x, int y){
    		this.x = x;
    		this.y = y;
    	}
    
    	public boolean equals(Object p) {
    		Point p = (Point) obj;
    		if(x == p.x && y == p.y) {
    			return true;
    		}
    		else{
    			return false;
    		}
    	}
    }
    
    public class ObjectPropertyEx {
    	public static void main(String [] args) {
    		Point p = new Point(2,3);
    		System.out.println(p.getClass().getName()); // 클래스 이름
    		System.out.println(p.hashCode()); // 해시 코드 값
    		System.out.println(p.toString()); // 객체의 문자열
    	}
    }
    

    예제 6-4) (20,1)과 (4,5)가 다른 사각형임을 판별 (예제는 넓이가 같으므로 판별 X)

  5. Wrapper 클래스

    : 자바의 기본 타입을 클래스화한 8개 클래스

    배경) 기능을 추가하고 싶어 Wrapper 클래스 정의_클래스 사용하는 이유와 동일, 컬렉션에는 객체만 넣을 수 있니까 Wrapper로 기본 타입도 저장 가능 (시험 문제)

     : 멤버 하나에 대한 다양한 기능, 함수를 묶어 놓을 수 있다 (패키징 가능)
    

    ⇒ 기본 타입은 값만 저장할 수 있는 반면, 값과 기능을 모두 포함해 저장 가능

    특징)

    박싱과 언박싱)

    1. 박싱 : 기본 타입의 값을 Wrapper 객체로 변환
    //박싱
    Integer ten = Integer.valueOf(10);
    
    //자동 박싱
    Integer ten  = 10;
    
    1. 언박싱 : Wrapper 객체에 들어 있는 기본 타입의 값을 빼내는 것
    //언박싱
    int n = ten.intValue();
    
    //자동 언박싱
    int n = ten;
    

    응용)

    컬렉션 : 객체들만을 저장하는 자료구조

    제네릭에 활용(타입도 매개변수로 전달)

  6. String 클래스

  7. StringBuffer 클래스

⇒ 문자열 변경 여부에 따라 클래스 이용

  1. StringTokenizer 클래스

  2. Math 클래스

  3. Calendar 클래스