導航:首頁 > 編程語言 > java訪問靜態方法

java訪問靜態方法

發布時間:2022-07-06 12:45:58

1. java 普通方法可以直接調用靜態方法嗎

可以的,因為創建對象的時候必然載入了
靜態方法
,所以普通方法可以調用。但靜態方法不能訪問普通方法,因為不能保證內存中分配了普通方法的空間

2. java 什麼時候使用靜態方法

/*
static(靜態修飾符)

1.static修飾成員變數:如果有數據需要被共享給所有對象使用時,那麼就可以使用static修飾。

靜態成員變數的訪問方式:

方式1:可以使用對象進行訪問。
格式:對象.變數名。

方式二:可以使用類名進行訪問。
格式:類名.變數名;

注意:
1.非靜態的成員變數只能使用對象進行訪問,不能使用類名進行訪問。
2.千萬不要為了方便訪問數據而使用static修飾成員變數,只有成員變數的數據是真正需要被共享的時候
才使用static修飾。

static修飾成員變數的應用場景:如果一個數據需要被所有對象共享使用的時候,這時候即可好實用static修飾。


2.static修飾成員函數:

*/

classStudent{

static Stringname;//非靜態成員變數

static Stringcountry="中國"; //靜態的成員變數

publicStudent(Stringname){
this.name=name;
}
}


classDemo10{


publicstaticvoidmain(String[]args)
{
Students1=newStudent("狗娃");
Students2=newStudent("狗剩");

//System.out.println("國籍:"+Student.country);
System.out.println("名字:"+s1.name);
System.out.println("名字:"+s2.name);
}
}

3. Java中可以直接調用類中靜態方法,不用實例化么,詳解!原理

好吧,我來試試看,看答案能不能夠讓你滿意。
先通俗的分析下,我們把類看作是一個房子。房子裡面有傢具,桌椅板凳之類的,房子裡面還有人。
房子裡面所有的人都應該是共有一套傢具的。也就是說,這些傢具是唯一的,如果某個傢具壞了,那麼大家都用不了。
我們再看一看定義,java的靜態變數也叫做類變數,它開始於類的創建,結束於類的消亡。非靜態變數叫做實例變數,它開始於類的實例的創建,結束語類的實例的消亡。靜態變數被所有實例所共享。也就是如上面的例子,座椅板凳是類變數,它們是在房子被建好了之後就被添加放置進來,而且基本都是唯一的。人就相當於實例,每個人都能用這些傢具,但是如果傢具一旦損壞,那就是壞了,或者你把某一個傢具搬走,那麼所有的人都用不了這個傢具,房子里也不存在這個傢具了。
但是房子里可以進很多人,可以進張三,也可以進李四。所以這些人就是類的實例對象,他們身上穿的衣服就可以叫做實例變數。
那麼在內存之中又是如何的呢?當一個類被創建並初始化後,內存中會有兩個區域,棧區和堆區。棧中主要存放的是引用變數,堆中主要存放的是真實的被實例化後的類。棧中的引用變數會指向堆中的真實對象地址。比如A a=new A(); a這個變數就會在棧中,實際被new出來的類A的對象會放在堆中,a指向實際被new出來的A對象。
如果一個類中有靜態變數的話,程序首先會把該靜態變數載入進內存中,也就是在堆中開辟一個區域專門存放。以後不管你new多少個類的對象,該靜態變數永遠都是在那裡的。也就是說,靜態變數在類的初始化一次後,系統就不會為該變數開辟新的內存空間。而每new一個類的對象,系統就會重新在
堆內存中開辟一個新空間來存放該類的實例對象,並且棧中也會有一個新的引用變數去指向它。
靜態方法也是類似,但是有一點要強調,靜態方法只中不能調用非靜態方法。因為被static修飾的方法會首先被Classloader對象先載入進內存,而這個時候可能其它的非靜態方法或者變數還沒有被載入進來。就好比我現在想做包子,現在麵粉被static修飾,首先已經拿到你身邊,可是因為包子餡不是static修飾的,所以可能包子餡兒還沒運過來,你說怎麼做的出包子呢。
被static修飾過的都是隨著類的初始化後就產生了,在堆內存中都有一塊專門的區域來存放,所以只需要類名點方法名或者變數名即可。而非靜態的就必須通過類的對象去調相應的。就像是你想要紅色的衣服,你必須是從穿紅色的衣服的人的身上拿過來才行,所以你必須找到穿紅色衣服的人,也就是類的實例對象,而你如果要去找一個桌子,而桌子就在房間里擺著,你只要進到房間里直接走過去拿來就可以了~~

