。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

ㅋㅌ

자바 클래스

quarrrter 2023. 6. 19. 01:42

클래스 문법의 용도

1. 사용자 정의 데이터 타입 만들 때 (새로운 구조의 메모리를 설계할 때)

2. 관련된 기능의 메서드를 묶을 때

 

중첩 클래스(nested class)

다른 클래스 안에 정의된 클래스. 그 클래스 안에서만 사용됨.

1. 스태틱 중첩클래스

  - 소유하고 있는 클래스 뿐만 아니라 다른 클래스도 사용 가능

2. 논-스태틱 중첩클래스

  - 특정 인스턴스에 종속된 클래스인 경우 논스태틱 중첩으로 정의 

3. 로컬 클래스

  - 메서드 블럭 안에 정의된 클래스. 그 메서드 블럭 안에서만 사용 가능

4. 익명 클래스 

  -클래스 이름이 없는 중첩 클래스. 딱 한 개의 인스턴스를 생성할 때 사용하며, new로 생성 

 

◎ 스태틱 멤버는 논-스태틱 중첩 클래스를 사용할 수 없다. 

◎ 논-스태틱 멤버는 스태틱 중첩 클래스를 사용할 수 있다. 

◎ 다른 패키지의 클래스 사용시 import할 때 패키지 이름을 항상 붙여야 컴파일 가능하다.

◎ import 패키지명.*;  와일드카드 사용 가능하지만 구체적으로 적기 

◎ java.lang 패키지에 있는 클래스는 패키지를 지정하지 않아도 됨. 그 하위 패키지는 해당 없음 

main( ) { } 블럭 안에서 정의한 클래스는 그 안에서만 사용 가능하다. 

 

 

◎ GRASP(General Responsibility Assignment Software Patterns) 패턴
=> Information Expert: 데이터를 다룰 때는 그 데이터를 갖고 있는 객체에게 묻는다.

 

◎ 인스턴스 메서드를 호출할 때 넘겨준 인스턴스 주소는 this 라는 내장 변수(built-in)에 자동으로 보관된다.

 

◎ 멤버의 접근 범위 설정
=> public: 모두 공개
=> protected: 서브 클래스와 같은 패키지의 멤버는 접근 가능
=> (default): 같은 패키지의 멤버는 접근 가능
=> private: 접근 불가! 그 멤버가 속한 클래스의 내부에서만 접근 가능

 

◎ 생성자 도입: 인스턴스를 생성할 때 값을 초기화시키는 특별한 메서드

 

◎ 인스턴스 변수 = 논스태틱 변수

A obj1 = new A(); 

new로 생성된 메모리 = 인스턴스 or 객체

obj1 = 레퍼런스 

A의 v1, v2 = 인스턴스 변수 

 

◎ 클래스 로딩

외부 저장장치에 있는 .class 파일을 JVM이 관리하는 메모리로 로딩하는 것. 

코드를 사용하는 시점에 Method Area에 로딩되며, 한 번만 로딩됨. 

 

 

◎ 인스턴스 메서드와 클래스 메서드

1) 클래스 메서드 = static 메서드
 => static 붙은 메서드이다.
=> 클래스 이름으로 호출할 수 있다.
2) 인스턴스 메서드 = non-static 메서드
=> static 이 붙지 않은 메서드이다.
=> 인스턴스 주소가 있어야만 호출할 수 있다.
실무
> 일단 인스턴스 메서드로 무조건 만들라!
> 인스턴스 변수를 완전히 사용하지 않음을 확신하면 
그 때 클래스 메서드로 전환하라!

로컬 변수는 자동으로 초기화 되지 않기때문에 사용 전 반드시 초기화 해야함.

int i = 0; 

◎ 클래스 변수(스태틱 변수) & 인스턴스 변수는 생성되는 순간 0으로 자동 초기화 된다.

 

 

 

◎ Math 클래스

Math 클래스는 수학 관련 메서드를 모아둔 클래스이다.
전체 메서드가 "클래스 메서드=스태틱 메서드"이다.

=> 절대값 계산
    System.out.println(Math.abs(-200));

=> ceil() : 파라미터로 주어진 부동소수점이 바로 위 큰 정수 값을 리턴
=> floor() : 파라미터로 주어니 부동소수점의 바로 밑 작은 정수 값을 리턴
    System.out.println(Math.ceil(3.28)); // 4
    System.out.println(Math.floor(3.28)); // 3
    
    System.out.println(Math.ceil(-3.28)); // -3
    System.out.println(Math.floor(-3.28)); // -4

=> 2의 7승 값을 알고 싶을 때
    System.out.println(Math.pow(2, 7));

=> 반올림하여 정수 값 리턴
    System.out.println(Math.round(3.14));
    System.out.println(Math.round(3.54));

◎ Calendar 클래스

Calendar 클래스
오늘 날짜 및 시간 정보를 저장한 객체를 만들어 리턴한다.
달력은 그레고리안 달력을 사용한다.

    Calendar c = Calendar.getInstance();

    System.out.println(c.get(Calendar.YEAR)); // 년도
    System.out.println(c.get(Calendar.MONTH) + 1); // 월(0 ~ 11)
    System.out.println(c.get(Calendar.DATE)); // 일
    System.out.println(c.get(Calendar.DAY_OF_WEEK)); // 요일(1 ~ 7)
    System.out.println(c.get(Calendar.WEEK_OF_MONTH)); // 그 달의 몇 번째 주
    System.out.println(c.get(Calendar.HOUR)); // 시(0 ~ 11)
    System.out.println(c.get(Calendar.HOUR_OF_DAY)); // 시(24시)
    System.out.println(c.get(Calendar.MINUTE)); // 분
    System.out.println(c.get(Calendar.SECOND)); // 초

◎ Date 클래스

Date 클래스
 날짜 데이터를 문자열로 다룰 때 yyyy-MM-dd 형식으로 다루기 때문에 편리하다.

    // 스태틱 메서드 활용
    long currMillis = System.currentTimeMillis();

    // 생성자 활용
    java.sql.Date today = new java.sql.Date(currMillis);

    // 인스턴스 메서드 활용 
    String str = today.toString();
    System.out.println(str);

'ㅋㅌ' 카테고리의 다른 글

.cotains() & toLowerCase();  (0) 2023.06.20
자바 메서드  (0) 2023.06.20
[java] 정수를 문자열로  (0) 2023.06.17
정수 -> 문자, i번째 문자-> string -> 정수  (0) 2023.06.15
자바 문법 정리  (0) 2023.06.14