本文目錄一覽:
- 1、java內部類可以訪問外部類的靜態方法嗎
- 2、java靜態資源(靜態方法,靜態屬性)是程序一運行就載入到jvm中,還是當被調用的時候才進行載入呢?
- 3、javaweb項目如何訪問靜態資源
- 4、一個關於JAVA靜態問題?求解釋,STATIC方法只能訪問STATIC方法,非STATIC方法可以訪問STATIC方法,
- 5、JAVA里靜態的屬性怎麼在jsp里訪問?
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靜態資源(靜態方法,靜態屬性)是程序一運行就載入到jvm中,還是當被調用的時候才進行載入呢?
當類第一次被調用時載入(靜態方法,靜態屬性的載入就是類載入) 。
1、類中的靜態屬性會被加入到類對象(也可以叫做類的模板,是類的描述) 的構造器中,靜態方法也會被加入到類對象中。
2、當第一次使用類時,JVM會通過類載入器,載入類對象,從而初始化靜態屬性,並裝入類的方法,包括靜態方法和實例方法(方法不會被調用,只是載入,從這個意義上來說,靜態方法和實例方法是類似的)。
3、當創建類的實例對象時,JVM會調用類的構造器,從而初始化類的屬性。
擴展資料:
類(包括靜態方法、屬性)載入過程:
一、載入。
根據一個類的全限定名(如cn.edu.hdu.test.HelloWorld.class)來讀取此類的二進位位元組流到JVM內部。
將位元組流所代表的靜態存儲結構轉換為方法區的運行時數據結構(hotspot選擇將Class對象存儲在方法區中,Java虛擬機規範並沒有明確要求一定要存儲在方法區或堆區中)轉換為一個與目標類型對應的java.lang.Class對象。
二、連接。
1、驗證。
驗證階段主要包括四個檢驗過程:文件格式驗證、元數據驗證、位元組碼驗證和符號引用驗證;
2、準備。
為類中的所有靜態變數分配內存空間,並為其設置一個初始值(由於還沒有產生對象,實例變數將不再此操作範圍內);
3、解析。
將常量池中所有的符號引用轉為直接引用(得到類或者欄位、方法在內存中的指針或者偏移量,以便直接調用該方法)。這個階段可以在初始化之後再執行。
參考資料:
百度百科–Java類載入器
百度百科–JVM
javaweb項目如何訪問靜態資源
1 在spring框架下,如果讓mvc攔截所有路徑,需要配置靜態資源路徑:
mvc:resources location=”/image” mapping=”image/**”/
mvc:resources location=”/css” mapping=”css/**”/
現在一般都使用rest風格介面, 即mvc攔截/rest/**請求, 所以只要把靜態文件放在其他路徑就可以了
2 原生servlet,struct2 直接訪問即可
一個關於JAVA靜態問題?求解釋,STATIC方法只能訪問STATIC方法,非STATIC方法可以訪問STATIC方法,
你好,我覺得一句話就能說清楚,說的多了,反而讓你理解的更加模糊。記住這點:
靜態方法是屬於類的,而普通方法是屬於對象的。
屬於類的靜態方法可以在對象不存在的時候就能訪問到,而普通方法必須先new一個對象才能用這個對象訪問。當我們訪問調用靜態方法的時候(使用類名.靜態方法名)這個時候就沒有對象創建,所以普通方法是訪問不到的。為了避免這種錯誤,所以java就不允許在靜態方法中訪問非靜態方法。
還有糾正你的錯誤,main方法也滿足我上面說的,你仔細看下,main方法中是不是先創建的對象,然後用對象去訪問的呀。
JAVA里靜態的屬性怎麼在jsp里訪問?
第一:如果是對象的話,你應該去看看jsp:bean的用法。只有配合使用jsp:getProperty才有用
第二:是靜態的函數,也就不怕了。你在
%@ page language=”java” import=”java.util.*,com.rh.entity.*” contentType=”text/html; charset=GB18030″
pageEncoding=”GB18030″%
import=”java.util.*,com.rh.entity.*” 加上這句,當然是你的Infomation 類的全路徑,你就可以在jsp中用了
%=Infomation.getJavaRuntimeVersion() %
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247338.html