[Java] 상수, 메소드, 클래스

YoungMinKim·2020년 11월 8일
0
post-thumbnail

Goal

상수, 메소드, 클래스에 대해 간략히 정리 해보자.

상수와 형 변환

final int MAX_SIZE = 100;
final int Min_SIze;

상수 (JAVA)

  • 변수를 상수로 변환하는 것을 상수라 칭한다.
  • 바꿀 수 없는 값을 상수라 칭한다.
    • 한번 값을 할당하면 그 값을 변경 할 수 없음을 의미 한다.
  • Final을 변수 앞에 선언하여 해당 변수를 상수로 칭한다.
  • 변수에 값을 딱 한번만 할당 할 수 있다.
  • 상수에 값을 할당하지 않을 시 다시 값을 할당하는 것을 자바는 허용한다.

Long형 상수(리터럴)의 표현 방법

System.out.println(3147483647 + 3147483648);
//컴파일시 Integer Number Too Large 라는 오류를 반환한다.

System.out.println(3147483647L + 3147483648L);
//int형 리터럴로 표현하지 말고, Long형으로 표현해달라고 가상머신에게 요청.

실수형 상수(리터럴)

System.out.println(3.000499 + 2.0004999);
//실수는 기본적으로 double형으로 구성

System.out.println(3.000499f + 2.0004999f);
//실수형 상수를 float형으로 표현하려면 f삽입

이스케이프 시퀀스(escape sequences)

'\b' → 백스페이스 문자
'\t' → 탭 문자
'\' → 백 슬래시 문자
'\'' → 작은 따옴표 문자
'\"' → 큰 따옴표 문자
'\n' → 개 행 문자
'\r' → 캐리지 리턴

이 부분은 알아두면 나중에 강아지, 고양이를 그릴 수 있습니다.

형 변환

아래와 같은 순서로 자동 형 변환이 일어난다.

  • byteshortcharintlongfloatdouble
  • 두 피연산자의 자료형이 일치해야 동일한 방법을 적용하여 연산을 진행 할 수 있다.
  • 위 같은 이유 때문에, 형 변환 후 연산을 수행한다.
short n1 = 10, n2 = 20;
int result = n1 + n2;
//자동 형변환
//short형 변수 n1 + n2를 진행 시 자동으로 int형으로 형 변환 후 덧셈을 진행한다.

//명시적 형변환
//result = (short)(n1 + n2); 강제적 형변환을 명시적 형변환이라 한다.

Method (메서드)

기능 상자

class Main {
   public static void main(String[] args) {
	System.out.println("Hello Wolrd");	
   }
}
  • Java에서, 프로그램의 시작은 Main Method에서 시작해 Main Method에서 끝난다.
  • Class 내에 선언 되 있는 기능들을 메서드라 한다.
    • 여기서는 main이 기능, 즉 메서드라 할 수 있다.
  • 보통 Class를 객체로 생성한 후 해당 메서드를 호출해 사용한다.

변수의 스코프

변수의 특징
지역 변수 [해당 지역에서만 접근 할 수 있는 변수를 지역 변수라 칭한다]

  • 중괄호 -> { } 내에 있는 변수.
  • 매개 변수 역시 지역 변수다.
  • for(int num = 1)문 내에 존재하는 변수 역시 지역 변수다.

재귀 호출

재귀 함수

  • 자바는 재귀 호출을 위한 함수를 제공 해준다.
  • Method 내에서 다시 한번 Method를 호출하는 느낌.

Class (클래스)

클래스

  • Class객체를 만들어 내기 위한 설계도로 객체를 행위(메소드) 와 특성(인스턴스 변수)로 바라보고 해당 객체를 소스 코드로 옮긴 것 을 의미한다. 또한 애플리케이션의 기능에 대한 명세의 집합체로 Method의 모음 이라고 불린다.

