이전 글을 보면 자바의 데이터형은 기본 데이터형과 참조 데이터형으로 나누어진다는 것을 알 수 있다. .
Java의 객체 지향 원칙은 데이터와 데이터에 대한 작업이 함께 바인딩되어야 한다는 것입니다. 이는 클래스, 즉 참조 데이터 유형입니다. 따라서 클래스도 유형입니다. Java는 기본 유형을 설정할 필요가 없으며 운영 효율성을 높이기 위해 기본 유형만 설정합니다. 기본 유형과 참조 유형의 주요 차이점은 다음과 같습니다.
기본 유형의 변수 이름은 변수 자체입니다.
참조형 변수의 이름은 복합 데이터가 저장되는 곳입니다.
Java 언어에서 지원하는 세 가지 주요 변수 유형 범주가 있다는 것을 알고 있습니다.
지역변수
멤버변수
클래스 변수(정적 변수)
이 장에서는 실제로 스코프에서 시작하여 변수 유형의 스코프를 설명합니다. 먼저 아래 코드와 개념을 살펴보세요.
로컬 변수는 메소드, 생성자 또는 명령문 블록에서 선언됩니다.
로컬 변수는 메소드, 생성자 또는 명령문 블록이 실행될 때 생성되고 해당 실행이 완료됩니다. 이후에는 변수가 삭제됩니다.
액세스 한정자는 지역 변수에 사용할 수 없습니다.
지역 변수는 메서드에서만 선언됩니다. 생성자 또는 명령문 블록에 표시됩니다.
지역 변수는 스택에 할당됩니다.
지역 변수에는 기본값이 없으므로 지역 변수를 선언한 후에는 반드시 초기화해야 사용할 수 있습니다.
다음 예에서 age는 지역 변수입니다. pupAge() 메서드에 정의되어 있으며 해당 범위는 이 메서드로 제한됩니다.
package com.dujinyang.immqy; public class Test{ public void getAge(){ int age=1; age = age + 9; System.out.println("--小狗的年龄 : " + age); } public static void main(String args[]){ Test test = new Test(); test.getAge(); } }
위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
--小狗的年龄是:10
다음 예제에서는 age 변수가 초기화되지 않아 오류가 발생합니다. 컴파일 중에 발생합니다:
package com.dujinyang.immqy; public class Test{ public void getAge(){ int age; age = age + 9; System.out.println("--小狗的年龄 : " + age); } public static void main(String args[]){ Test test = new Test(); test.getAge(); } }
컴파일러가 직접 오류를 보고합니다:
Test.java:4:variable number might not have been initialized age = age + 9; ^1 error
实例变量声明在一个类中,但在方法、构造方法和语句块之外;
当一个对象被实例化之后,每个实例变量的值就跟着确定;
实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
实例变量可以声明在使用前或者使用后;
访问修饰符可以修饰实例变量;
实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.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 ); System.out.println("薪水 : " + salary); } public static void main(String args[]){ Employee empOne = new Employee("KARL-dujinyang"); empOne.setSalary(1000); empOne.printEmp(); } }
以上实例编译运行结果如下:
$ javac Employee.java $ java Employee名字 : KARL-dujinyang薪水 : 1000.0
类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外。
无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
静态变量在程序开始时创建,在程序结束时销毁。
与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
默认值和实例变量相似。数值型变量默认值是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 = 1000; System.out.println(DEPARTMENT+"平均工资:"+salary); } }
以上实例编译运行结果如下:
深圳的平均工资:1000.0
注意:如果其他类想要访问该变量,可以这样访问:Employee.DEPARTMENT。因为它是静态的,static的关键字。
이 장에서는 Java 변수 유형에 대해 배웠고 다음 장에서는 Java 수정자의 사용을 소개하겠습니다.
위 내용은 JAVA Getting Started Tutorial | Chapter 3 Variable Types 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!