JAVA 문법 뽀개기

park·2022년 10월 31일
0
post-custom-banner

= 는 할당을 의미

접근제어자는 있을 수도 있고 없을 수도 있다.

변수 : 어떠한 데이터를 저장하기 위한 메모리 공간의 이름입니다. 지속적으로 변수의 값을 변경할 수 있다.

상수 : 중간에 값이 변할 수 없으며 초기값을 끝까지 사용해야 한다.

변수를 선언할 때는 [접근제어자], [변수의 자료형], [변수의 이름] 의 방식

MAX_VALUE MIN_VALUE, 최대값 최소값

자바에서 참조 자료형은 기본 자료형이 아닌 모든 것을 참조 자료형이라고 한다. 더 정확히는 참조 자료형이란 자바의 인스턴스(객체)를 가리킬 수 있는 자료형이다.

class로 정의된 타입을 쓸 때는 다 참조자료형이다.

배열이란? 동일한 자료형의 데이터를 연속된 공간에 저장하기 위한 자료구조
자료형[] 변수 = new 자료형[배열의크기] 의 형태

배열은 선언과 동시에 크기를 지정받습니다. 그러므로 고정된 크기를 가진다. 실제 프로그램이 돌아가면서 항상 고정된크기의 배열을 쓰기는 쉽지 않다. 그래서 실무에서는 대부분 배열보다는 ArrayList 라는 Collection 을 사용한다.

조건문에는 대표적으로 if, switch ,삼항연산자 조건문이 있다.

반복문에는 대표적으로 for 과 while 그리고 do ~ while 이 있다.

어떠한 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다


메소드가 필요한 이유

  1. 재사용성
    • 메소드를 만들어 놓으면 이후 반복적으로 재사용이 가능. 물론, 다른 프로그램에서도 사용이 가능.
  1. 중복된 코드 제거
    • 프로그램을 작성하다보면 같은 코드가 여러번 반복되어 작성되곤 한다. 메소드를 활용하면 중복된 부분을 없애므로 보다 효율적인 코드가 된다.
  1. 프로그램 구조화

생성자는 인스턴스가 생성될 때 사용되는 '인스턴스 초기화 메소드'이다. 즉 new 와 같은 키워드로 해당 클래스의 인스턴스가 새로 생성될 때, 자동으로 호출되는 메소드

클래스이름 (타입 변수명, 타입 변수명, ...){
인스턴스 생성 될 때에 수행하여할 코드
변수의 초기화 코드}		
  1. 생성자의 이름은 클래스명과 같아야 한다.
  2. 생성자는 리턴 값이 없다.

상속이란 기존의 클래스를 재사용하는 방식 중의 하나입니다.한 번 작성한 코드가 재사용이 필요하다면, 변경사항만 코드로 작성하므로 상대적으로 적은 양의 코드를 작성할 수 있게 됩니다.

오버로딩 : 기존에 없는 새로운 메소드를 정의하는 것
오버라이딩 : 상속받은 메소드의 내용을 변경하는 것


접근 제어자 ▶ 접근의 권한을 구분한 것

→ private : 같은 클래스 내에서만 접근이 가능합니다

→ default(nothing) : 같은 패키지 내에서만 접근이 가능합니다.

→ protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능합니다.

→ public : 접근 제한이 전혀 없습니다.

접근 제어자 사용 이유:

  • 객체지향 프로그래밍이란 객체들 간의 상호작용을 코드로 표현하는 것
  • 이때 객체들간의 관계에 따라서 접근 할 수 있는 것과 아닌 것, 권한을 구분할 필요
  • 클래스 내부에 선언된 데이터의 부적절한 사용으로부터 보호하기 위해서
  • 이런 것을 캡슐화(encapsulation)라고 한다.
  • 접근 제어자는 캡슐화가 가능할 수 있도록 돕는 도구

추상클래스란?

  • 추상클래스는 추상메소드를 선언할 수 있는 클래스를 의미합니다.
  • 또한 추상클래스는 클래스와는 다르게 상속받는 클래스 없이 그 자체로 인스턴스를 생성할 수는 없습니다.

추상메소드란?

  • 추상메소드는 설계만 되어있으며 수행되는 코드에 대해서는 작성이 안된 메소드

  • 이처럼, 미완성으로 남겨두는 이유는 상속받는 클래스 마다 반드시 동작이 달라지는 경우에 상속받는 클래스 작성자가 반드시 작성하도록하기 위함

  • 메소드 형식
    👉 abstract 리턴타입 메소드이름();


인터페이스란?

  • 객체의 특정 행동의 특징을 정의하는 간단한 문법

  • 인터페이스는 함수의 특징(method signature)인 접근제어자, 리턴타입, 메소드 이름만을 정의

  • 함수의 내용은 없고 인터페이스를 구현하는 클래스는 인터페이스에 존재하는 함수의 내용({} 중괄호 안의 내용)을 반드시 구현해야함

  • 인터페이스 형식

👉 interface 인터페이스명{
public abstract void 추상메서드명();}

인터페이스의 메소드는 추상메소드, static 메소드, default 메소드 모두 허용된다.

■ 인터페이스 vs 추상클래스

인터페이스

1. 구현하려는 객체의 동작의 명세
2. 다중 상속 가능
3. implements를 이용하여 구현
4. 메소드 시그니처(이름, 파라미터, 리턴 타입)에 대한 선언만 가능

추상클래스

1. 클래스를 상속받아 이용 및 확장을 위함
2. 다중 상속 불가능 , 단일 상속
3. extends를 이용하여 구현
4. 추상메소드에 대한 구현 가능

예외, 에러처리

  • 예외처리의 목적
    1. 예외의 발생으로 인한 실행 중인 프로그램의 비정상 종료를 막기 위해서
    2. 개발자에게 알려서 코드를 보완할 수 있도록 하게 위해서

try-with-resource 형식
→ try()안의 입출력 스트림을 생성하는 로직을 작성할 때 해당 객체가 AutoClosable 인터페이스를 구현한 객체여야 한다. AutoClosable 인터페이스에는 예외가 발생할 경우 close()메소드를 호출하기로 정의되어있기 때문이다.


날짜와 시간

패키지(package)란?
간단하게는 클래스의 묶음. 패키지에는 클래스 혹은 인터페이스를 포함시킬 수 있으며 관련된 클래스끼리 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다.

now() vs of()
now() 와 of()는 객체를 생성할 때 사용된다. now()는 현재의 날짜 시간을, of()는 지정하는 값이 필드에 담겨진다.


post-custom-banner

0개의 댓글