Java講課筆記12:static關(guān)鍵字

      網(wǎng)友投稿 944 2022-05-29

      文章目錄

      零、本講學(xué)習(xí)目標(biāo)

      1、掌握靜態(tài)變量的使用

      2、掌握靜態(tài)方法的使用

      3、掌握靜態(tài)代碼塊的使用

      一、static關(guān)鍵字的用處

      二、靜態(tài)變量

      1、靜態(tài)變量的定義

      2、靜態(tài)變量的內(nèi)存分配示意圖

      3、靜態(tài)變量的訪問(wèn)

      4、靜態(tài)變量案例演示

      5、使用static關(guān)鍵字注意事項(xiàng)

      三、靜態(tài)方法

      1、靜態(tài)方法的定義

      2、靜態(tài)方法的訪問(wèn)

      3、靜態(tài)方法案例演示

      4、靜態(tài)方法注意事項(xiàng)

      四、靜態(tài)代碼塊

      1、靜態(tài)代碼塊的定義

      2、靜態(tài)代碼塊執(zhí)行情況

      3、靜態(tài)代碼塊的作用

      4、靜態(tài)代碼塊案例演示

      五、了解Math類的靜態(tài)成員

      六、課后作業(yè)

      1、創(chuàng)建Circle類

      2、創(chuàng)建TestCircle類

      相信大家對(duì)static關(guān)鍵字并不陌生,回顧一下我們?cè)诘谝淮握n創(chuàng)建的第一個(gè)Java程序HelloWorld.java:

      主方法的修飾符里就有static,為什么主方法必須有static修飾符呢?通過(guò)本講的學(xué)習(xí),你會(huì)找到答案的。

      零、本講學(xué)習(xí)目標(biāo)

      1、掌握靜態(tài)變量的使用

      2、掌握靜態(tài)方法的使用

      3、掌握靜態(tài)代碼塊的使用

      一、static關(guān)鍵字的用處

      Java中的static關(guān)鍵字,用于修飾類的成員,如成員變量、成員方法以及代碼塊等,被static修飾的成員具備一些特殊性。比如被static關(guān)鍵字修飾的成員變量、方法可以被類直接訪問(wèn),而不需要預(yù)先構(gòu)造類的實(shí)例化對(duì)象。

      二、靜態(tài)變量

      1、靜態(tài)變量的定義

      原因:在定義一個(gè)類時(shí),只是在描述某類事物的特征和行為,并沒(méi)有產(chǎn)生具體的數(shù)據(jù)。只有通過(guò)new關(guān)鍵字創(chuàng)建該類的實(shí)例對(duì)象后,系統(tǒng)才會(huì)為每個(gè)對(duì)象分配內(nèi)存空間,存儲(chǔ)各自的數(shù)據(jù)。有時(shí)候,開發(fā)人員希望某些特定的數(shù)據(jù)在內(nèi)存里只有一份,而且能被一個(gè)類的所有實(shí)例對(duì)象所共享。例如某個(gè)學(xué)校所有學(xué)生共享同一個(gè)學(xué)校名稱,此時(shí)完全不必在每個(gè)學(xué)生對(duì)象所占用的內(nèi)存空間中都聲明一個(gè)變量來(lái)表示學(xué)校名稱,而可以在對(duì)象以外的空間聲明一個(gè)表示學(xué)校名稱的變量讓所有對(duì)象來(lái)共享。這種能被類的所有對(duì)象共享的變量就是靜態(tài)變量。

      定義:在一個(gè)Java類中,可以使用static關(guān)鍵字來(lái)修飾成員變量,該變量被稱作靜態(tài)變量。

      2、靜態(tài)變量的內(nèi)存分配示意圖

      從圖可以看出,所有學(xué)生對(duì)象共享一個(gè)名稱為schoolName的變量。在一個(gè)Java類中,要實(shí)現(xiàn)這種功能可以使用static關(guān)鍵字來(lái)修飾成員變量,該變量被稱作靜態(tài)變量,它可以被所有實(shí)例所共享。

      3、靜態(tài)變量的訪問(wèn)

      通過(guò)類名訪問(wèn):靜態(tài)變量被所有實(shí)例共享,可以使用“類名.變量名”的形式來(lái)訪問(wèn)。

      通過(guò)對(duì)象名訪問(wèn):靜態(tài)變量也可以“對(duì)象名.變量名”的形式來(lái)訪問(wèn),當(dāng)然同一個(gè)類的不同對(duì)象訪問(wèn)的靜態(tài)變量值都是相同的。

      4、靜態(tài)變量案例演示

      創(chuàng)建Student類,包含實(shí)例變量name和age、靜態(tài)變量schoolName

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      創(chuàng)建TestStudent類,創(chuàng)建對(duì)象,設(shè)置屬性,調(diào)用方法

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      運(yùn)行程序,查看結(jié)果:

      由于schoolName是靜態(tài)變量,既可以通過(guò)Student.schoolName的方式進(jìn)行調(diào)用,也可以通過(guò)Student的實(shí)例對(duì)象進(jìn)行調(diào)用,比如stu1.schoolName和stu2.schoolName。第11行代碼將變量schoolName賦值為“瀘州職業(yè)技術(shù)學(xué)院”后,兩個(gè)學(xué)生對(duì)象stu1和stu2的schoolName屬性值均為“瀘州職業(yè)技術(shù)學(xué)院”。

      5、使用static關(guān)鍵字注意事項(xiàng)

      注意,static關(guān)鍵字只能用于修飾成員變量,不能用于修飾局部變量,否則編譯會(huì)報(bào)錯(cuò)。

      三、靜態(tài)方法

      普通成員方法也叫實(shí)例方法,表明只有在實(shí)例化對(duì)象之后才能調(diào)用,如果想不創(chuàng)建對(duì)象就能調(diào)用某個(gè)方法,那么此時(shí)可以考慮使用靜態(tài)方法。

      1、靜態(tài)方法的定義

      在一個(gè)類中,被static關(guān)鍵字修飾的方法稱為靜態(tài)方法。

      2、靜態(tài)方法的訪問(wèn)

      方法一、通過(guò)類名來(lái)訪問(wèn):類名.方法

      方法二、通過(guò)對(duì)象名來(lái)訪問(wèn):對(duì)象名.方法

      3、靜態(tài)方法案例演示

      在Student類定義靜態(tài)方法

      創(chuàng)建Example1202類,通過(guò)兩種方式調(diào)用靜態(tài)方法

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      運(yùn)行程序,查看結(jié)果

      4、靜態(tài)方法注意事項(xiàng)

      在一個(gè)靜態(tài)方法中只能訪問(wèn)用static修飾的成員,原因是沒(méi)有被static修飾的成員需要先創(chuàng)建對(duì)象才能訪問(wèn),而靜態(tài)方法在被調(diào)用時(shí)可以不創(chuàng)建任何對(duì)象。

      四、靜態(tài)代碼塊

      1、靜態(tài)代碼塊的定義

      在Java中,使用一對(duì)大括號(hào)包圍起來(lái)的若干行代碼被稱為一個(gè)代碼塊。

      在Java中,使用static關(guān)鍵字修飾的代碼塊稱為靜態(tài)代碼塊。

      2、靜態(tài)代碼塊執(zhí)行情況

      當(dāng)類被加載時(shí),靜態(tài)代碼塊會(huì)執(zhí)行,并且只會(huì)執(zhí)行一次。

      3、靜態(tài)代碼塊的作用

      在程序中,經(jīng)常使用靜態(tài)代碼塊來(lái)對(duì)類的成員變量進(jìn)行初始化。

      4、靜態(tài)代碼塊案例演示

      創(chuàng)建Person類

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      創(chuàng)建測(cè)試類Example1203

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      Java講課筆記12:static關(guān)鍵字

      22

      運(yùn)行程序,查看結(jié)果

      在主方法中創(chuàng)建了兩個(gè)Person對(duì)象,但在兩次實(shí)例化對(duì)象的過(guò)程中,靜態(tài)代碼塊中的內(nèi)容只輸出了一次,這就說(shuō)明靜態(tài)代碼塊在類第一次使用時(shí)才會(huì)被加載,并且只會(huì)加載一次。

      五、了解Math類的靜態(tài)成員

      上述案例,我們輸出了Math的靜態(tài)屬性E和PI,調(diào)用了Math的靜態(tài)方法sqrt()。

      如何能查看一個(gè)類的源碼呢?很簡(jiǎn)單,將鼠標(biāo)移到該類上,左手按著Ctrl鍵,同時(shí)點(diǎn)擊鼠標(biāo)左鍵,即可打開該類的源碼文件進(jìn)行查看。

      查看Math.java文件內(nèi)容

      摘錄Math類部分源碼

      package java.lang; import java.util.Random; import sun.misc.FloatConsts; import sun.misc.DoubleConsts; /** * @author unascribed * @author Joseph D. Darcy * @since JDK1.0 */ public final class Math { /** * Don't let anyone instantiate this class. */ private Math() {} /** * The {@code double} value that is closer than any other to * e, the base of the natural logarithms. */ public static final double E = 2.7182818284590452354; /** * The {@code double} value that is closer than any other to * pi, the ratio of the circumference of a circle to its * diameter. */ public static final double PI = 3.14159265358979323846; /** * Returns the trigonometric sine of an angle. Special cases: *

      • If the argument is NaN or an infinity, then the * result is NaN. *
      • If the argument is zero, then the result is a zero with the * same sign as the argument.
      * *

      The computed result must be within 1 ulp of the exact result. * Results must be semi-monotonic. * * @param a an angle, in radians. * @return the sine of the argument. */ public static double sin(double a) { return StrictMath.sin(a); // default impl. delegates to StrictMath } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      Math.java文件有2370行

      查看Math類的結(jié)構(gòu)

      六、課后作業(yè)

      1、創(chuàng)建Circle類

      定義雙精度靜態(tài)變量r

      定義雙精度靜態(tài)常量PI = 3.1414926

      定義訪問(wèn)靜態(tài)變量r的靜態(tài)方法setR()與getR()

      定義獲取圓面積的靜態(tài)方法getArea()

      2、創(chuàng)建TestCircle類

      添加靜態(tài)代碼塊,輸出“計(jì)算圓面積”

      在主方法里從鍵盤輸入圓半徑

      調(diào)用Circle的靜態(tài)方法計(jì)算圓面積

      輸出圓面積,保留兩位小數(shù)

      Java

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Python OpenCV 霍夫(Hough Transform)直線變換檢測(cè)原理,圖像處理第 33 篇博客丨【百變AI秀】
      下一篇:面試官:說(shuō)說(shuō)什么是Java內(nèi)存模型?
      相關(guān)文章
      亚洲国产精品久久人人爱| 亚洲国产精品成人| 亚洲人成无码www久久久| 亚洲国产精品成人AV在线 | 亚洲精品无码你懂的网站| 亚洲av成人一区二区三区在线播放| 亚洲最大av资源站无码av网址| 亚洲AV无码一区二区三区人| 亚洲AV无码成人专区| 亚洲人成www在线播放| 亚洲人成人77777在线播放| 亚洲国产精品综合久久网各| 亚洲av无码不卡久久| 亚洲第一男人天堂| 亚洲精品又粗又大又爽A片| 亚洲日韩精品无码专区加勒比| 亚洲欧美日本韩国| 亚洲AV无码专区在线厂| 亚洲AV成人精品日韩一区18p| 亚洲国产成人精品女人久久久| 亚洲国产综合精品一区在线播放| 亚洲精品无码激情AV| 伊人婷婷综合缴情亚洲五月| 亚洲无码在线播放| 亚洲AV电影院在线观看| 亚洲一区综合在线播放| 亚洲欧洲国产精品久久| 亚洲人成图片网站| 国产青草亚洲香蕉精品久久| 亚洲视频一区二区| 亚洲精品无码久久一线| 久久精品国产精品亚洲色婷婷| 久久亚洲中文字幕精品有坂深雪| 亚洲理论精品午夜电影| 日韩亚洲产在线观看| 国产精品国产亚洲区艳妇糸列短篇| 亚洲视频一区二区| 亚洲久本草在线中文字幕| 亚洲乱人伦精品图片| 亚洲乱理伦片在线观看中字| 亚洲欧洲久久久精品|