728x90

모듈

  • java9에서 도입된 개념
  • 패키지와 이미지등의 리소스를 담은 컨테이너
  • 모듈 파일(.jmod)

 

└ 개발자가 쓰고 싶은 영역만 모듈로 묶음(모듈화)

  • 메모리 제약 감소
  • 필요한 요소만 사용 가능

자바 플랫폼

  • 자바의 개발 환경(JDK)와 자바의 실행 환경(JRE)를 지칭한다.
  • 자바 API 의 모든 클래스가 여러 개의 모듈로 재구성된다.

자바 실행 환경 비교

 


자바 모듈화의 목적

  • 자바 컴포넌트들을 필요에 따라 조립하여 사용하기 위함
  • 컴퓨터 시스템의 불필요한 부담 감소

기본 주요 패키지

  • java.lang - 자바 language 패키지
  • java.util - 자바 유틸리티 패키지
  • java.io - 키보드, 모니터, 프린터, 디스크 등에 입출력을 할 수 있는 클래스와 인터페이스 제공
  • java.awt - 자바 GUI 프로그래밍을 위한 클래스와 인터페이스 제공
  • javax.swing - 자바 GUI 프로그래밍을 위한 스윙 패키지

Object 클래스

  • java.lang 패키지에 포함
  • 모든 클래스의 슈퍼 클래스
    • 모든 클래스에 강제 상속
    • 모든 객체가 공통으로 가지는 객체의 속성을 나타내는 메소드 보유

 

Ex1

class Point {
    private int x, y;
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}
public class ObjectPropertyEx {
    public static void print(Object obj){
        System.out.println(obj.getClass().getName());
// 클래스 명을 받아와 출력
        System.out.println(obj.hashCode());
// 해시 코드 : 객체를 생성할 때 고유하게 부여되는 객체의 ID값
// (출력 시 마다 다르게 나온다.)
        System.out.println(obj.toString());
// 객체를 문자열로 만들어서 출력
        System.out.println(obj);
    }
    public static void main(String[] args){
        Point p = new Point(2,3);
        print(p);
    }
}

 

💡 toString() 이 반환하는 문자열

