1. 程式人生 > >【static】----static關鍵字--記憶體中簡單過程

【static】----static關鍵字--記憶體中簡單過程

Static關鍵字 靜態修飾符在記憶體中的簡單圖解過程

原始碼:
//static靜態的測試

//寫一個Person()類
class Person
{
	String name;
	static String country="China";
	
	public void show()
	{
		System.out.println("country:"+country+",name:"+name);
	}
} 

//測試類
public class StaticDemo
{
	public static void main(String args[])
	{
		Person p=new Person();
		p.name="小琴";
		p.show();
	}
}

Static 靜態修飾符在記憶體中的圖解:

1.      首先在棧記憶體中,main方法進棧,此時當建立一個物件p的時候,棧裡面有兩個變數name,country,country有一個初始化值。(如圖1)


2.      當建立多個物件的時候(如圖2),由於在這個物件中的name的值一直變得,但是country的值是不變的,可以將country當作一個靜態變數處理。


3.      每個物件裡都有相同的值,佔用記憶體空間。可以將這個變數放到外邊,需要的時候進行呼叫就可以了。這個時候建立一塊區域,將country放到這塊區域裡面。(如圖3)


4.      如何將這個變數放到外面來,而其他的變數不用放到外面來呢?把這個country變成所有物件都可以共享的資料,這就需要一個關鍵字static 在定義變數的前面加上一個static 就可以了。

5.      被static修飾的資料有什麼特點呢?這個資料可以被所有的物件共享。我們就將這個資料稱作為物件的共享資料。


相關推薦

static----static關鍵字--記憶體簡單過程

Static關鍵字 靜態修飾符在記憶體中的簡單圖解過程 原始碼: //static靜態的測試 //寫一個Person()類 class Person { String name; static String country="China"; public

總結C++與C#static靜態修飾符

this sea const 數據 一切都 UC 限制 有一個 字段 重點 靜態類(sealed+abstract) 靜態構造函數(無參,無限制符,自動執行一次) 靜態變量(類級別,實例無關,靜態存儲區中) 靜態方法(不能被重寫) 靜態局部變量(始終存在) 靜態本質是實

C++static

目錄 面向過程設計中的static 靜態全域性變數 靜態區域性變數 靜態函式 面向物件的static關鍵字(類中的static關鍵字) 靜態資料成員 靜態成員函式  參考 面向過程中的static:在全域性變數和函式基礎上做了改進,stati

caffe在windows平臺安裝caffe(一):基礎安裝及簡單測試

基礎配置 本文中的配置:win10 + vs2015 + python2.5 + cmake3.12 + git2.15 + CUDA8.0 + cuDNN-8.0-5 在進行windows下的caffe安裝前,一定要把以上的這些軟體安裝好,並加入系統路徑中。

關於MFC程式ScrollBar的用法簡單介紹

看上去不能用一句兩句話記錄,所以還是轉到部落格上。 首先是一些函式介紹    BOOL SetScrollInfo(LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE);        用於設定滾動條的各種引數資訊。引數l

Cwindows在**.exe觸發了一個斷點,其原因可能是堆被損壞,解決方案,C記憶體申請釋放真TM麻煩,還是python好

寫程式過程中遇到malloc申請記憶體時出現錯誤,錯誤如下: 0x77C1E8FB (ntdll.dll) (Graph.exe 中)處有未經處理的異常: 0xC0000374: 堆已損壞。 (引數: 0x77C54270)        程式除錯過程中,在第一個

javaStatic解讀和public static void main(String[] args)詳細分析

首先問一個問題: public static void main(String[] args)程式碼代表了什麼含義?以及思考為什麼java程式一開始就會進入main()函式,其實c、c++也是如此?後面一個問題有static的基礎就非常容易。(後一個問題的答案提前公佈:用s

C++static 變數用法

static 變數用法 介紹static變數用法: C++ - static變數宣告 - static變數初始化 static變數宣告 static 宣告可以寫成這個樣子: cla

原創Python 對象創建過程元類, __new__, __call__, __init__ 的處理

diff regular luci 自定義 weight ica 一般來說 att ray 原始type: type是最原始的元類,其__call__方法是在你使用" t_class = type(classname_string, base_classes_tuple,

WPF三維模型的“照相機”

聲明 mesh 妹子 .com 看到了 指向 世界 png per WPF 部分支持三維模型,為啥說是部分支持?畢竟 WPF 的側重點還是在應用開發上,雖然也有些遊戲是用 WPF 開發的,不過,老周想啊,如果真要開發遊戲,最好用專門的框架,WPF 應當用於開發應用功能的。不

Oracle詳解OracleNLS_LANG變量的使用

make fault tro territory font pin onclick 添加 其中 目錄結構: // contents structure [-] 關於NLS_LANG參數 NSL_LANG常用的值 在MS-DOS模式和Batch模式中

Java接口開發關於接受和發送json的相關範例

actual not span data private pla doby arr oms 接受json package com.suneee.scn.wms.web.rocketmq; import java.util.List; import net.sf.jso

VisualStudio軟件安裝出現的問題

lin 軟件安裝 出現 文件中 單個 spa 打開文件 ++ span 針對2017版本安裝 1. 安裝windows通用平臺工具出錯 報錯信息:15605 FQ安裝。 2. LINK : fatal error LNK1104: 無法打開文件“gdi32.lib” 在安

數據結構棧和堆---內存分配棧和堆

heap 元素 部分 程序 記錄 ptr 區域 sdn 頭部 一、數據結構的棧和堆 首先在數據結構上要知道堆棧,盡管我們這麽稱呼它,但實際上堆棧是兩種數據結構:堆和棧。堆和棧都是一種數據項按序排列的數據結構。 1)棧就像裝數據的桶或箱子 我們先從大家比較熟悉的棧說起吧

spring-boot實戰07:Spring BootWeb應用的統一異常處理

http integer private fin ima lex clas 友好 ref 我們在做Web應用的時候,請求處理過程中發生錯誤是非常常見的情況。Spring Boot提供了一個默認的映射:/error,當處理中拋出異常之後,會轉到該請求中處理,並且該請求有一個全

spring-boot實戰06:Spring Boot使用Swagger2

des values 產生 service sof div 解決 整合 data 由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的用戶會用來構建RESTful API。而我們構建RESTful API的目的通常都是由於多終端的

spring-boot實戰12:Spring Boot使用JavaMailSender發送郵件

nts fun rop oci 單元測試 prop 快速入門 cat tid 相信使用過Spring的眾多開發者都知道Spring提供了非常好用的JavaMailSender接口實現郵件發送。在Spring Boot的Starter模塊中也為此提供了自動化配置。下面通過實例

用Python建立最簡單的web服務器

web服務 localhost 服務器 pos 根目錄 cal body -m -- 利用Python自帶的包可以建立簡單的web服務器。在DOS裏cd到準備做服務器根目錄的路徑下,輸入命令: python -m Web服務器模塊 [端口號,默認8000]

MySQL如何解決MySQL查詢不區分大小寫的問題

bsp title 標識 article ble 問題 col bold table mysql查詢默認是不區分大小寫的 如: select * from some_table where str=‘abc‘; select * from some_ta

轉載Spark學習——spark的幾個概念的理解及參數配置

program submit man 聯眾 tail 進行 orb 數據源 work 首先是一張Spark的部署圖: 節點類型有: 1. master 節點: 常駐master進程,負責管理全部worker節點。2. worker 節點: 常駐worker進程,負責管理