鍍金池/ 教程/ Java/ Java 變量類型
Java 接口
Java 方法
Java 數(shù)字
Java 條件判斷
Java 異常處理
Java 字符
Java 重寫
Java 網(wǎng)絡(luò)編程
Java 數(shù)據(jù)結(jié)構(gòu)
Java 的對象和類
Java 多線程
Java 封裝
Java 數(shù)組
Java Applet 基礎(chǔ)
Java 庫類
Java 抽象
Java 繼承
Java 正則表達(dá)式
Java 描述符的類型
Java 發(fā)送郵件
Java 序列化
Java 泛型
Java 多態(tài)
Java 變量類型
Java 基本數(shù)據(jù)類型
Java 包
Java 快速參考指南
Java 基本運(yùn)算符
Java 概述
Java 字符串
Java 循環(huán)控制
Java 環(huán)境設(shè)置
Java 文件注釋
Java 文件和 I/O
Java 集合
Java 基本語法
Java 日期和時間

Java 變量類型

變量可以給我們提供我們程序可以操縱的命名的存儲。Java 中的每種變量都有特定的類型,這決定了變量的大小和它的設(shè)計(jì)占用內(nèi)存空間;這一些列的值可以存儲在那個內(nèi)存空間中;變量可以應(yīng)用的操作。

在使用前你必須現(xiàn)將所要使用的變量進(jìn)行聲明。聲明變量的基本格式如下:

data type variable [ = value][, variable [= value] ...] ;

這里的 data type 是 Java 的一種數(shù)據(jù)類型,variable 是一種變量的名稱。要聲明一個以上的特定變量類型,你可以采用逗號分隔開。

下面是 Java 中有效的變量聲明和賦值的例子:

int a, b, c; // Declares three ints, a, b, and c.
int a = 10, b = 10; // Example of initialization
byte B = 22; // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a'; // the char variable a iis initialized with value 'a'

本章將介紹 Java 中的各種可用的變量類型。Java 中共有三種變量:

  • 本地變量
  • 實(shí)例變量
  • 類、靜態(tài)變量

本地變量

  • 本地變量在方法、構(gòu)造器或者塊中聲明
  • 本地變量在方法、構(gòu)造器或者塊進(jìn)入時被創(chuàng)建,一旦退出該變量就會被摧毀
  • 可訪問描述符不能用于本地變量
  • 本地變量僅在已經(jīng)聲明的方法、構(gòu)造器或者塊中可見
  • 本地變量在棧深度內(nèi)部實(shí)施
  • 本地變量沒有默認(rèn)值,因此本地變量必須被聲明并且在第一次使用前要給它賦值

例子

這里,age(年齡)是本地變量。這是在 pupAge() 方法下定義的,它的范圍僅限于這個方法。

public class Test{ 
   public void pupAge(){
      int age = 0;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
   }
}

上述代碼會輸出如下結(jié)果:

Puppy age is: 7

例子

下面的例子使用了本地變量 age 但是沒有進(jìn)行初始化,所以在編輯是就會顯示錯誤。

public class Test{ 
   public void pupAge(){
      int age;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
   }
}

編輯時會產(chǎn)生如下錯誤:

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

實(shí)例變量

  • 實(shí)例變量在類中聲明,但是它在方法、構(gòu)造器或者塊外。
  • 當(dāng)堆中的對象被分配了一個空間時,每個實(shí)例變量的位置就被創(chuàng)建了。
  • 當(dāng)對象采用關(guān)鍵字“ new ”創(chuàng)建時實(shí)例變量就被創(chuàng)建了,當(dāng)對象被銷毀時它也就被銷毀了。
  • 實(shí)例變量的值必須被一個以上的方法、構(gòu)造器或者塊,或者類中必須出現(xiàn)的對象的狀態(tài)的重要部分所引用。
  • 實(shí)例變量可以在類水平上在使用前或者使用后聲明。
  • 實(shí)例變量可以用可訪問描述符。
  • 實(shí)例變量對類中的所有方法、構(gòu)造器或者塊可見。一般來講,推薦將這些變量私有(訪問層面)。然而子類的可見性可用可訪問描述符給予那些變量。
  • 實(shí)例變量有默認(rèn)值。數(shù)字的默認(rèn)值為零,布爾型默認(rèn)值為假,對象引用默認(rèn)值為空。在聲明或者構(gòu)造器內(nèi)可以進(jìn)行賦值。
  • 實(shí)例變量可以采用直接在類中叫名字方式訪問。然而在靜態(tài)方法和不同的類(實(shí)例變量可以被訪問)中應(yīng)當(dāng)使用完全限定名稱。ObjectReference.VariableName

例子

import java.io.*;

public class Employee{
   // this instance variable is visible for any child class.
   public String name;

   // salary  variable is visible in Employee class only.
   private double salary;

   // The name variable is assigned in the constructor. 
   public Employee (String empName){
      name = empName;
   }

   // The salary variable is assigned a value.
   public void setSalary(double empSal){
      salary = empSal;
   }

   // This method prints the employee details.
   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();
   }
}

上述代碼會輸出如下結(jié)果:

name  : Ransika
salary :1000.0

類、靜態(tài)變量

  • 類變量也叫靜態(tài)變量,它是在類中用 static 關(guān)鍵字聲明的,但是它在方法、構(gòu)造器或者塊之外。
  • 每個類中只有一個類變量,不管這個類有多少對象。
  • 除了作為常量被聲明之外,類變量很少被應(yīng)用。常量是被作為 public、private, final 和 static 被聲明的變量。實(shí)例變量的初始值不會被改變。
  • 靜態(tài)變量存儲在靜態(tài)內(nèi)存中,很少采用靜態(tài)變量而不是聲明結(jié)束或者用常量public 或 private 之一。
  • 靜態(tài)變量隨著程序的開始和結(jié)束而開始和結(jié)束。
  • 可見性和實(shí)例變量相似。然而大多數(shù)靜態(tài)變量被聲明為public由于他們必須為類的使用者所用。
  • 默認(rèn)值和實(shí)例變量相似。對于數(shù)字的默認(rèn)值為零,布爾型默認(rèn)值為假,對象引用默認(rèn)值為空。在聲明或者構(gòu)造器內(nèi)可以進(jìn)行賦值。除此之外,可以在特殊的靜態(tài)初始化區(qū)賦值。
  • 靜態(tài)變量可以用類的名稱訪問。ClassName.VariableName
  • 當(dāng)靜態(tài)變量被作為 public static final 聲明時,變量(常量)名稱都要用大寫字母。如果靜態(tài)變量不是 public 和 final,它的命名方法和實(shí)例變量和本地變量相同。

例子

import java.io.*;

public class Employee{
   // salary  variable is a private static variable
   private static double salary;

   // DEPARTMENT is a constant
   public static final String DEPARTMENT = "Development ";

   public static void main(String args[]){
      salary = 1000;
      System.out.println(DEPARTMENT+"average salary:"+salary);
   }
}

上述代碼會輸出如下結(jié)果:

Development average salary:1000

:如果變量從類外訪問,常量就必須以 Employee.DEPARTMENT 訪問。

接下來是什么呢?

在本章你已經(jīng)學(xué)會應(yīng)用可訪問描述符( public & private )了。下一張將為你詳細(xì)講解可訪問描述符和不可訪問描述符。