1. 변수(variable)란?

  • 하나의 데이터 값을 저장할 수 있는 메모리의 공간을 의미한다

 1) 변수 선언

  • 변수는 메모리에 데이터를 임시로 저장하기 위하여 선언한다
  • '변수타입 + 변수명 = 값' 으로 작성한다 
    exe) int num = 1 ;
    좌항 = 우항
    변수 = 값
  • 변수 선언 후에는 항상 ' ; '을 붙인다
  • 변수에 값을 저장하는 것을 대입 또는 할당 이라고 한다
  • 변수에 값을 처음으로 할당하였을 경우를 '초기화 한다' 라고 한다
  • 초기화 후에 다시 변수에 값을 할당하는 것을 재할당 이라고 한다
  • 변수에 값을 재할당하면 기존에 가지고 있던 값이 재할당 되는 값으로 변경된다
  • 기존의 값이 재할당을 통해 변할 수 있으므로 변수라고 한다 
class Example {
	public static void main(String[] args) {
		int num; // 변수 선언
		num = 1; // 값 할당(변수 선언 및 초기화)
		num = 2; // 값 할당(재할당)
	}
}

 

 2) 메모리와 변수의 관계

  • 메모리는 메모리셀의 집합체이다
  • 메모리셀은 1byte의 크기를 가진다
  • 각각의 메모리셀에 데이터를 저장할 수 있다
  • 각각의 메모리셀에는 주소가 지정되어 있다
  • 메모리셀의 주소에 값을 대입할 수 있으나, 식별이 어렵다
  • 식별을 용이하게 하기 위하여 변수를 사용한다
    메모리 주소 사용 변수 사용
    class Example {
       public static void main(String[] args) {
          0xf38d2a6c = 1;
          0xa92d42b2 = 2;
          0x24de241c = 3;
          ...
       }
    }
    class Example {
       public static void main(String[] args) {
          int num1 = 1;    // num1(변수) , 1(값)
          int num2 = 2;
          int num3 = 3;
          ...
       }
    }

 

2. 변수 사용의 목적

  • 메모리에 데이터 저장 공간을 확보하기 위해서 사용한다
  • 여러 개발자와 협업을 진행할 경우 변수명을 붙여 데이터의 흐름을 상호간에 식별하여 소통할 수 있게 한다
  • 데이터를 재사용할 경우 변수명만으로 사용할 수 있어서 용이하다
public class Grade {
    public static void main(String[] args) {
        int a=10, b=2, c=5; //a, b, c의 초기값

        System.out.println(a+b); //a+b의 결과값 출력
        System.out.println(a+b*c); //a+b*c의 결과값 출력
        System.out.println(a+b+c); //a+b+c의 결과값 출력
        System.out.println(a+b/c); //a+b/c의 결과값 출력
    }
}

result
12
20
17
10
//a,b,c 값을 한번 선언함으로 여러가지 수식에 의한 값을 도출할 수 있다

 2) 변수의 선언 타입

  • 변수 a의 값을 10으로 선언한다면 10이 정수이므로 int 타입으로 선언할 수 있다
public class Grade {
    public static void main(String[] args) {
             int a=10; //10이 정수이므로 int 타입으로 선언
    }
}
  • 데이터의 종류에 따라 타입을 사용할 수 있다
public class Grade {
    public static void main(String[] args) {
        int a=10; //10이 정수이므로 int 타입으로 선언
        float b=1.23456789F; //실수이므로 float 타입으로 선언
        double c=1.23456789012345678D; //실수이므로 double 타입으로 선언
        char d=75; //K를 유니코드 75로 char 타입으로 선언
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }
}


result
10
1.2345679
1.2345678901234567
K
  • 변수는 동일한 타입일 경우 타입은 한번만 선언해도 된다
public class Grade {
    public static void main(String[] args) {
        int a=10, b=20, c=30, d=40; //10이 정수이므로 int 타입으로 선언

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }
}

result
10
20
30
40
  • 변수의 값은 마지막에 적용된 변수의 값으로 저장된다
public class Grade {
    public static void main(String[] args) {
        int a=10; //a의 초기값
        a=a+1; //a+1의 결과값
        System.out.println(a); //최종 a+1의 결과값 a 출력
    }
}

result
11

 

 

