변수와 메서드
1. 변수(variable)
🔷 변수의 종류
영역은 클래스 영역과 메서드 영역으로 나눌 수 있고, 변수가 선언된 영역에 따라서 변수의 종류를 구분할 수 있다.
class Variables{ /* 클래스 영역 */ int iv; // 인스턴스 변수 static int cv; // 클래스 변수(static변수) /* 메서드 영역 */ void method(){ int lv = 0; // 지역변수 /* 메서드 영역 끝 */ } /* 클래스 영역 끝 */ }
🔷 클래스 변수와 인스턴스 변수
🔹 클래스 변수
인스턴스 변수 앞에 static만 붙이면 된다.
모든 인스턴스가 공통된 저장공간을 공유한다.
한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야 하는 속성
인스턴스를 생성하지 않고 바로 사용할 수 있다. ➡️ 클래스이름.클래스변수
앞에 public을 붙이면 프로그램 내 어디서든 사용할 수 있는 전역변수(global variable)의 성격을 갖는다.
예) 카드의 크기(가로, 세로)
🔹 인스턴스 변수
클래스 영역에서 선언되고, 인스턴스를 생성할 때 만들어진다.
인스턴스 변수에 값을 저장하거나 가져오려면 인스턴스를 먼저 생성해야한다.
예) 카드의 무늬, 숫자
class Card{ // 인스턴스 변수 String kind; int number; // 클래스 변수 static int width = 100; static int height = 200; }
2. 메서드(method)
🔷 메서드란
특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것
(하나의 메서드는 하나의 기능만 넣는 것이 좋다.)
🔷 메서드를 사용하는 이유
🔹 1. 높은 재사용성
한 번 만들어 놓은 메서드는 몇 번이고 호출할 수 있을 뿐 아니라 다른 프로그램에서도 사용가능하다.
🔹 2. 중복되는 코드 제거
🔸 코드를 짜다보면 같은 코드를 중복해서 쓰는 경우가 있는데 이런 코드들을 하나로 묶어서 메서드로 만들어서 사용하면 코드의 길이도 짧아진다.
🔸 또한 나중에 수정할 경우 수정해야할 코드도 줄어들게 되고 수정으로 인한 오류의 가능성도 낮아진다.
🔹 3. 구조화
작업을 할 때, 여러개의 메서드를 사용하여 프로그램의 구조를 단순화 시키는 것이 필수.
1. 설계 시 내용 없는 메서드를 작업단위로 만든다.
2. 만들어 놓은 메서드들을 하나씩 구현해간다.
🔷 메서드의 구조
선언부(header)와 구현부(body)로 이루어진다.
🔹 선언부
[반환타입][메서드 이름][매개변수 선언]
🔸 반환타입 : 반환하는 값의 타입을 적는다. 없는 경우 void.
🔸 메서드 이름 : 메서드의 이름은 동사로 작성하는 경우가 많고, 이름만으로 메서드의 기능을 유추할 수 있도록 짓는 것이 좋다.
🔸 매개변수: 작업에 필요한 값들을 제공받기 위한 것이다.
🔹 구현부
{}안에 들어가는 내용을 모두 구현부라고 한다.
반환타입이 void가 아닌 경우를 제외하고 모두 return문이 있어야 한다.
메서드 내에 선언된 변수들은 해당 메서드 내에서만 사용할 수 있다.(지역변수라고 부른다.)
➡️ 같은 메서드 내에서 같은 변수의 이름은 사용할 수 없지만, 메서드가 다르다면 변수의 이름이 같아도 사용가능하다.
/* 선언부 */ int add(int a, int b){ /* 구현부 */ int result = x + y; // 메서드 구현 return result; // 반환값
🔹 호출
메서드를 사용하기 위해서는 먼저 정의를 한 후, 호출을 해야 사용할 수 있다.
메서드 호출 시, 정의된 메서드의 {}안에 구현된 코드들이 실행된다.public static void main(String args[]){ int result = add(3, 5); // add메서드 int add(int a, int b){ ... } }
🔸 같은 클래스 내의 메서드는 참조변수를 사용하지 않고 호출이 가능한다.
하지만 static메서드는 같은 클래스 내의 인스턴스 메서드를 호출, 사용할 수 없다.
➡️ 인스턴스 객체의 생성 여부를 알 수 없기 때문이다.
🔷 매개변수
메서드를 호출할 때, 매개변수로 지정한 값을 복사해서 넘겨준다.
➡️ 기본형일 때는 값이 복사, 참조형일 때는 인스턴스의 주소가 복사된다.
🔸 기본형 매개변수 : 변수의 값을 읽기만 할 수 있다.
🔸 참조형 매개변수 : 변수의 값을 읽고, 수정할 수 있다.
🔹 기본형 매개변수
class Data{ int x; } class PrimitiveParam{ public static void main(String args[]){ Data d = new Data; d.x = 10; // d.x = 10 change(d.x); change(d.x) = 1000 // 참조변수 없이 메서드를 사용한 이유 // 1. static메서드라서 // 2. 같은 클래스라서 System.out.println(d.x) // d.x = 10 } static void change(int x){ x = 1000; }
🔹 참조형 매개변수
class Data { int x; } class ReferencesParam{ public static void main(String args[]){ Data d = new Data; d.x = 10; // d.x = 10 change(d); // chagne(d.x) = 1000 System.out.println(d.x) // d.x = 1000 } static void change(Data d){ d.x = 10000; } }
Author And Source
이 문제에 관하여(변수와 메서드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyunbenny/변수와-메서드저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)