全域性變數與構造器初始化順序

2021-06-19 05:56:16 字數 730 閱讀 9510

1. 先初始化全域性變數,再初始化構造器

2. 先初始化父類,再初始化子類

3. 先初始化靜態變數,再初始化其他變數

4. 靜態變數第一次呼叫時初始化,只初始化一次

package com.yjq.cn.initialize;

public class orderofinitial }

class one

public int f1(int i)

public string f2(string s)

}class two extends one

public int f3(int i)

public string f4(string s)

}class three

public int f5(int i)

public int f6(int i)

//output

f1f2

one先初始化引數,再初始化構造方法

-------

f1f2

onef3

f4two

先初始化父類,再初始化子類

-------

f1f2

onef6

f5three

先初始化靜態引數,再初始其他引數

-------

f6f5

three

靜態引數只初始化一次

未初始化全域性變數

未初始化全域性變數,這名字就很直白,就是 c 程式中定義成全域性作用域而又沒有初始化的變數,我們知道這種變數在程式執行後是被自動初始化為 全0 的。編譯器編譯的時候會將這類變數收集起來集中放置到 bss 段中,這個段只記錄了段長,沒有實際上的內容 全是0,沒必要儲存 在程式被裝載時作業系統會為它分配...

關於未初始化全域性變數

前幾天發現未初始化全域性變數一些特性,後來在一篇部落格上發現有人說過這個問題 這是原博文位址 blog.csdn.net liuqiaoyu080512 article details 8455652 然後結合原博文,自己又做了幾個實驗 以下算是自己實驗一遍以後的總結 首先,自己曾經以為未初化的全域...

C 全域性變數記憶體分配和初始化順序

區域性變數是在棧空間上,記憶體分配的順序和 的順序是一致的 一般來說,對於初始化的全域性變數,編譯器遇到之後知道這是乙個定義,會馬上分配空間,例如 int ib 10 int ia 10 這個分配的結果是 ia的位址在ib後面 對於未初始化的全域性變數,編譯器遇到之後不知道是宣告還是定義,所以要在掃...