3. 변수의 종류

 1) 클래스 변수

  • 클래스 영역 내에서 static이 붙는 변수이다
  • 클래스 정의에서 static 필드로 객체가 공유하는 변수이다
  • 선언된 클래스 내부에서 사용 가능하다
  • 클래스 외부에서의 사용은 접근제어자(access modifier)에 따라 다르다

 2) 인스턴스 변수

  • 클래스 정의에서 static이 아닌 필드로 객체가 소유하는 변수이다
  • 객체는 인스턴스 변수의 묶음이다
  • 객체가 생성되었을 때 생성된다
  • 선언된 클래스 내부에서 사용 가능하다
  • 클래스 외부에서의 사용은 접근제어자(access modifier)에 따라 다르다

 3) 지역 변수

  • 메서드 내부 또는 블록 내부에서 선언된 변수이다
  • 메서드가 실행될 때 만들어지고 실행 후 사라진다
  • 초기값을 지정한 후 사용해야 한다
  • 변수 선언 시 접근 제어자를 사용하지 않는다

 4) 파라미터

  • 메서드 호출 시 전달하는 값을 저장하기 위한 변수이다
  • 메서드가 실행될 때 만들어지고 실행 후 사라진다

 

4. 변수명

  • 변수명은 영문자(대문자, 소문자)나 숫자,  _, $ 를 사용할 수 있다
  • 영문자는 대소문자가 구별되어 인식된다
    - a A는 다른 문자로 인식한다
  • 자바에서 변수명은 일반적으로 카멜 케이스(camelCase)를 사용한다
     - 카멜케이스는 두 번째 단어부터 대문자로 시작해 구분한다
     - camelCase 는 낙타와 닮았다고 붙여진 명칭이다
  • 변수명은 숫자로 시작하여 작명할 수 없다
  • 자바에서 사용 중인 예약어로 작명할 수 없다
    - 예약어 : https://www.w3schools.com/java/java_ref_keywords.asp
 

Java Keywords

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

▶ 자바(Java) 명명 규칙

식별자 유형 명명 규칙
Packages 고유한 패키지 이름의 접두사는 항상 모두 소문자 ASCII 문자로 작성되며 최상위 도메인 이름 중 하나여야 합니다(현재 com, edu, gov, mil, net, org 또는 영어 두 자리 코드 중 하나). ISO 표준 3166, 1981에 명시된 국가 식별
패키지 이름의 후속 구성 요소는 조직의 자체 내부 명명 규칙에 따라 다릅니다.이러한 규칙은 특정 디렉토리 이름 구성요소가 부서, 부서, 프로젝트, 시스템 또는 로그인 이름이 되도록 지정할 수 있습니다.
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
Classes 클래스 이름은 명사여야 하며, 각 내부 단어의 첫 글자는 대문자로 대소문자를 혼합해야 합니다.클래스 이름을 단순하고 설명적으로 유지하도록 노력하십시오.전체 단어를 사용하십시오. 두문자어와 약어는 피하십시오(약어가 URL이나 HTML과 같은 긴 형식보다 훨씬 더 널리 사용되지 않는 한). 클래스 래스터;
클래스 ImageSprite;
Interfaces 인터페이스 이름은 클래스 이름처럼 대문자여야 합니다. 인터페이스 RasterDelegate;
인터페이스 저장;
Methods 메소드는 동사여야 하며, 대소문자를 혼합하여 첫 글자가 소문자여야 하며 각 내부 단어의 첫 글자는 대문자여야 합니다. run();
runFast();
getBackground();
Variables 변수를 제외하고 모든 인스턴스, 클래스 및 클래스 상수는 소문자 첫 글자와 대소문자가 혼합되어 있습니다.내부 단어는 대문자로 시작합니다.변수 이름은 밑줄 _ 또는 달러 기호 $ 문자로 시작하면 안 됩니다. 둘 다 허용되는 경우에도 마찬가지입니다.
변수 이름은 짧지만 의미가 있어야 합니다.변수 이름의 선택은 니모닉이어야 합니다. 즉, 일반 관찰자에게 사용 의도를 나타내도록 설계되었습니다.임시 "throwaway" 변수를 제외하고 한 문자 변수 이름은 피해야 합니다.임시 변수의 일반적인 이름은정수 의경우i,j,k, 입니다.,, 및문자의 경우.mncde
int i;
char c;
float myWidth;
Constants 클래스 상수로 선언된 변수의 이름과 ANSI 상수의 이름은 밑줄("_")로 구분된 단어로 모두 대문자여야 합니다.(디버깅을 쉽게 하려면 ANSI 상수를 피해야 합니다.) static final int MIN_WIDTH = 4;
static final int MAX_WIDTH = 999;
static final int GET_THE_CPU = 1;

※ 참조 사이트 : Code Conventions for the Java Programming Language: 9. Naming Conventions (oracle.com)

 

'JAVA' 카테고리의 다른 글

Java - 문자열(String)  (0) 2022.05.22
Java - 배열(array)  (0) 2022.05.22
Java - 타입(Type)  (0) 2022.05.19
Java - 개요3. 파일 생성  (0) 2022.05.19
Java - 개요2. JVM & JDK  (0) 2022.05.18

+ Recent posts