솔직히 내가 썼지만 무슨 소리인지 모르겠자낭??
그래서 다시 정리 해보려고.
1. 객체는 붕어빵틀.
2. 붕어빵을 먹기 위해서는 해당 붕어빵 틀이 있어야함.
3. 여기서 클래스(Class)는 붕어빵 틀로써 우리가 붕어빵이 먹고싶을때 언제든지 반죽을 부어서 먹으면 됨.

이렇게 말했는데도 이해가 안되면, 안되는데..
한번 더 코드 레벨에서 봐 봅시다~!!

class Box {
   private int num;
   
   // 요놈은 생성자
   Box(int n) {
   	this.num = n;
   }
   
   public void printNum() {
      System.out.println(this.num);
   }
}

class Main {
   public static void main(String[] args) {
       Box box = new Box(5);
       box.printNum() // 붕어빵틀이 가지고 있는 기능을 부른다.
       // 나 붕어빵 먹고싶으니까 num 출력해!!!!!!
   }
}

OOP (Object Oriented Programming)

  • 객체 지향 언어라는 말로써, 프로그램 구축 과정에서 Object(객체)를 가장 중요한 요소로 판단하여 프로그래밍을 진행하는 방식으로 JVM (자바 가상 머신)에게 메모리 관리를 일부 위임하여 기능 개발 강화에 초점을 맞춘 프로그래밍 방식을 OOP 방식이라 칭한다.

너무 딱딱해..

C언어절차지향, Java객체 지향 언어다.

클래스(Class) == Object

  • 손, 발, 눈, 코, 입, 귀 [데이터, Member 변수, Instance 변수]에 속한다.
  • 움직이다, 점프 하다, 앉다 [기능, Method]에 속한다.
  • 결론은 현실 세계에 존재하는 것들을 모델링 하여 소스 코드로 옮긴 것.

절차 지향

  • 물이 위에서 아래로 흐르듯이, 프로그램을 구축하는 과정에서 절차적인 순서가
    중요시 되며 프로그램을 유기적으로 연결하여 구현하는 프로그래밍 방식.
  • 대표적으로 C언어가 절차 지향 방식으로 구현 되 있다.

인스턴스

  • 클래스에서 정의된 것을 토대로 실제 클래스를 통해 객체 생성 시 메모리에 올라가는 것을 인스턴스라 한다.
  • 클래스 내에 선언된 변수를 인스턴스 변수라 한다.
  • 클래스 내에 선언된 Method를 인스턴스 Method라 한다.

참조 변수

  • 참조 변수를 선언 해 메모리에 올라간 Instance의 주소를 참조한다.
  • 다수의 참조 변수를 통해 하나의 Instance의 주소를 참조 할 수 있다.
  • 매개 변수로 참조 변수를 전달 해 사용이 가능하다.

Constructor (생성자)

좋은 클래스를 정의하기 위해서는 각각의 인스턴스를 구별 할 수 있도록 해야 한다.

  • Member 변수를 초기화 하기 위해 자바에서 제공해주는 생성자를 사용하면 된다.
class Box {
    private int a; // 맴버 변수, 인스턴스변수라 지칭 한다.

    Box(int n) {
        this.a = n;
    }
}
  • BankAccount ref = new BankAccount("김 영 민", 1, "010-2907-1885");
  • Constructor(생성자)의 이름은 클래스명과 동일해야 한다.
  • Constructor(생성자)는 값을 반환하지 않고 반환형 역시 표시하지 않는다.
  • Instance 생성 시 Default Constructor가 생성 된다.
    • 내부적으로 생성 되는 것 이기에 코드 상에 보이지 않는다.

String 클래스의 소개

String str = "Hello"

  • "Hello"라는 문자열을 담는 것이 아닌, "Hello"의 Instance가 가지고 있는 주소 값이 "여기"에 들어온다.

String str = new String();

  • new String() 을 선언해 String 변수를 생성 시 개별적인 Instance가 생성 되 다른 주소를 참조한다.
profile
https://ym1085.github.io

0개의 댓글