java靜態方法和非靜態方法的差別
java靜態方法與非靜態方法的差異
1、靜態方法(static method)
與靜態成員變數一樣,屬於類別本身,在類別裝載的時候被裝載到記憶體中,不自動進行銷毀,會一直存在記憶體中,直到JVM關閉;
2、非靜態方法(non-static method)
又稱實例化方法,屬於實例對象,實例化之後才會分配內存,必須透過類別的實例來引用,當實例物件被JVM回收之後,也跟著消失
靜態方法與實例方法的差異
1.生命週期
靜態方法的生命週期從行程建立時就開始,一直到行程結束,所以說靜態方法是全域的,貫穿整個行程
實例方法的生命週期,從實例化物件開始,一直到實例化物件被註銷回收之後結束
所以實例方法的生命週期是短於靜態方法的生命週期,這也是實例方法中不能呼叫靜態方法的原因
2 .呼叫方式
在外部呼叫靜態方法時,可以使用 「類別名稱.方法名稱」的方式,也可以使用「物件.方法名稱」的方式,也就是說呼叫靜態方法時無需建立物件
實例方法只能使用「物件.方法名稱的方式」
//-----------hasStaticMethod.java----------------- public class hasStaticMethod{ //定义一个静态方法 public static void callMe(){ System.out.println("This is a static method."); } }
下面這個程式使用兩種形式來呼叫靜態方法。
//-----------invokeStaticMethod.java----------------- public class invokeStaticMethod{ public static void main(String args[]){ hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 hasStaticMethod oa = new hasStaticMethod(); //创建一个对象 oa.callMe(); //利用对象来调用静态方法 } }
3.存取限制
靜態方法在存取本類別的成員時,只允許存取靜態成員(即靜態變數和靜態方法),而不允許存取實例成員變數和實例方法;而實例方法則無此限制
實例成員變數是屬於某個物件的,在靜態方法執行時,並不一定存在該物件;同理,如果允許靜態方法存取實例成員方法,就間接的可以存取實例成員變量,所以也不能存取實例成員方法;基於同樣的道理,靜態方法中也不能使用關鍵字this
//-----------accessMember.java----------------- class accessMember{ private static int sa; //定义一个静态成员变量 private int ia; //定义一个实例成员变量 //下面定义一个静态方法 static void statMethod(){ int i = 0; //正确,可以有自己的局部变量sa = 10; //正确,静态方法可以使用静态变量 otherStat(); //正确,可以调用静态方法 ia = 20; //错误,不能使用实例变量 insMethod(); //错误,不能调用实例方法 } static void otherStat(){} //下面定义一个实例方法 void insMethod(){ int i = 0; //正确,可以有自己的局部变量 sa = 15; //正确,可以使用静态变量 ia = 30; //正确,可以使用实例变量 statMethod(); //正确,可以调用静态方法 } }
#4.執行順序
當一個class檔案被ClassLoader load進入JVM之後,方法指令儲存在Stack中,此時Heap區並沒有資料。然後程式技術器開始執行指令,如果是靜態方法,直接依序執行指令碼,當然此時指令碼是不能存取Heapshuju資料區的;如果是實例方法(實例方法有一個隱含的傳入參數,該參數是JVM給它的,這個參數就是實例物件在Stack中的記憶體位址,因此實例方法才可以找到在Heap中屬於自己的資料),則在呼叫前必須實例化該對象,在Heap中分配數據,並將Stack中的記憶體指標透過JVM的隱含參數傳給實例方法。若不實例化直接調用,由於隱含參數沒有值,會報錯。
以上是java靜態方法和非靜態方法的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

CentOS 和 Ubuntu 的關鍵差異在於:起源(CentOS 源自 Red Hat,面向企業;Ubuntu 源自 Debian,面向個人)、包管理(CentOS 使用 yum,注重穩定;Ubuntu 使用 apt,更新頻率高)、支持週期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社區支持(CentOS 側重穩定,Ubuntu 提供廣泛教程和文檔)、用途(CentOS 偏向服務器,Ubuntu 適用於服務器和桌面),其他差異包括安裝精簡度(CentOS 精

Laravel 和 ThinkPHP 都是流行的 PHP 框架,在開發中各有優缺點。本文將深入比較這兩者,重點介紹它們的架構、特性和性能差異,以幫助開發者根據其特定項目需求做出明智的選擇。

CentOS防火牆的狀態可以通過sudo firewall-cmd --state命令查看,返回running或not running。更詳細的信息可以使用sudo firewall-cmd --list-all查看,包括已配置的區域、服務、端口等。如果 firewall-cmd 無法解決問題,可以使用sudo iptables -L -n查看iptables規則。修改防火牆配置前請務必做好備份,以確保服務器安全性。

探討後端開發中的分層架構在後端開發中,分層架構是一種常見的設計模式,通常包括controller、service和dao三層�...
