자바 변수 유형


Java 언어에서는 모든 변수를 사용하기 전에 선언해야 합니다. 변수 선언의 기본 형식은 다음과 같습니다.

type identifier [ = value][, identifier [= value] ...] ;

형식 설명: type은 Java 데이터 유형입니다. 식별자는 변수 이름입니다. 동일한 유형의 여러 변수를 쉼표로 구분하여 선언할 수 있습니다.

다음은 변수 선언의 몇 가지 예입니다. 일부에는 초기화 프로세스가 포함되어 있습니다.

int a, b, c;         // 声明三个int型整数:a、 b、c
int d = 3, e, f = 5; // 声明三个整数并赋予初值
byte z = 22;         // 声明并初始化 z
String s = "php"  // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x';        // 声明变量 x 的值是字符 'x'。

Java 언어에서 지원되는 변수 유형은 다음과 같습니다.

  •                 지역 변수

  •               멤버 변수

  •                 클래스 변수


Java 지역 변수

  •                     지역 변수는 메소드, 생성자 또는 명령문 블록에서 선언됩니다. 지역 변수는 메소드, 생성자 또는 명령문 블록이 실행될 때 생성됩니다.

  •                  로컬 변수에는 액세스 한정자를 사용할 수 없습니다.

  •                 지역 변수는 해당 변수가 선언된 메서드, 생성자 또는 명령문 블록에서만 볼 수 있습니다. 지역 변수는 스택에 할당됩니다.

  •               지역 변수에는 기본값이 없으므로 지역 변수를 선언한 후에는 초기화를 거쳐야 사용할 수 있습니다.

  • 예제 1

  • 다음 예에서 age는 지역 변수입니다. pubAge() 메서드에 정의되어 있으며 해당 범위는 이 메서드로 제한됩니다.
  • package com.php.test;
    
    public class Test{ 
       public void pupAge(){
          int age = 0;
          age = age + 7;
          System.out.println("小狗的年龄是: " + age);
       }
       
       public static void main(String args[]){
          Test test = new Test();
          test.pupAge();
       }
    }

    위 예제의 컴파일 및 실행 결과는 다음과 같습니다.

    小狗的年龄是: 7
  • 예제 2

다음 예제에서는 age 변수가 초기화되지 않아 컴파일 중에 오류가 발생합니다.

public class Test{ 
   public void pupAge(){
      int age;
      age = age + 7;
      System.out.println("小狗的年龄是 : " + age);
   }
   
   public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
   }
}

컴파일 및 실행 위 예의 결과는 다음과 같습니다.

Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

인스턴스 변수

              인스턴스 변수는 클래스에서 선언되지만 메소드, 생성자 및 명령문 블록 외부에서 선언됩니다. 객체가 인스턴스화되면 각 인스턴스 변수의 값이 결정됩니다.


                   인스턴스 변수는 객체가 생성될 때 생성되고 객체가 소멸될 때 소멸됩니다. 인스턴스 변수의 값은 적어도 하나의 메서드, 생성자 또는 명령문 블록에서 참조되어야 외부에서 이러한 메서드를 통해 인스턴스 변수 정보를 얻을 수 있습니다. 인스턴스 변수는 사용 전후에 선언할 수 있습니다.

  •               액세스 수정자는 인스턴스 변수를 수정할 수 있습니다.

  •                 인스턴스 변수는 클래스의 메서드, 생성자 또는 명령문 블록에 표시됩니다. 일반적으로 인스턴스 변수는 비공개로 설정해야 합니다. 액세스 수정자를 사용하여 인스턴스 변수를 서브클래스에 표시할 수 있습니다. 인스턴스 변수에는 기본값이 있습니다. 숫자형 변수의 기본값은 0이고, 불리언 변수의 기본값은 false이며, 참조형 변수의 기본값은 null입니다. 변수 값은 선언 시 또는 생성자에서 지정할 수 있습니다.

  •                    인스턴스 변수는 변수 이름을 통해 직접 액세스할 수 있습니다. 그러나 정적 메서드 및 기타 클래스에서는 정규화된 이름인 ObjectReference.VariableName을 사용해야 합니다.

  • 예:

    import java.io.*;
    public class Employee{
       // 这个成员变量对子类可见
       public String name;
       // 私有变量,仅在该类可见
       private double salary;
       //在构造器中对name赋值
       public Employee (String empName){
          name = empName;
       }
       //设定salary的值
       public void setSalary(double empSal){
          salary = empSal;
       }  
       // 打印信息
       public void printEmp(){
          System.out.println("name  : " + name );
          System.out.println("salary :" + salary);
       }
    
       public static void main(String args[]){
          Employee empOne = new Employee("Ransika");
          empOne.setSalary(1000);
          empOne.printEmp();
       }
    }
  • 위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
    name  : Ransika
    salary :1000.0

    클래스 변수(정적 변수)


                          클래스 변수는 정적 변수라고도 하며 클래스에서 static 키워드를 사용하여 선언되지만 메서드 생성자 및 명령문 블록 외부에 있어야 합니다.

    •               클래스가 생성하는 객체 수에 관계없이 클래스에는 클래스 변수의 복사본이 하나만 있습니다.

    •               정적 변수는 상수로 선언된 경우를 제외하고는 거의 사용되지 않습니다. 상수는 public/private, final 및 static 유형으로 선언된 변수를 나타냅니다. 초기화 후에는 상수를 변경할 수 없습니다.

    •               정적 변수는 정적 저장 영역에 저장됩니다. 종종 상수로 선언되는 변수는 정적만을 사용하여 선언되는 경우가 거의 없습니다.

    •               정적 변수는 프로그램 시작 시 생성되고 프로그램 종료 시 소멸됩니다.

    •               인스턴스 변수와 유사한 가시성을 갖습니다. 그러나 클래스 사용자에게 표시되기 위해 대부분의 정적 변수는 공개 유형으로 선언됩니다.

    •               기본값은 인스턴스 변수와 유사합니다. 숫자 변수의 기본값은 0이고, 불리언 변수의 기본값은 false이며, 참조 유형의 기본값은 null입니다. 변수의 값은 변수를 선언할 때 또는 생성자에서 지정할 수 있습니다. 또한 정적 변수는 정적 문 블록에서 초기화될 수도 있습니다.

    •               정적 변수는

      ClassName.VariableName
    • 을 통해 액세스할 수 있습니다.
    •               클래스 변수가 public static final 타입으로 선언되면 클래스 변수 이름은 대문자를 사용해야 합니다. 정적 변수가 public 또는 final 유형이 아닌 경우 이름 지정 방법은 인스턴스 변수 및 지역 변수의 이름 지정 방법과 일치합니다.

    • 예:

      import java.io.*;
      public class Employee {
          //salary是静态的私有变量
          private static double salary;
          // DEPARTMENT是一个常量
          public static final String DEPARTMENT = "开发人员";
          public static void main(String args[]){
          salary = 10000;
              System.out.println(DEPARTMENT+"平均工资:"+salary);
          }
      }

      위 예제의 컴파일 및 실행 결과는 다음과 같습니다.

      开发人员平均工资:10000.0

      참고:다른 클래스가 이 변수에 액세스하려는 경우 다음과 같이 액세스할 수 있습니다.Employee.DEPARTMENT.

      이 장에서는 Java 변수 유형에 대해 배웠고 다음 장에서는 Java 수정자의 사용을 소개하겠습니다.