[Java]기본6~15강 까지의 내용 정리

bacccine·2022년 4월 18일
0

Java

목록 보기
3/7

메서드부터 배열응용까지

클래스 메소드 사용 방법

클래스명.메소드명()

클래스 내부에 위치한 메소드는 바로 호출이 가능하다

메소드 실행 순서

Stack과 같다, 가장 먼저 실행된 메소드는 가장 나중에 종료

메소드 오버로딩이란?

  • over(넘치다)+load(저장하다)로, 메소드의 이름이 같으면서 매개변수의 자료형,갯수, 순서 중 하나 이상이 다른 경우
  • 동일한 메소드 명으로 실행 가능
  • 오버로딩 ≠ 오버라이딩

생성자

  • 생성자는 return 값이 없다
  • 클래스 명과 같다
  • 매개변수가 있을 수도, 없을 수도 있다
  • 모든 클래스는 생성자가 1개 이상 존재, 생성자가 없으면 컴파일러가 자동으로 기본 생성자 추가
  • 객체가 생성될 때 가장 먼저 실행

생성자의 용도

객체 초기화, 객체 필드 초기화

생성자 오버로딩

생성자의 이름이 같으면서 매개변수의 자료형, 갯수, 순서 중 하나 이상이 다른 경우, 메소드 오버로딩과 동일

패키지

  • 폴더 역할에 해당, .을 이용해서 상위 패키지와 하위 패키지를 구분
  • 클래스명이 같아도 패키지명이 다르면 다른 클래스에 해당
  • 코드의 가장 첫 줄에 선언
  • import 패키지1.패키지2.패키지3.클래스명; 의 형태로 불러온다
  • import로 불러오지 않는다면 패키지명.클래스명 처럼 패키지명을 명시해주어야 함

패키지 명명 규칙

  • 숫자로 시작 불가, _와 $ 외의 특수문자 사용 불가
  • 관례적으로 영문 소문자로 작성하며, 회사에선 회사 도메인으로 많이 사용한다
  • java로 시작하는 패키지명은 JAVA 기본 API에서 사용하고 있어서 불가능

클래스 초기화 블럭(static 초기화 블럭)

  • 클래스가 메모리에 저장되는 시점에 한 번만 실행, 한 번 저장되면 다시 저장할 필요가 없기 때문
  • 클래스 변수를 초기화할 때 종종 사용된다
  • 예시
static {

System.out.println("클래스 초기화 블럭");

}

인스턴스 초기화 블럭

  • 클래스 내에 중괄호 블럭으로만 선언
  • 클래스를 객체로 초기화할 때 실행되는 블럭
  • 객체를 생성할 때마다 실행
  • 초기화 블럭은 생성자보다 먼저 실행된다
  • 생성자와 용도 차이가 없다, 따라서 자주 사용되지 않음
  • 예시
{

System.out.println("인스턴스 초기화 블럭");

}

접근제한자

  • 필드와 메소드의 보안을 위해 접근을 제한하기 위한 수식자
  • JAVA는 메인 메소드가 있는 클래스는 하나이고, 그 외 클래스는 다른 곳에서 사용되기 위해 만들어졌다,
    따라서 클래스 설계 시 여러 곳에서 사용할 수 있게 하거나 지정한 곳에서만 사용할 수 있도록 설계하여야 함
  • public > protected > default > private

public

모든 클래스,상속 관계, 동일 패키지 및 클래스에서 접근 가능

protected

같은 폴더 내 접근 가능, 상속 관계, 동일 패키지 및 클래스에서 접근 가능

default

같은 폴더 내 접근 가능, 동일 패키지 및 클래스에서 접근 가능

private

자신이 속한 동일 클래스 내에서만 접근 가능

접근 제한자를 사용하는 곳

클래스, 메소드,생성자, 변수

  • set메소드에 필드 제약조건(if문을 이용)을 지정할 수 있다
  • 정보은닉은 객체지향프로그래밍의 특징 중 하나

디자인 패턴이란?

객체를 생성하는 방법을 별도로 정의하여 패턴화한 것

싱글톤

  • private 접근 제한자를 사용하여 하나의 객체만 생성되도록 하는 기법
  • 하나의 객체만 생성 후 이를 사용한다
  • 객체가 많이 생성되면 메모리 부족과 시스템 속도 저하 문제가 생김, 이를 방지하기 위함

싱글톤 사용 방법

필드; 모든 객체에 공유하기 위해 static 키워드 사용

private static 클래스명 변수명 = new 생성자();

생성자; 다른 클래스에서 new 키워드로 객체를 생성할 수 없게 하기 위해 private 적용

private 클래스명() {
...
}

메소드; getter 메소드 역할

public static 클래스명 getInstance() {
return 필드명;
}
  • new로 생성하는 것이 아니라 클래스명.getInstance() 의 결과를 변수에 대입해서 사용한다

배열

  • 위치 정보 참조 자료형으로, 초기화하지 않은 상태에선 사용이 불가능하다
  • null 값으로 초기화 가능
  • 값이 담겨져 있는 순서
  • 선언 후 길이 변경 불가

배열 선언

(1) 자료형[] 변수명
(2) 자료형 변수명[]

ArrayList

  • 자바의 클래스, 다양한 자료형의 값 저장 가능
  • 값 추가는 add()로, 값 접근은 get() 메소드를 이용해서 수행
  • ArrayList 변수명 = new ArrayList(); 의 형태로 생성
  • 객체를 넣은 경우, Object로 저장되기 때문에 객체를 사용하려면 반드시 형변환을 해주어야 함

배열 복사

(1) System.arrayCopy(원본 배열, 인덱스 시작 위치 ,복사본을 넣을 배열, 인덱스 시작 위치 ,배열 크기)
(2) Arrays.copyOf(원본 배열, 배열 크기)

향상된 for 문

for(자료형 변수명 : 배열)

0개의 댓글