자바 변수 유형
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 수정자의 사용을 소개하겠습니다.