程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java中static的用法,Javastatic用法

Java中static的用法,Javastatic用法

編輯:JAVA綜合教程

Java中static的用法,Javastatic用法


static靜態,作為修飾符,最初是由c引入,一開始static表示退出一個塊後依然存在的局部變量。隨後,static表示不能被其他文件訪問的全局變量和函數。到了C++和java,static表示屬於類且不屬於類對象的變量和函數。

從具體用法來看,主要用到5個方面。

一、靜態域。

static修飾類的域(字段,成員變量),被static修飾的域在類中只有一個,它屬於類,也稱為類域。它只能被類操作,不能由對象操作。比如

pubic class Employee

{

  private static int nextId=1;

  private int id;

}

這裡nextId是靜態域,id就是實例域。nextId在Employee這個類中只有一份,所有Employee的對象共享這個靜態域,即使沒有對象,nextId依然存在。而實例域id,不同的對象可以都擁有一份id,id屬於對象,不屬於類。操作的時候,用類操作靜態域,也就是Employee.nexdId。用對象操作實例域,也就是tom.id(tom是Employee的一個對象)。

對於靜態域而言,一般靜態變量用的較少,靜態常量用的比較多。比較典型的就是數學中的PI。

public class Math

{

  public static final double PI=3.14159265358979323846;

}

程序中通過Math.PI來獲取這個常量。

二、靜態方法

static修飾的方法就是靜態方法,靜態方法是屬於類的。比較典型的還是Math裡面的方法,如pow(x,a),表示x的a次冪,調用的時候直接寫Math.pow(x,a)。

靜態方法不能操作對象,也不能訪問實例域,只能訪問自身所在類的靜態域。比如

public static int getNextId()

{

  return nextId;//返回靜態域

}

三、靜態代碼塊

在類的內部,用static修飾的一個代碼塊,也稱為靜態初始化塊。主要用於對類內部的靜態域進行初始化。它在第一次使用類的時候執行,只執行一次,而且在構造函數之前執行。比如,連接數據庫之前,需要對連接數據庫用到的字符串初始化,並且只加載一次驅動,就把這些都放到靜態代碼塊中。示例代碼如下:(摘了能夠說明問題的部分代碼)

static

{

//需加載驅動的名字 

drivername=prop.getProperty("drivername");

//數據庫地址

dburl=prop.getProperty("dburl");

//數據庫用戶名

dbusername=prop.getProperty("dbusername");

//數據庫密碼

dbpassword=prop.getProperty("dbpassword");              

//加載驅動,驅動只需要加載一次

Class.forName(drivername);

}

四、靜態導入

import導入類的時候,如果加上static,就可以導入靜態域和靜態方法。

在源文件頂部加入這樣一行代碼:

import static java.lang.Math.*;

我們在後面的程序中就可以直接使用Math的靜態域和靜態方法了。

比如double i=pow(PI,3);

這樣代碼比沒有靜態導入之前的代碼

double b=Math.pow(Math.PI, 3);

要清晰了很多,也簡潔了不少,更易於理解。

五、靜態內部類

在內部類的前面加上static修飾,就是靜態內部類。這樣使用,只是把這個類隱藏在另外一個類的內部,不需要引用外圍類對象。靜態內部類的對象除了不能引用外圍類的對象外,和其他的內部類是完全一樣的。

以上是我閱讀Java核心技術 卷I時,結合學習其它內容,個人總結的static的用法,有不當之處,請大家指正。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved