導航:首頁 > 編程語言 > java在初始化過程

java在初始化過程

發布時間:2023-07-14 19:20:33

『壹』 當java父類和子類都有構造函數時,求子類對象初始化過程詳解

你好,初始化過程是這樣的:
1.首先,初始化父類中的靜態成員變數和靜態代碼塊,按照在程序中出現的順序初始化;
2.然後,初始化子類中的靜態成員變數和靜態代碼塊,按照在程序中出現的順序初始化;
3.其次,初始化父類的普通成員變數和代碼塊,在執行父類的構造方法;
4.最後,初始化子類的普通成員變數和代碼塊,在執行子類的構造方法;
最後,給你個例子吧。你運行著幫助理解。
class Super{
public static int a ;
private int b ;

static{
System.out.println("此時a的值為:" + a) ;
a = 10 ;
}
public Super(){
System.out.println("此時a的值為:" + a) ;
System.out.println("此時b的值為:" + b) ;
b = 20 ;
}
{
System.out.println("此時b的值為:" + b);
b = 30 ;
}
}
class Sub extends Super{
public static int aa ;
private int bb ;

static{
System.out.println("此時aa的值為:" + aa) ;
aa = 10 ;
}
public Sub(){
System.out.println("此時aa的值為:" + aa) ;
System.out.println("此時bb的值為:" + bb) ;
bb = 20 ;
}
{
System.out.println("此時bb的值為:" + bb);
bb = 30 ;
}
}
public class ConstructorTest {
public static void main(String[] args) {
new Sub() ;
}
}

『貳』 關於JAVA初始化及初始化順序的問題,謝謝~~

問題1:
在Java中,類裝載器把一個類裝入Java虛擬機中,要經過三個步驟來完成:裝載、鏈接和初始化,其中鏈接又可以分成校驗、准備和解析三步,除了解析外,其它步驟是嚴格按照順序完成的,各個步驟的主要工作如下:
裝載:查找和導入類或介面的二進制數據;
鏈接:執行下面的校驗、准備和解析步驟,其中解析步驟是可以選擇的;
校驗:檢查導入類或介面的二進制數據的正確性;
//下面這句話很重要
准備:給類的靜態變數分配並初始化存儲空間;
解析:將符號引用轉成直接引用;
初始化:激活類的靜態變數的初始化Java代碼和靜態Java代碼塊。
初始化類中屬性是靜態代碼塊的常用用途,但只能使用一次。

在你補充的例子中,該類沒有被實例化,也就是未被運行,只是被分配了內存空間

問題2:在實例化Insect()時,列印j,此時系統找不到變數j,因為j不是全局變數,而是局部變數,而且定義在後面。
如果改為
Insect(){
int j=39;
System.out.println("i = "+i+", j = "+j);
}
就可以了

變數放在方法外面為該類的全部變數,在所有方法中可用
在方法內定義的變數只能在該方法中使用,而且必須先定義後使用。

『叄』 在基於spring搭建的java web應用中,是通過什麼方式觸發spring的初始化過程的

前段時間在公司做了一個項目,項目用了spring框架實現,WEB容器是Tomct 5,雖然說把項目做完了,但是一直對spring的IoC容器在web容器如何啟動和起作用的並不清楚。所以就抽時間看一下spring的源代碼,藉此了解它的原理。
我們知道,對於使用Spring的web應用,無須手動創建Spring容器,而是通過配置文件,聲明式的創建Spring容器。因此在Web應用中創建Spring容器有如下兩種方式:
1. 直接在web.xml文件中配置創建Spring容器。
2. 利用第三方MVC框架的擴展點,創建Spring容器。
其實第一種方式是更加常見。為了讓Spring容器隨Web應用的啟動而啟動,有如下兩種方式:
1. 利用ServletContextListener實現。
2. 利用load-on-startup Servlet實現。
Spring提供ServletContextListener的一個實現類ContextLoaderListener,該類可以作為Listener 使用,它會在創建時自動查找WEB-INF下的applicationContext.xml文件,因此,如果只有一個配置文件,並且文件名為applicationContext.xml,則只需在web.xml文件中增加以下配置片段就可以了。

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
如果有多個配置文件需要載入,則考慮使用<context-param...>元素來確定配置文件的文件名。ContextLoaderListener載入時,會查找名為contentConfigLocation的初始化參數。因此,配置<context-param...>時就指定參數名為contextConfigLocation。
帶多個配置文件的web.xml文件如下:

<context-param>
<param-name>contextLoaderListener</param-name>
<param-value>
WEB-INF/*.xml, classpath:spring/*.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
多個配置文件之間用「,」隔開。

下面我們來看它的具體實現過程是怎樣的,首先我們從ContextLoaderListener入手,它的代碼如下:

public class ContextLoaderListener implements ServletContextListener
{

private ContextLoader contextLoader;

/**
* 這個方法就是用來初始化web application context的
*/
public void contextInitialized(ServletContextEvent event)
{
this.contextLoader = createContextLoader();
this.contextLoader.initWebApplicationContext(event.getServletContext());
}

/**
* 創建一個contextLoader.
* @return the new ContextLoader
*/
protected ContextLoader createContextLoader()
{
return new ContextLoader();
}
................

}

『肆』 JAVA里初始化是什麼意思

初始化就是給變數一個初始值。

例如:

聲明一個變數:String aa = "abc";int cc =0;其中abc和0就是初始化的值,最後值不一定是abc或者 0加入你覆蓋了aa的值如下:

aa = "def" ; cc=1;那最後aa變數的值就是def,cc變數就是1了,初始化的目的是為了讓變數有值,防止使用時出現異常。

(4)java在初始化過程擴展閱讀:

作用

1、遇到new,getstatic,putstatic,或invokestatic這4條位元組碼指令時,如果類沒有進行過初始化,則需要先觸發其初始化。生成這四條指令單最常見的Java代碼場景是:

使用new關鍵字實例化對象的時候,讀取或設置一個類的靜態欄位(被final修飾,已在變異期把結果放入常量池的靜態欄位除外)的時候,以及調用一個類的靜態方法的時候。

2、使用java.lang.reflect包的方法對類進行反射調用的時候,如果類沒有進行過初始化,則需要先出法其初始化。

3、當初始化一個類的時候,如果發現其父類還沒有進行初始化,則需要先出法其父類的初始化。

4、當虛擬機啟動時,用戶需要指定一個要執行的主類(包含main()方法的那個類),虛擬機會先初始化這個主類。

『伍』 java類中構造函數中:數組怎樣初始化

數組一般都是用FOR循環初始化較多吧,如:
for(int i =0;i<array.length;i++){
array[i]=2;
}

閱讀全文

與java在初始化過程相關的資料

熱點內容
編譯器命令java 瀏覽:985
雲伺服器怎麼數據同步 瀏覽:681
c盤文件修復命令語 瀏覽:964
文件夾中文件怎麼上下移動 瀏覽:829
魅族手機用什麼軟體解壓 瀏覽:763
加密幣糖果 瀏覽:300
c編譯調試是什麼 瀏覽:631
安裝mysql服務命令 瀏覽:734
程序員cpa考試 瀏覽:200
汕頭買房用什麼app好 瀏覽:23
民生原號碼掉失如何登錄app 瀏覽:710
如何設置伺服器的重生點 瀏覽:272
租用伺服器地址如何查詢 瀏覽:575
編譯的英語是啥 瀏覽:313
伺服器如何上傳網站東西 瀏覽:207
編譯器怎麼通過系統控制台輸出的 瀏覽:469
拆傢具用什麼app 瀏覽:47
單片機國內外 瀏覽:651
函數的運演算法則題目 瀏覽:719
有免費編譯軟體嗎 瀏覽:918