4. java本類的靜態方法如何直接調用,其他類的靜態方法如何調用

java本類的靜態方法,直接使用靜態的方法名傳入參數就可以了,如果是其他類的,許可權修飾符必須是public否者無法調用,調用方法是
其他類的類名
.
方法名(參數)

5. java中什麼是靜態方法

若類的方法前加了static關鍵字,則該方法稱為靜態方法,反之為實例方法。靜態方法為類所有,可以通過對象來使用,也可以通過類來使用。但一般提倡通過類名來使用,因為靜態方法只要定義了類,不必建立類的實例就可使用。靜態方法只能調用靜態變數。

6. javaweb項目如何訪問靜態資源

1 在spring框架下,如果讓mvc攔截所有路徑,需要配置靜態資源路徑:

<mvc:resourceslocation="/image"mapping="image/**"/>
<mvc:resourceslocation="/css"mapping="css/**"/>

現在一般都使用rest風格介面, 即mvc攔截/rest/**請求, 所以只要把靜態文件放在其他路徑就可以了

2 原生servlet,struct2 直接訪問即可

7. java里靜態方法在什麼情況下使用,好處是什麼

轉:
靜態方法和實例方法的區別主要體現在兩個方面:

在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式。而實例方法只有後面這種方式。也就是說,調用靜態方法可以無需創建對象。

靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問實例成員變數和實例方法;實例方法則無此限制。

下面幾個例子展示了這一區別。

1、調用靜態方法示例。

//-----------文件名hasStaticMethod.java,程序編號1-----------------public class hasStaticMethod{//定義一個靜態方法public static void callMe(){System.out.println("This is a static method.");}}

下面這個程序使用兩種形式來調用靜態方法。
//-----------文件名invokeStaticMethod.java,2-----------------public class invokeStaticMethod{public static void main(String args[]){hasStaticMethod.callMe(); //不創建對象,直接調用靜態方法 hasStaticMethod oa = new hasStaticMethod(); //創建一個對象oa.callMe(); //利用對象來調用靜態方法}}
程序3.36兩次調用靜態方法,都是允許的,程序的輸出如下:
This is a static method.This is a static method.

允許不創建對象而調用靜態方法,是Java為了減少程序員調用某些常用方法時的麻煩,而允許程序員按照傳統的C語言中使用函數的方式來使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"來獲取隨機數。

2、靜態方法訪問成員變數示例。

//-----------文件名accessMember.java,程序編號3.37-----------------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(); //正確,可以調用靜態方法}}

本例其實可以概括成一句話:靜態方法只能訪問靜態成員,實例方法可以訪問靜態和實例成員。之所以不允許靜態方法訪問實例成員變數,是因為實例成員變數是屬於某個對象的,而靜態方法在執行時,並不一定存在對象。同樣,因為實例方法可以訪問實例成員變數,如果允許靜態方法調用實例方法,將間接地允許它使用實例成員變數,所以它也不能調用實例方法。基於同樣的道理,靜態方法中也不能使用關鍵字this。

main()方法是一個典型的靜態方法,它同樣遵循一般靜態方法的規則,所以它可以由系統在創建對象之前就調用。

8. 一個關於JAVA靜態問題求解釋,STATIC方法只能訪問STATIC方法,非STATIC方法可以訪問STATIC方法,

你好,我覺得一句話就能說清楚,說的多了,反而讓你理解的更加模糊。記住這點:
靜態方法是屬於類的,而普通方法是屬於對象的。
屬於類的靜態方法可以在對象不存在的時候就能訪問到,而普通方法必須先new一個對象才能用這個對象訪問。當我們訪問調用靜態方法的時候(使用類名.靜態方法名)這個時候就沒有對象創建,所以普通方法是訪問不到的。為了避免這種錯誤,所以java就不允許在靜態方法中訪問非靜態方法。
還有糾正你的錯誤,main方法也滿足我上面說的,你仔細看下,main方法中是不是先創建的對象,然後用對象去訪問的呀。

9. 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,這樣解釋夠明白了吧

閱讀全文

與java訪問靜態方法相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:419
個人所得稅java 瀏覽:760
多餘的伺服器滑道還有什麼用 瀏覽:189
pdf劈開合並 瀏覽:26
不能修改的pdf 瀏覽:750
同城公眾源碼 瀏覽:488
一個伺服器2個埠怎麼映射 瀏覽:297
java字元串ascii碼 瀏覽:78
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:945
安卓導航無聲音怎麼維修 瀏覽:332
app怎麼裝視頻 瀏覽:430
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491