1. 程式人生 > >關於java中的非靜態程式碼塊和靜態程式碼塊

關於java中的非靜態程式碼塊和靜態程式碼塊

非靜態程式碼塊如:

	{
		System.out.println("2");
	}
以上程式碼塊就是非靜態的程式碼塊,請注意這裡的方法名、作用域、返回值、引數一概沒有,非靜態程式碼塊會在每次類被呼叫或者被例項化時就會被執行。

靜態程式碼塊如:

static {
		System.out.println("3");
	}
上面的程式碼塊就是靜態的程式碼塊,同樣沒有方法名、作用域、返回值以及引數,靜態程式碼塊類似於靜態變數,不論類被呼叫多少次,該區域程式碼只在第一次時執行一次

大家可以通過下面的程式碼做進一步的測試

public class test1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new test1();
		new test1();
	}
	
	{
		System.out.println("2");
	}
	static {
		System.out.println("3");
	}
	
	public test1(){
		System.out.println("1");
	}

}
輸出結果為

3
2
1
2
1

從結果中發現靜態程式碼塊以及非靜態程式碼塊都會在建構函式前執行,首次訪問時,靜態程式碼塊會在非靜態程式碼塊前執行

相關推薦

Java靜態程式碼靜態方法

1 靜態程式碼塊:有些程式碼必須在專案啟動的時候就執行,這種程式碼是主動執行的(當類被載入時,靜態程式碼塊被執行,且只被執行一次,靜態塊常用來執行類屬性的初始化) 2 靜態方法:需要在專案啟動的時候就初始化,在不建立物件的情況下,這種程式碼是被動執行的(靜態方法在類載入的時候就已經載入 可以用類

關於java中的非靜態程式碼靜態程式碼

非靜態程式碼塊如: { System.out.println("2"); }以上程式碼塊就是非靜態的程式碼塊,請注意這裡的方法名、作用域、返回值、引數一概沒有,非靜態程式碼塊會在每次類被呼叫或者被例項化時就會被執行。 靜態程式碼塊如: static { Syst

Java靜態程式碼靜態方法的區別/類載入順序

 (一)java 靜態程式碼塊 靜態方法區別  一般情況下,如果有些程式碼必須在專案啟動的時候就執行的時候,需要使用靜態程式碼塊,這種程式碼是主動執行的;需要在專案啟動的時候就初始化,在不建立物件的情況下,其他程式來呼叫的時候,需要使用靜態方法,這種程式碼是被動執行的.

Java靜態程式碼靜態方法的區別

(一)java 靜態程式碼塊 靜態方法區別 一般情況下,如果有些程式碼必須在專案啟動的時候就執行的時候,需要使用靜態程式碼塊,這種程式碼是主動執行的;需要在專案啟動的時候就初始化,在不建立物件的情況下,其他程式來呼叫的時候,需要使用靜態方法,這種程式碼是被動執行的. 靜態

單例模式--靜態內部類靜態程式碼實現單例的區別

靜態資源不是一開始就存在於記憶體中的。 我們來看一個例子,靜態資源不是一開始就存在於記憶體中的。 class A{ private A(){ System.out.println("A被初始化了"); }

靜態程式碼構造程式碼

靜態程式碼塊 /* 靜態程式碼塊:隨著類的載入就執行,只執行一次,優先於main函式執行 */ class Test { static{ System.out.prin

靜態關鍵字static靜態程式碼、區域性程式碼快、構造程式碼

一、靜態什麼時候使用? 1、靜態變數 分析物件中所具備的成員變數的值都相同時,而且這個成員不需要修飾,這時成員變數就可以被靜態修飾 2、靜態函式 該函式是否需要訪問物件中的特有資料 二、static關鍵字的特點:用於修飾成員(屬性和方法) 1、可以用類名直接呼

java中構造程式碼、static程式碼區域性程式碼的區別

先上程式碼: class StaticCode{ int age; // static程式碼塊 static{ System.out.println("static程式碼塊"); } //構造程式碼塊

JAVA之類,建構函式構造程式碼

類:         在我們的日常生活中,對於事物的描述無非就是描述事物的屬性和行為。如:人的身高,體重,年齡等稱為屬性,人會說話,會跑步,會做飯等等稱為行為。         而對於Java中的類,無非也是如此,包含了屬性和行為。 類的定義: 屬性:對應類中的成員變數行

java中的初始化靜態

java語言中的初始化塊 1、什麼是初始化塊? 在一個類中,用來對例項變數作初始化的語句塊。2、初始化塊在何時被執行? 它在每一次構造物件時被執行且比構造器先執行。3、對例項變數做初始化有三種方式? 1) 通過構造器實現初始化。 2) 在定義例項變數時就給它一個值。 3)

JAVA的例項靜態

例項塊例項塊就是一個劃分的程式碼區域。{   程式碼   }1.它是在構造器之前執行。2.它和屬性初始化一同執行。3.一個類中可以有很多個例項塊。4. 多個例項塊執行順序是按照順序從上到下執行。public class Test3 {     {         System

構造函數,構造代碼靜態代碼的先後順序運用

images pri 如果 什麽 存在 png 屬性 pack ges 在自學到java面向對象時,知道有靜態代碼塊,構造代碼塊和構造函數的存在,如果說構造函數是初始化對象,那麽其他2者又是怎麽使用,又有什麽區別呢。簡單的舉了下面的例子: 1 package 面向對

java中如何使用空參構造方法自動生成不同名字的對象,使用非靜態的屬性靜態屬性有什麽區別,原因是什麽?如何理解static關鍵字

區別 關鍵字 內部 方法 屬性 count per setname person 空參構造自動生成對象時,使用非靜態的屬性 代碼: package com.swift; //使用無參構造方法自動生成對象,序號不斷自增 public class Person { p

java中的內部類靜態內部類

以下程式執行結果為 public class Test { public class A{ public String test="A"; } public static class B{ public Strin

Java靜態內部類靜態內部類,訪問父類的非靜態靜態成員變數及成員函式

 public class Test { // Not static variable private int mAge = 10; // Static variable private static int mId = 1; // Single inst

Java內部類(3):非靜態內部類為什麼不能有靜態成員變數靜態方法。

首先要明白以下三點: static型別的屬性和方法,在類載入的時候就會存在於記憶體中。 要想使用某個類的static屬性和方法,那麼這個類必須要載入到虛擬機器- 中。 非靜態內部類並不隨外部類一起載入,只有在例項化外部類之後才會載入。 現在考慮這個情

mongo與java 的group by分組排序程式碼(備忘)

MongoTemplate gameMt = (根據具體專案獲得)        DBCollection myColl = gameMt.getDb().getCollection("avatar");//表名         // 分組         DBObject

Java中的動態代理靜態代理

1 代理概念 為某個物件提供一個代理,以控制對這個物件的訪問。 代理類和委託類有共同的父類或父介面,這樣在任何使用委託類物件的地方都可以用代理物件替代。代理類負責請求的預處理、過濾、將請求分派給委託類處理、以及委託類執行完請求後的後續處理。 代理模式

JNI獲取並修改Java中類的變數靜態變數的值

對於JNI的基本使用請移步:Hello JNI 本文主要介紹以下幾個函式的使用: GetObjectClass GetFieldID,GetStaticFieldID Get< Type>Field,GetStatic<

26(eclipse自動程式碼提示自動程式碼補全)

一般情況下,eclipse的程式碼自動提示是關閉的,對此其實是很不方便的,你需要輸入點才會有提示,或者alt+/才會提示,這樣平均每天會浪費半個小時到一個小時。 設定方法 eclipse工具欄window————preferences 將紅框中的內容修改為 .abcdefg