java訪問靜態方法
A. java中的靜態方法可以直接調用嗎
可以直接調用的。
在調用靜態方法的時候,比如說這個靜態方法是在一個類中,直接用類名點方法名,臘哪蠢不需要在new出一個對象,然後用new處的對象來調緩岩用方法。因輪陪為靜態方法可以直接用類名調用
B. Java中的靜態方法是什麼
靜態方法是在類中使用staitc修飾的方法,在類定義的時候已經被裝載和分配。
靜態方法為類所有,可以通過對象來使用,也可以通過類來使用。
我們之前一直寫的mian方法仔細看看,它就是一個靜態方法,靜態方法使用如下:
C. 靜態方法怎麼調用
先在eclipse中創建一個Java工程文件。並在src下創建demo包,在demo包下創建類DemoClass。創建後的工程目錄如圖。
02
接下來在DemoClass類中添加一個靜態屬性和靜態方法。被static修飾的屬性或方法就是靜態的。
03
對於靜態方法的調用,可以使用調用非靜態方法的方式去調用,即創建一個類的對象,然後再調用靜態方法,具體代碼如下圖。
04
編輯好代碼後,通過java應用程序的方式運行DemoClass.java文件,運行結果如圖2,說明成功調用了靜態方法。
05
不過,上面調用靜態方法的方式是不推薦的。如果使用上面的方式調用靜態方法,在eclipse中,你可以看到下圖的警告,大概的意思是要你使用正確的調用靜態方法的方式去調用該方法。
06
對於靜態方法,正確調用的方式是直接通過類名來調用的。用調用例子中的staticFunction為例,正確調用該方法的代碼為
DemoClass.staticFunction。當用類來調用靜態方法時,可以看到eclipse就不報警告了。
07
再次運行該文件,運行結果和剛剛一樣,說明也成功調用了靜態方法。
08
多說一句,對於靜態屬性的調用,也是用類名+點+靜態屬性的方式來調用的,正常都不會先創建一個對象,然後再通過對象來調用靜態屬性。
D. java中的static如何使用
有時你希望定義一個類成員,使它的使用完全獨立於該類的任何對象。通常情況下,類成員必須通過它的類的對象訪問,但是可以創建這樣一個成員,它能夠被它自己使用,而不必引用特定的實例。在成員的聲明前面加上關鍵字static(靜態的)就能創建這樣的成員。如果一個成員被聲明為static,它就能夠在它的類的任何對象創建之前被訪問,而不必引用任何對象。你可以將方法和變數都聲明為static。static成員的最常見的例子是main( )。因為在程序開始執行時必須調用main(),所以它被聲明為static。聲明為static的變數實質上就是全局變數。當聲明一個對象時,並不產生static變數的拷貝,而是該類所有的實例變數共用同一個static變數。
聲明為static的方法有以下幾條限制:
· 它們僅能調用其他的static方法。
· 它們只能訪問static數據。
· 它們不能以任何方式引用this或super(關鍵字super與繼承有關,在下一章中描述)。
如果你需要通過計算來初始化你的static變數,你可以聲明一個static塊,Static塊僅在該類被載入時執行一次。
下面的例子顯示的類有一個static方法,一些static變數,以及一個static 初始化塊:
class UseStatic {
static int a = 3;
static int b;
static void meth(int x) {
System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b);
}
static {
System.out.println("Static block initialized.");
b = a * 4;
}
public static void main(String args[]) {
meth(42);
}
}
一旦UseStatic類被裝載,所有的static語句被運行。首先,a被設置為3,接著static塊執行(列印一條消息),最後,b被初始化為a*4或12。然後調用main(),main()調用meth(),把值42傳遞給x。3個println ( )語句引用兩個static變數a和b,以及局部變數x 。
注意:在一個static方法中引用任何實例變數都是非法的。
下面是該程序的輸出:
Static block initialized.
x = 42
a = 3
b = 12
在定義它們的類的外面,static方法和變數能獨立於任何對象而被使用。這樣,你只要在類的名字後面加點號運算符即可。例如,如果你希望從類外面調用一個static方法,你可以使用下面通用的格式:
classname.method( )
這里,classname 是類的名字,在該類中定義static方法。可以看到,這種格式與通過對象引用變數調用非static方法的格式類似。一static變數可以以同樣的格式來訪問——類名加點號運算符。這就是Java如何實現全局功能和全局變數的一個控製版本。
下面是一個例子。在main()中,static方法callme()和static變數b在它們的類之外被訪問。
class StaticDemo {
static int a = 42;
static int b = 99;
static void callme() {
System.out.println("a = " + a);
}
}
class StaticByName {
public static void main(String args[]) {
StaticDemo.callme();
System.out.println("b = " + StaticDemo.b);
}
}
下面是該程序的輸出:
a = 42
b = 99
static成員是不能被其所在class創建的實例訪問的。
如果不加static修飾的成員是對象成員,也就是歸每個對象所有的。
加static修飾的成員是類成員,就是可以由一個類直接調用,為所有對象共有的
E. java中什麼是靜態方法
靜態方法是使用static關鍵字來修飾的方法,如:
public
class
Dog{public
static
void
show(){}}
這里的show()就是一個靜態方法,它有全局方法的特點。
靜態方法的調用不需要對象,可以用類名直接調用,如:
Dog.show();
當然,使用對象也是可以調用它的,如:new
Dog().show();
F. java內部類可以訪問外部類的靜態方法嗎
內部類
就相當於一個外部類的成員變數,所以可以直接訪問
外部變數
,外部類不能直接訪問內部類變數,必須通過創建內部類實例的方法訪問,
new
InnerClass
(32).m就是創建內部類實例訪問內部類成員變數。
你想不通的肯定是指內部類的私有變數怎麼可以被外部類訪問吧,按常規,私有變數m只能在InnerClass里被訪問,
但你要注意,內部類就相當於一個外部類的成員變數,舉個例子。
class
Outer{
private
int
m;
private
class
Inner{
private
int
n;
private
int
k;
}
}
m和類Inner都是成員變數,他們之間是平等的,唯一不同的就是Inner它是包裝了幾個成員變數比如n,k,也就是說m
n
k是平等的,區別在於訪問n
k要通過Inner,就是要建立Inner實例訪問nk,這樣解釋夠明白了吧
G. java內部類可以訪問外部類的靜態方法嗎
內部類
就相當於一個外部類的
成員變數
,所以可以
直接訪問
外部變數
,外部類不能直接訪問內部類變數,必須通過創建內部類實例的方法訪問,
new
InnerClass
(32).m就是創建內部類實例訪問內部類成員變數。
你
想不通
的肯定是指內部類的私有變數
怎麼可以
被外部類訪問吧,按常規,私有變數m只能在InnerClass里被訪問,
但你要注意,內部類就相當於一個外部類的成員變數,舉個例子。
class
Outer{
private
int
m;
private
class
Inner{
private
int
n;
private
int
k;
}
}
m和類Inner都是成員變數,他們之間是平等的,唯一不同的就是Inner它是包裝了幾個成員變數比如n,k,也就是說m
n
k是平等的,區別在於訪問n
k要通過Inner,就是要建立Inner實例訪問nk,這樣解釋夠
明白了吧