[JAVA] 메소드 실습, 메소드 목적, 클래스

SOYEON JEONG·2023년 4월 1일
0
post-thumbnail

메소드 목적

  1. 재사용(특정성을 부여해서는 안된다)
    1. 변수가 값을 재사용하는 것과 같이 메소드는 코드를 재사용한다.
      특정성이 있으면 안됨.
  2. 소스코드 간결화
    1. 너무 코드가 길어졌을 때 모듈화(부품화)를 하여 부분마다 메소드를 만든다.

static

컴파일러가 가장 먼저 메모리에 할당해준다.

일반 메소드를 static 메소드에서 사용하기 위해서는 아래의 두 가지 방법이 존재한다.

  1. 일반 메서드에 static을 작성하여 같은 시간대에 힙 메모리로 올려준다.
  2. 클래스 타입의 변수를 사용하여 그 변수를 활용해 일반 메소드의 소속을 알려준다.

※ 메소드 실습 시 계속 실수하는 부분
메소드 선언 시 타입을 잘 지켜주지 않는다.
코드를 짜고 나서 리뷰를 하지 않는다.(혹은 더 좋은 코드로 수정하지 않는다.)
charAt()와 indexOf() 메소드를 잘 활용하지 못한다.

클래스

클래스를 선언한다면 그 안의 변수와 메소드는 항상 공통요소를 가진 것을 선언한다.
한 번 선언 시 효율성, 생산성 증가

클래스명 변수; => (메모리 할당되지 않은 상태)
메모리 할당되어야 함.

클래스명 변수 = new 클래스명();

필드를 메모리에 올리고 올라간 필드의 주소값까지 가져오는 메소드.
메소드는 리턴값이 있을 경우 사용한 부분 통째로를 값으로 본다.
그러므로 클래스명( ) 라는 메소드도 할당된 필드의 주소값으로 보자.

  1. 타입이다.
    클래스 안에 선언된 변수와 메소드를 사용하고 싶다면,
    해당 클래스 타입으로 변수를 선언해야 한다.
  2. 주어이다.
    Monkey.eat(banana);

클래스 선언

📌 class 클래스명 { 필드(변수, 메소드) }

클래스의 필드 사용

  1. 객체화(instance)

    객체(instance variable)를 만드는 작업, 추상적인 개념을 구체화시키는 작업

    📌 클래스명 객체 = new 생성자( ); 추상 -> 구체화 주소값

    ※ . (마침표) : 하위연산자, 멤버변수 접근 연산자, 닷 연산자, 점 연산자
    주소값 뒤에서만 사용이 가능하며, 해당 주소를 참조(접근)하는 명령어이다.
    일반값 뒤에는 사용할 수 없음.

  2. static

    모든 객체가 공유해야하는 필드일 경우에 사용한다.
    클래스 하나 당 한 개만 생기기 때문에 객체로 접근하지 않고 클래스로 접근한다.

인스턴스 변수와 클래스 변수

생성자

클래스 이름 뒤에 소괄호가 있는 형태

메소드와 기능이 똑같지만 메소드라고 부르지 않는다. 생성자는 리턴이라는 기능이 존재하지 않기 때문이다.

  1. 해당 클래스의 필드를 메모리에 할당한 후 부여된 주소값을 가져온다.

    (주소값 = 이것이 생성자가 리턴해야하는 값)
    앞 글자가 소문자면 메소드();
    앞 글자가 대문자면 생성자();

    지역변수 : 지역이 종료되면 변수가 메모리에서 종료.
    전역변수 : 자바의 가장 큰 영역은 클래스, 그 클래스에서 선언된 변수는 전역변수 -> 자동 초기화

    과거에는 전역변수밖에 없었다.
    전역변수는 프로그램이 종료되면 메모리에서 해제됨.
    프로그램이 종료되기 전까지는 당장 안 써도 메모리에 존재 -> 메모리 낭비

    => 지역변수 : 메모리를 효율적으로 사용, 그 지역이 끝나면 메모리에서 해제

  2. 초기화
    기본 생성자 선언 아니고 사용
    매개변수가 없는 생성자이며, 클래스 선언 시 자동으로 선언된다.

A a = new A();
-> 클래스에는 A( ){ }가 자동으로 선언. 생략됨.

사용자가 직접 생성자를 선언하게 되면 기본 생성자는 없어진다.
필드에 생성자가 선언되어 있으면, 기본 생성자는 생성되지 않는다.

메소드의 한 가지 성질
구분점을 이름으로도 기준을 삼을 수 있지만, 매개변수로도 가능하다.

this
(우리가 직접 선언할 필요가 없는 매개)변수
자바에서의 전역변수는 this변수로 접근
접근한 객체가 가지고 있는 주소값
필드에 접근한 객체가 누구인지 알아야 해당 필드에 접근할 수 있다.
이 때 접근한 객체가 가지고 있는 필드의 주소값을 this라는 변수에 자동으로 담긴다.

profile
인프런에 취업하고 싶어!

0개의 댓글