java靜態方法的調用方法
⑴ java 子類怎麼調用父類的靜態方法
在子類的實例方法調用父類的靜態方法可以直接方法名(前提子類沒有重寫父類的靜態方法)第二寫父類.方法或super.方法物告;在子含尺類的靜態的方法調用父類的靜談螞高態的方法可以方法名(如上文),第二父類.方法,不能super.方法
⑵ 在java中怎樣調用靜態方法,還有靜態與普通方法有什麼不同
靜態方法放在Date數據區
可以直接調用
和STATIC
變數一樣的
在內存開始載入的時候就有空間了
普通方法是
程序運行到的時候才開始調用
⑶ java中的靜態方法可以直接調用嗎
可以直接調用的。
在調用靜態方法的時候,比如說這個靜態方法是在一個類中,直接用類名點方法名,臘哪蠢不需要在new出一個對象,然後用new處的對象來調緩岩用方法。因輪陪為靜態方法可以直接用類名調用
⑷ java本類的靜態方法如何直接調用,其他類的靜態方法如何調用
java本類的靜態方法,直接使用靜態的方法名傳入參數就可以了,如果是其他類的,許可權修飾符必須是public否者無法調用,調用方法是
其他類的類名
.
方法名(參數)
⑸ java中static的用法
1.靜態方法
通常,在一個類中定義一個方法為static,那就是說,無需本類的對象即可調用此方法
聲明為static的方法有以下幾條限制:
·它們僅能調用其他的static 方法。
·它們只能訪問static數據。
·它們不能以任何方式引用this 或super。
class Simple {
staticvoid go() {
System.out.println("Welcome");
}
}
publicclass Cal {
publicstaticvoid main(String[] args) {
Simple.go();
}
}
調用一個靜態方法就是「類名.方法名」,靜態方法的使用很簡單如上所示。一般來說,靜態方法常常為應用程序中的其它類提供一些實用工具所用,在Java的類庫中大量的靜態方法正是出於此目的而定義的。
2.靜態變數
聲明為static的變數實質上就是全局變數。當聲明一個對象時,並不產生static變數的拷貝,而是該類所有的實例變數共用同一個static變數。靜態變數與靜態方法類似。所有此類實例共享此靜態變數,也就是說在類裝載時,只分配一塊存儲空間,所有此類的對象都可以操控此塊存儲空間,當然對於final則另當別論了
class Value {
staticintc = 0;
staticvoid inc() {
c++;
}
}
publicclass Count2 {
publicstaticvoid prt(String s) {
System.out.print(s);
}
publicstaticvoid main(String[] args) {
Value v1, v2;
v1 = new Value();
v2 = new Value();
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v1.inc();
prt(" v1.c=" + v1.c + " v2.c=" + v2.c);
}
}
結果為:v1.c=0 v2.c=0 v1.c=1 v2.c=1
由此可以證明它們共享一塊存儲區。static變數有點類似於C中的全局變數的概念。
值得探討的是靜態變數的初始化問題。
如果你需要通過計算來初始化你的static變數,你可以聲明一個static塊,Static 塊僅在該類被載入時執行一次。下面的例子顯示的類有一個static方法,一些static變數,以及一個static 初始化塊:
class Value3 {
staticintc = 0;
Value3() {
c = 15;
}
Value3(int i) {
c = i;
}
staticvoid inc() {
c++;
}
}
publicclass Count {
publicstaticvoid prt(String s) {
System.out.println(s);
}
Value3 v = new Value3(10);
static Value3 v1, v2;
static {//此即為static塊
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v1 = new Value3(27);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v2 = new Value3(15);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
}
publicstaticvoid main(String[] args) {
Count ct = new Count();
prt("ct.c=" + ct.v.c);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v1.inc();
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
prt("ct.c=" + ct.v.c);
}
}
結果為:
v1.c=0 v2.c=0
v1.c=27 v2.c=27
v1.c=15 v2.c=15
ct.c=10
v1.c=10 v2.c=10
v1.c=11 v2.c=11
ct.c=11
這個程序展示了靜態初始化的各種特性。如果你初次接觸Java,結果可能令你吃驚。可能會對static後加大括弧感到困惑。首先要告訴你的是,static定義的變數會優先於任何其它非static變數,不論其出現的順序如何。正如在程序中所表現的,雖然v出現在v1和v2的前面,但是結果卻是v1和v2的初始化在v的前面。在static{後面跟著一段代碼,這是用來進行顯式的靜態變數初始化,這段代碼只會初始化一次,且在類被第一次裝載時。如果你能讀懂並理解這段代碼,會幫助你對static關鍵字的認識。在涉及到繼承的時候,會先初始化父類的static變數,然後是子類的,依次類推。
3.靜態類
通常一個普通類不允許聲明為靜態的,只有一個內部類才可以。這時這個聲明為靜態的內部類可以直接作為一個普通類來使用,而不需實例一個外部類。
publicclass StaticCls {
publicstaticvoid main(String[] args) {
OuterCls.InnerCls oi = newOuterCls.InnerCls();
}
}
classOuterCls {
publicstaticclass InnerCls {
InnerCls() {
System.out.println("InnerCls");
}
}
}
結果為:InnerCls
⑹ java本類的靜態方法如何直接調用,其他類的靜態方法如何調用
java本類的靜態方法,直接使用靜態的方法咐褲困名傳入參數就可以了,如果是其他類的,許可權修飾符必須是public否者純團無法調用,調用方法是 其他類的類名 . 方法名(參數)衡念
⑺ Java中的靜態方法是什麼
靜態方法是在類中使用staitc修飾的方法,在類定義的時候已經被裝載和分配。
靜態方法為類所有,可以通過對象來使用,也可以通過類來使用。
我們之前一直寫的mian方法仔細看看,它就是一個靜態方法,靜態方法使用如下:
⑻ Java 的靜態方法,直接用類名.方法來調用有這樣的調用的嗎我們在編碼的時候不是都把類先實例
對於這個問題,你要先理解靜態的概念。
你可以簡單的理解成,靜態的東西,不管是變數還是方法,一定是不依賴對象的,是在對象還御雹沒有被創建的時候就已經存在的。
既然他可以脫離對象存在,也就不用實例化對象之後再調用。
靜態的變數方法放在哪裡其鎮姿帆實都是無所謂的,放在某個類里只是找個棲身之所罷了,所以直接用類名.靜態變數冊搏/方法就可以調用了。
⑼ Java中可以直接調用類中靜態方法,不用實例化么,詳解!原理
好吧,我來試試看,看答案能不能夠讓你滿意。
先通俗的分析下,我們把類看作是一個房子。房子裡面有傢具,桌椅板凳之類的,房子裡面還有人。
房子裡面所有的人都應該是共有一套傢具的。也就是說,這些傢具是唯一的,如果某個傢具壞了,那麼大家都用不了。
我們再看一看定義,java的靜態變數也叫做類變數,它開始於類的創建,結束於類的消亡。非靜態變數叫做實例變數,它開始於類的實例的創建,結束語類的實例的消亡。靜態變數被所有實例所共享。也就是如上面的例子,座椅板凳是類變數,它們是在房子被建好了之後就被添加放置進來,而且基本都是唯一的。人就相當於實例,每個人都能用這些傢具,但是如果傢具一旦損壞,那就是壞了,或者你把某一個傢具搬走,那麼所有的人都用不了這個傢具,房子里也不存在這個傢具了。
但是房子里可以進很多人,可以進張三,也可以進李四。所以這些人就是類的實例對象,他們身上穿的衣服就可以叫做實例變數。
那麼在內存之中又是如何的呢?當一個類被創建並初始化後,內存中會有兩個區域,棧區和堆區。棧中主要存放的是引用變數,堆中主要存放的是真實的被實例化後的類。棧中的引用變數會指向堆中的真實對象地址。比如A a=new A(); a這個變數就會在棧中,實際被new出來的類A的對象會放在堆中,a指向實際被new出來的A對象。
如果一個類中有靜態變數的話,程序首先會把該靜態變數載入進內存中,也就是在堆中開辟一個區域專門存放。以後不管你new多少個類的對象,該靜態變數永遠都是在那裡的。也就是說,靜態變數在類的初始化一次後,系統就不會為該變數開辟新的內存空間。而每new一個類的對象,系統就會重新在
堆內存中開辟一個新空間來存放該類的實例對象,並且棧中也會有一個新的引用變數去指向它。
靜態方法也是類似,但是有一點要強調,靜態方法只中不能調用非靜態方法。因為被static修飾的方法會首先被Classloader對象先載入進內存,而這個時候可能其它的非靜態方法或者變數還沒有被載入進來。就好比我現在想做包子,現在麵粉被static修飾,首先已經拿到你身邊,可是因為包子餡不是static修飾的,所以可能包子餡兒還沒運過來,你說怎麼做的出包子呢。
被static修飾過的都是隨著類的初始化後就產生了,在堆內存中都有一塊專門的區域來存放,所以只需要類名點方法名或者變數名即可。而非靜態的就必須通過類的對象去調相應的。就像是你想要紅色的衣服,你必須是從穿紅色的衣服的人的身上拿過來才行,所以你必須找到穿紅色衣服的人,也就是類的實例對象,而你如果要去找一個桌子,而桌子就在房間里擺著,你只要進到房間里直接走過去拿來就可以了~~
⑽ JAVA中使用靜態方法
編程時我們心裡一定要清楚靜態方法和類的非靜態方法方法的區別:
最根本區別從編譯角度來說吧:
1)靜態(static)方法是編譯時直接載入載入到內存中(離cpu最近的一塊內存區域也稱為堆棧),比如程序的public static main(args []){}方法,你能實例話嗎?
靜態方法不能被實例化,也不允許被實例化!
現在很多Java集成工具邊寫邊編譯的
因此 你可以通過「類名」+「.」+「靜態方法的名()」來調用
2)非靜態方法(類的非靜態方法)通過關鍵字 「new」 字來實例化一個對象(object),這個對象放在 內存的另一塊區域 堆(heap)中。
也就是說編譯時,非靜態方法必須先實例化類的一個對象,通過「對象名」+「非靜態方法名()」來調用;
public class Student
{
private String name;
/************************************************************
*下面兩個方法是類的非靜態方法封裝 屬性name,看一下在 main()
*如何調用
************************************************************/
public set(string init_name)
{
this.name = init_name;
}
publc String get()
{
return this.name;
}
//構造函數
public Student(){}
public Student(String init_name)
{
this.name = init_name;
}
//下面是一個靜態方法,看一下它在main()中如何調用
public static void PrintClassName()
{
System.out.print("該類的名字:Student");
}
}
//MainClass類
pubic class MainClass
{
public static void main(args[])
{
//先調用靜態方法,不需要實例化對象
Student.PrintClassName();
//現在調用非靜態方法,一定要實例化對象
Student stu1 = new Student();
stu1.set("Join");
String stu1_name = stu1.get();
}
}