public String toString(){
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

 

💡 보통 프로그램 작성 시 _toString()_을 오버라이딩해, 사용한다.

 

Ex2. toString() 의 오버라이딩

class Point {
    private int x, y;
    public Point(int x, int y){
        this.x = x;
        this.y = y;
    }
    public String toString(){
        return "Point(" + x + "," + y +")";
    }
}

public class ToStringEx {
    public static void main(String[] args){
        Point p = new Point(2,3);
        System.out.println(p.toString());
        System.out.println(p);
        System.out.println(p + "입니다.");
    }
}

 


객체 비교 레퍼런스 equls()

boolean equals(Object obj)

 

  • (a == b) : false | (a == c) : true
  • (a.equals(b) : true | (a.equals(c) : true

 

  • 객체 내의 내용물 비교
  • 주소 값 비교의 경우에는 '== 연산자'를 사용한다.
class Point {
    private int x, y;
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}
Point a = new Point(2, 3);
Point b = new Point(2, 3);
Point c = a;
if (a == b) // false
    System.out.println("a==b");
if (a == c) // true
    System.out.println("a==c");

 

Ex3. equals() 의 오버라이딩

class Point {
    private  int x, y;
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
    public boolean equals(Object obj) {
        Point p = (Point)obj;
        if(x == p.x && y == p.y) return true;
        else return false;
    }
}

public class EqualsEx {
    public static void main(String[] args){
        Point a = new Point(2,3);
        Point b = new Point(2, 3);
        Point c = new Point(3,4);

        if(a == b)
            System.out.println("a==b");
        if(a.equals(b))
            System.out.println("a is equal to b");
        if(a.equals(c))
            System.out.println("a is equal to c");
    }
}


Wrapper 클래스

  • 이름이 Wrapper 인 클래스는 존재하지 않는다.
  • 기본 타입의 값을 객체로 다룰 수 있도록 하기 위해 사용된다.
  • Java 9 부터 생성자를 이용한 객체 생성은 불가하다.

 

  • 기본 타입의 값으로 Wrapper 객체 생성
Integer i = Integer.valueOf (10);
Character c = Character.valueOf('c');
Double f = Double.valueOf(3.14);
Boolean b = Boolean.valueOf(true);

 

  • 문자열로 Wrapper 객체 생성
Integer I = Interger.valueOf("10");
Double d = Double.valueOf("3.14");
Boolean b = Boolean.valueOf("false");
Float f = Float.valueOf((double) 3.14);
// Float 객체는 double 타입의 값으로 생성 가능

Ex4

public class WrapperEx {
    public static void main(String[] args){
        System.out.println(Character.toLowerCase('A'));
        char c1 = '4', c2 = 'F';
        if(Character.isDigit(c1))
            System.out.println(c1 + "는 숫자");
        if(Character.isAlphabetic(c2))
            System.out.println(c2 + "는 영문자");
        System.out.println(Integer.parseInt("-123"));
        System.out.println(Integer.toHexString(28));
        System.out.println(Integer.toBinaryString(28));
        System.out.println(Integer.bitCount(28));

        Double d = Double.valueOf(3.14);
        System.out.println(d.toString());
        System.out.println(Double.parseDouble("3.14"));

        boolean b = (4>3);
        System.out.println(Boolean.toString(b));
        System.out.println(Boolean.parseBoolean("false"));
    }
}


박싱과 언박싱

  • JDK1.5 부터 자동 박싱과 자동 언박싱이 가능하다!
Integer ten = 10; //(자동 박싱) Integer ten = Integer.valueOf(10);
int n = ten; //(자동 언박싱) int n = ten.intValue();

  • 박싱(boxing): 기본 타입의 값을 Wrapper 객체로 변환
  • 언박싱(unboxing): Wrapper 객체에 들어 있는 기본 타입의 값을 빼내는 것

 

Ex5

public class AutoBoxingUnBoxingEx {
    public static void main(String[] args) {
        int n = 10;
        Integer intObject = n;
        System.out.println("intObject = " + intObject);

        int m = intObject + 10;
        System.out.println("m = " + m);
    }
}


String 객체

  • java.lang 패키지 내에 포함된 클래스
  • String 클래스는 하나의 문자열 표현
  • String 생성자


String 생성 방법

  • 리터럴로 생성
    • JVM이 리터럴을 관리하고 리터럴 테이블로 관리된다.
    • 동일한 리터럴 공유 가능
  • String 객체로 생성
    • 힙 메모리에 String 객체가 생성된다.

  • String 객체는 수정이 불가하다.
String s = new Stiring("Hello");
String t = s.concat("World!");​

 

  • String 비교시 반드시 equals()를 사용

💡 '==' 연산자는 Call by Reference방식으로 사용되므로 문자열 비교에는 사용하면 안된다.  
(주소값이 같을 경우 true반환)


문자열 연결

  • 피연산자에 문자열이나 객체가 포함되어 있는 경우
  • 객체.toString()을 호출하여 문자열로 변환하여 연결한다.
  • 기본 타입 값은 문자열로 변환하여 연결한다.
  • String concat(String str)
  • 기존 String 객체에 연결되지 않고 새로운 스트링 객체를 리턴한다.


StringBuffer 클래스

: 가변 크기의 문자열 저장 클래스

  • Java.lang 패키지내에 포함
  • String 클래스와 달리 문자열 변경 가능
  • StringBuffer 객체의 크기는 스트링 길이에 따라 가변적
StringBuffer sb = new StringBuffer("java");


주요 메소드


StringBuffer 메소드 활용


StringTokenizer 클래스

: 하나의 문자열을 여러 문자열로 분리

String query = "name=kim&addr=seoul&age=21";
StringTokenizer st = new StringTodenizer(query, "&");
  • 문자열을 분리할 때 사용되는 기준 문자 : 구분자(delimiter)
  • 토큰(token) : 구분 문자로 분리된 문자열
  • String 클래스의 split() 메소드를 이용하여 동일한 구현 가능


생성자


주요 메소드

Ex6

import java.util.StringTokenizer;

public class StringTokenizerEx {
    public static void main(String[] args){
        StringTokenizer st = new StringTokenizer("홍길동/장화/홍련/콩쥐/팥쥐", "/");
        while(st.hasMoreTokens())
            System.out.println(st.nextToken());
    }
}


Math 클래스

  • java.util.Random 클래스
    • 다양한 형태로 난수 발생 가능

#난수 발생

  • static double random()
  • 0.0 이상 1.0 미만의 임의 double 값 반환
  • 0에서 100사이 10개의 난수 발생
for(int x=0; x<10; x++) {
    int n = ( int Math.random ()*100 + 1); // n 은 [1~100] 사이의 랜덤 정수
    System.out.println(n);
}

Calendar 클래스

  • java.util 패키지 내에 포함
  • 시간과 날짜 정보 저장 및 관리

 

 

 


 

 

모듈화와 패키지 응용

모듈

www.notion.so

 

아래 노션 페이지에 자바 공부 내용에 대해 업로드 합니다!

수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑

 

 

JAVA 이론 정리

주석 단축키 주석 처리하고 싶은 부분을 블록 처리하고 ‘Ctrl+Shift+ / ’를 누르면 /* */로 주석 처리가 됩니다. 주석을 해제하고 싶은 부분을 블록 처리하고 ‘ Ctrl+Shift+ \ (원 표시 혹은 역슬러시)

www.notion.so

 


개발 환경

Intellij

 

작성 플랫폼

Notion

728x90

'🧑‍💻 Language > Java' 카테고리의 다른 글

[Java] 14. 스윙  (0) 2021.06.05
[Java] 13. GUI  (0) 2021.06.01
[Java] 11. 모듈과 패키지  (2) 2021.05.26
[Java] 10. 인터페이스  (0) 2021.05.26
[Java] 9. 추상 메소드와 추상 클래스  (0) 2021.05.16