[Java] 변수

rara_kim·2022년 6월 9일
0

Java

목록 보기
1/39

🤔변수

변수는 값을 저장할 수 있는 메모리상의 공간이며, 데이터 타입(Data Type)을 가진다.

1️⃣기본형 타입(Primitive Type)

  • 변수의 실제 값(data)을 저장한다.

  • 기본형 타입으로는 문자형, 논리형,정수형, 실수형이 있다.

  • 기본형 타입은 총 8가지이며, 나머지는 모두 참조형 데이터 타입을 가진다.

    Type1byte2byte4byte8byte
    문자형char
    논리형boolean
    정수형byteshortintlong
    실수형floatdouble

2️⃣참조형 타입(Reference Type)

  • 어떤 값이 저장되어 있는 주소(memory address)를 값으로 갖는다.
  • 참조라는 것은 원래 저장공간의 메모리 주소를 저장한다는 의미이다.
  • 참조형 타입은배열([]), 클래스(String, Date, Random 등), 인터페이스(Runnable,Enumeration 등)이 있다.

🔑변수의 명명 규칙

1️⃣대소문자가 구분되며 길이에 제한이 없다.
Truetrue는 서로 다른 것으로 간주된다.

2️⃣예약어를 사용해서는 안 된다.
true는 예약어라서 사용할 수 없지만, True는 가능하다.

3️⃣숫자로 시작해서는 안된다.
var10은 허용하지만, 7var은 허용되지 않는다.

4️⃣특수문자는 '_'와 '$'만을 허용한다.
$var10은 허용되지만, v$ar은 허용되지 않는다.

🌟그 외에 필수적인 것은 아니지만 개발자들에게 권장하는 규칙들도 있다.
1. 클래스 이름의 첫 글자는 항상 대문자로 한다.
- 변수와 메서드의 이름의 첫 글자는 항상 소문자로 한다.
2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
- lastIndexOf, StringBuffer
3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
- PI, MAX_NUMBER

위의 규칙들은 반드시 지켜야 하는 것은 아니지만, 코드를 보다 이해하기 쉽게 하기 위한 개발자들 사이의 암묵적인 약속이다. 이 규칙을 따르지 않는다고 해서 문제가 되는 것은 아니지만 가능하면 지키는 것이 좋다.

변수의 이름은 짧을 수록 좋지만, 약간 길더라도 용도를 알기 쉽게 의미있는 이름으로 하는 것이 바람직하다.
변수의 선언문에 주석으로 변수에 대한 정보를 주는 것도 좋은 생각이다.


💡변수의 종류

자바에서의 변수는 4가지 종류가 있다.

  • 클래스 변수
  • 인스턴스 변수
  • 지역변수
  • 매개변수

변수는 선언위치예약어로 구분한다.

클래스 변수

클래스 내에 static이라는 예약어로 선언된 변수이다.
인스턴스마다 독립적인 저장공간을 갖는 인스턴스 변수와는 달리, 클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)를 공유하게 된다.
한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야하는 속성의 경우, 클래스 변수로 선언해야 한다.

클래스 변수는 인스턴스 변수와 달리 인스턴스를 생성하지 않고도 언제라도 바로 사용할 수 있다는 특징이 있으며, 클래스이름.클래스변수와 같은 형식으로 사용한다.

클래스가 메모리에 로딩(loading)될 때 생성되어 프로그램이 종료될 때 까지 유지되며, public을 앞에 붙이면 같은 프로그램 내에서 어디서나 접근할 수 있는 전역변수의 성격을 갖는다.

인스턴스 변수(멤버변수)

클래스 영역에 선언되며, 클래스의 인스턴스를 생성할 때 만들어진다.
그렇기 때문에 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서는 먼저 인스턴스를 생성해야 한다.(클래스 변수와의 차이점)

인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다.
인스턴스마다 고유한 상태를 유지해야 하는 속성의 경우, 인스턴스로 선언한다.

지역변수

메소드 내에 선언되며 메소드 내에서만 사용 가능하며, 메소드가 종료되면 소멸되어 사용할 수 없게 된다.
for문 또는 while문의 블럭 내에 선언된 지역변수는, 지역변수가 선언된 블럭{} 내에서만 사용 가능하며, 블럭을 벗어나면 소멸되어 사용할 수 없게 된다.

매개변수

매개변수는 메소드가 작업을 수행하는데 필요한 값들(입력)을 제공받기 위한 것이며, 필요한 값의 개수만큼 변수를 선언하며 각 변수 간의 구분은 쉼표(,)를 사용한다.
한 가지 주의할 점은 일반적인 변수선언과 달리 두 변수의 타입이 같아도 변수의 타입을 생략할 수 없다는 것이다.

선언할 수 있는 매개변수의 개수는 거의 제한이 없지만, 만일 입력해야할 값의 개수가 많은 경우에는 배열이나 참조변수를 사용하면 된다.
만일 값을 입력받을 필요가 없다면 괄호() 안에 아무것도 적지 않는다.

public class Test{
	static int calssVar = 10;    //클래스 변수
    	   int instanceVar = 20;   //인스턴스 변수
    
    public void method(int x, int y) {    //() 안의 매개변수
    	int localVar = x + y;    //지역변수
      	System.out.println(localVar);  
    }
profile
느리더라도 꾸준하게

0개의 댓글