Java淺析代碼塊與構(gòu)造塊及靜態(tài)塊三者之間的關(guān)系
普通代碼塊(本地代碼塊)
定義在方法里面用{ }括起來的代碼塊(凡是用{ }括起來都叫代碼塊,只是沒有細(xì)分),就是普通代碼塊,也叫本地代碼塊。(不多見,也不常用)
例如:
public class Test {
public static void main(String[] args){
{
System.out.println("本地代碼塊!");
}
}
}構(gòu)造塊(實(shí)例代碼塊)
實(shí)例代碼塊定義在類的內(nèi)部,方法的外部,可以初始化實(shí)例的成員
例如:
class Student{
//成員變量
public String name;
public int score;
//類變量
public static String classes = "火箭6班";
//類方法
public static void fun1(){
Student stu = new Student();
stu.name = "jay"; //正確
System.out.println("類方法");
}
//成員方法
public void fun2(String name, int score){
this.name = name;
this.score = score;
}
//實(shí)例代碼塊
{
this.name = "jay";
System.out.println("實(shí)例代碼塊!");
}
}靜態(tài)塊(靜態(tài)代碼塊)
靜態(tài)代碼塊定義在類的內(nèi)部,方法的外部,可以初始化實(shí)例的成員
例如:
class Student{
//成員變量
public String name;
public int score;
//類變量
public static String classes = "火箭6班";
//類方法
public static void fun1(){
Student stu = new Student();
stu.name = "jay"; //正確
System.out.println("類方法");
}
//成員方法
public void fun2(String name, int score){
this.name = name;
this.score = score;
}
//實(shí)例代碼塊
{
System.out.println("實(shí)例代碼塊!");
}
//靜態(tài)代碼塊
static{
classes = "16班";
System.out.println("靜態(tài)代碼塊!");
}他們之間有什么關(guān)系呢
例子
情況一:看如下代碼會(huì)執(zhí)行什么?
class Student{
//成員變量
public String name;
public int score;
//構(gòu)造方法
public Student(){
System.out.println("構(gòu)造方法!");
}
//類變量
public static String classes = "火箭6班";
//類方法
public static void fun1(){
Student stu = new Student();
stu.name = "jay"; //正確
System.out.println("類方法");
}
//成員方法
public void fun2(String name, int score){
this.name = name;
this.score = score;
}
//實(shí)例代碼塊
{
System.out.println("實(shí)例代碼塊!");
}
//靜態(tài)代碼塊
static{
System.out.println("靜態(tài)代碼塊!");
}
}
public class Test {
public static void main(String[] args){
Student stu = new Student();
}
}情況一運(yùn)行結(jié)果:

情況二:看如下代碼會(huì)執(zhí)行什么?
class Student{
//成員變量
public String name;
public int score;
//構(gòu)造方法
public Student(){
System.out.println("構(gòu)造方法!");
}
//類變量
public static String classes = "火箭6班";
//類方法
public static void fun1(){
Student stu = new Student();
stu.name = "jay"; //正確
System.out.println("類方法");
}
//成員方法
public void fun2(String name, int score){
this.name = name;
this.score = score;
}
//實(shí)例代碼塊
{
System.out.println("實(shí)例代碼塊!");
}
//靜態(tài)代碼塊
static{
System.out.println("靜態(tài)代碼塊!");
}
}
public class Test {
public static void main(String[] args){
System.out.println(Student.classes);
}
}情況二運(yùn)行結(jié)果:

分析
- 他們執(zhí)行的順序是:靜態(tài)代碼塊 -> 實(shí)例代碼塊 -> 構(gòu)造方法(不論代碼塊的位置在哪,都是這個(gè)順序!若有多個(gè)靜態(tài),看定義順序即可)
- 只要加載了類,靜態(tài)代碼塊就會(huì)被執(zhí)行
- 若沒有實(shí)例化對(duì)象只會(huì)執(zhí)行靜態(tài)的
- 若有多個(gè)實(shí)例,須看定義順序
- 如果沒有實(shí)例化對(duì)象,靜態(tài)代碼塊只會(huì)執(zhí)行一次
到此這篇關(guān)于Java淺析代碼塊與構(gòu)造塊及靜態(tài)塊三者之間的關(guān)系的文章就介紹到這了,更多相關(guān)Java 代碼塊 構(gòu)造塊 靜態(tài)塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解JAVA抓取網(wǎng)頁的圖片,JAVA利用正則表達(dá)式抓取網(wǎng)站圖片
這篇文章主要介紹了詳解JAVA抓取網(wǎng)頁的圖片,JAVA利用正則表達(dá)式抓取網(wǎng)站圖片,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12
詳解Springboot如何通過注解實(shí)現(xiàn)接口防刷
本文主要為大家介紹一種極簡潔、靈活通用接口防刷實(shí)現(xiàn)方式、通過在需要防刷的方法加上@Prevent?注解即可實(shí)現(xiàn)短信防刷,感興趣的可以了解一下2022-09-09
關(guān)于Java8中map()和flatMap()的一些事
這篇文章主要給大家介紹了關(guān)于Java8中map()和flatMap()的一些事,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Spring中@Async注解執(zhí)行異步任務(wù)的方法
在業(yè)務(wù)處理中,有些業(yè)務(wù)使用異步的方式更為合理,這篇文章主要介紹了Spring中@Async注解執(zhí)行異步任務(wù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
利用Redis實(shí)現(xiàn)延時(shí)處理的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于利用Redis實(shí)現(xiàn)延時(shí)處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Java之MultipartFile和File類型互轉(zhuǎn)方式
這篇文章主要介紹了Java之MultipartFile和File類型互轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
學(xué)Java做項(xiàng)目需要學(xué)習(xí)的一些技能
這篇文章主要介紹了學(xué)Java做項(xiàng)目需要學(xué)習(xí)的一些技能,例如JavaSE、Servlet、JSP等,總結(jié)了他們中需要學(xué)習(xí)的東西,都是一些經(jīng)驗(yàn)總結(jié),需要的朋友可以參考下2014-07-07

