自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java教程 Java語言中的static修飾符

開發(fā) 后端
在Java類中,我們常常會看到static關(guān)鍵字,往往被稱為靜態(tài)的。Static修飾符可以用來修飾數(shù)據(jù)成員,方法成員,但是不能修飾類(此處指外部類),不能修飾構(gòu)造方法。本文將了static修飾符的特點及用法。

本文是Java教程之Java語言中的static修飾符部分。

在Java類中,我們常常會看到static關(guān)鍵字,往往被稱為靜態(tài)的。Static修飾符可以用來修飾數(shù)據(jù)成員,方法成員,但是不能修飾類(此處指外部類),不能修飾構(gòu)造方法。如:

  1. package com.csst.vo;  
  2.  
  3.  public class User {  
  4.  
  5.        private String name;  
  6.  
  7.        private static int count;  
  8.  
  9.        public String getName() {  
  10.  
  11.               return name;  
  12.  
  13.        }  
  14.  
  15.        public void setName(String name) {  
  16.  
  17.               this.name = name;  
  18.  
  19.        }        
  20.  
  21.        public static int getCount() {  
  22.  
  23.               return count;  
  24.  
  25.        }  
  26.  
  27.        public static void main(String[] args){  
  28.  
  29.               User user1=new User();  
  30.  
  31.               User user2=new User();  
  32.  
  33.               user1.setName("Rose");  
  34.  
  35.               user2.setName("Kate");  
  36.  
  37.               user1.count=10;  
  38.  
  39.               user2.count=20;  
  40.  
  41.               System.out.println("user1.name:"+user1.getName()+" user2.name:"+user2.getName());  
  42.  
  43.               System.out.println("user1.count:"+User.getCount()+"user2.count:"+user2.count);  
  44.  
  45.        }  

該程序運行結(jié)果為:

  1. user1.name:Rose user2.name:Kate  
  2.  
  3. user1.count:20 user2.count:20 

我們可以發(fā)現(xiàn),user1和user2的name屬性是不同的,分別為該對象調(diào)用setName所指定的,而雖然user1和user2分別對count屬性指定了不同的值,但是最終輸出的count值卻均為20。原因就是count被static修飾,而name沒有使用count修飾。
被static修飾符修飾的數(shù)據(jù)成員或方法成員被稱為靜態(tài)成員,或者類成員,沒有被static修飾的,被稱為實例成員。static成員只被初始化一次,所有的對象共享,因此count會輸出兩個20。實例成員只有當初始化對象的時候才初始化,每次創(chuàng)建對象,都會被初始化一次。name在user1和user2被創(chuàng)建時,初始化了2次,因此最終輸出的是Rose和Kate。
另外,static成員,由于是類共享的,所以不僅可以使用對象調(diào)用,也可以使用類名調(diào)用。在static方法中,不能夠直接使用非靜態(tài)的成員,如果使用,必須初始化對象,調(diào)用。如過在上面示例的User.java中有如下代碼,會發(fā)生編譯錯誤。

  1. public static void test(){  
  2.  
  3.        setName("test");  
  4.  

可以修改如下:

  1. public static void test(){  
  2.  
  3.               User user=new User();  
  4.  
  5.               user.setName("test");  
  6.  

千萬不要盲目的把成員聲明為static,一定要理解static成員的特點,否則會造成雖然語法正確,但是邏輯錯誤的后果。

 

【編輯推薦】

  1. Java教程 Java類的組成
  2. Java教程 Java類中的包
  3. Java教程 Java語言的訪問權(quán)限修飾符
  4. Java教程 Java類中的各種數(shù)據(jù)
  5. Java教程 Java語言中的數(shù)據(jù)類型及String類
責(zé)任編輯:仲衡 來源: taomoon719的專欄
相關(guān)推薦

2009-06-12 13:37:47

訪問權(quán)限修飾符Java教程

2011-06-28 09:29:11

C#修飾符

2009-08-24 16:49:39

C#修飾符

2011-07-20 16:48:22

C++static

2015-08-18 09:25:11

Java修飾符關(guān)鍵詞

2011-05-13 14:56:14

autoregisterstatic

2011-06-02 14:51:07

JAVA修飾符

2009-06-12 15:01:48

Java數(shù)組Java教程

2015-01-06 09:47:55

Java

2009-06-19 10:51:39

Scalapackage訪問修飾符

2009-06-12 14:18:20

構(gòu)造方法Java語言Java教程

2009-08-27 13:06:13

C# new修飾符

2009-09-02 17:14:28

C#修飾符

2023-12-29 09:01:27

SwiftUI視圖修飾符

2009-08-27 11:04:08

C# extern修飾

2009-08-21 13:58:06

C# virtual修

2009-08-27 11:12:03

C# abstract

2009-09-02 17:04:35

C# Extern修飾

2009-08-27 11:16:40

C# sealed修飾

2009-09-04 11:06:40

C#訪問修飾符
點贊
收藏

51CTO技術(shù)棧公眾號