codeblock創建java_【Java基礎】----static關鍵字、代碼塊、Main方法、匿名對象詳解...

本文详细介绍了Java中的`static`关键字,包括静态成员变量和静态方法的特性,如通过类名直接调用,以及它们与实例变量的区别。同时,讨论了代码块的类型,如静态代码块、构造代码块和局部代码块的执行时机。文章还提到了`main`方法作为程序入口的重要性,以及匿名对象的概念和用途。
摘要由CSDN通过智能技术生成

1.static關鍵字

static簡介

static是靜態的意思,是一個修飾符,能夠用於成員變量和成員屬性。

特點

能夠通過類名直接進行調用,被static修飾的成員屬性變成了類屬性,被static修飾的成員方法變成了類方法, 類屬性 和 類方法能夠不用創建對象直接被調用

//普通類

public class Persion {

//static修飾后成為類屬性

public static String str="hello,sttaic";

//static修飾后成為類方法

public static void sleep(){

System.out.println("好吧!,我睡了");

}

}

//Main主線程

public static void main(String[] args) {

//能夠不用創建對象直接調用

//類名.成員變量

String aa=Persion.str;

//類名.成員方法

Persion.sleep();

}

靜態屬性被該類的說有對象所共享

靜態變量(類變量)和非靜態變量(實例變量)的區別

a.內存中的位置

類變量隨着類的加載而存在於方法區中

實例變量隨着對象的創建而存在於堆內存中

b.生命周期

靜態變量的生命周期最長,隨着類的加載而加載,隨着類的消失而消失;實例變量的生命周期隨着對象的創建而產生,消失而消失,靜態屬性要早於對象而存在。

c.所屬關系不同

類變量所屬於整個類,被類的所有對象所共有。

實例變量是對象的特有數據,僅僅屬於某個對象。

優缺點

優點: 對於對象的共享數據提供單獨的存儲空間,節省了控件,沒必要所有對象都存儲一份。

缺點: 生命周期過於長,訪問有一定的局限性,(靜態方法只能訪問靜態屬性)

2.代碼塊

說明

代碼塊就是被{ }包裹的部分,Java中的代碼塊分為:

普通代碼塊,又稱為局部代碼塊,存在於方法體中

構造代碼塊,又稱為初始化代碼塊,在使用new關鍵字創建對象時執行,且先於構造方法執行

靜態代碼塊,被static直接修飾的代碼塊,在類被加載時就執行,只執行一次

public class CodeBlock {

//1.靜態代碼塊 類加載的時候進行執行

static{

System.out.println("這是靜態代碼塊");

}

//2.構造代碼塊 創建對象的時候執行

{

System.out.println("這是構造代碼塊(初始化代碼塊)");

}

public CodeBlock(){

System.out.println("這是構造方法");

}

public void hello(){

//局部代碼塊 當方法被調用的時候開始執行

{

int i=100;

System.out.println("這是普通代碼塊(局部代碼塊)");

}

int i=1;

}

//主函數

public static void main(String[] args) {

//1.在創建對象前 靜態代碼塊首先執行

//2.在創建對象時 構造代碼塊開始執行

//3.在創建對象時 構造代方法開始執行(構造代碼塊先於構造方法執行)

CodeBlock cb1=new CodeBlock();

//4.方法被調用時 普通代碼塊執行

cb1.hello();

System.out.println("-------割-------");

//靜態代碼塊只在加載類的時候調用且只調用一次

CodeBlock cb2=new CodeBlock();

cb2.hello();

}

}

當執行CodeBlock p = new CodeBlock(); 時,內存變化情況

1,將Person.class文件加載進內存

2,在方法區為靜態屬性分配內存並進行默認初始化

3,執行靜態代碼塊,靜態方法進方法區

4,p是對象(變量),那么在棧內存中開辟一個變量空間p

5,在堆內存中給對象分配空間,並分配內存地址值

6,普通方法進方法區

7,非靜態屬性進堆內存,並進行默認初始化

8,調用構造代碼塊(初始化代碼塊)

9,調用對應的構造方法進行對象初始化,對象初始化完畢

10,將對象內存地址賦值給p變量,讓p變量指向該對象

3.Main方法

main方法是一個特殊的方法,作為程序執行的入口可以被JVM識別。

main方法是靜態的,所以可以被JVM直接調用,非常方便。

main不是Java關鍵字,但用來被JVM識別為程序執行的入口。

4.匿名對象

沒有名字的對象

CodeBlock p=new CodeBlock(); p只是一個對象的名字(引用), newCodeBlock()才是創建出來的對象

new Person().eat();

缺點:同一個對象只能調用一次方法

作用:傳參

a.自定義的類型也可以作為參數的類型去使用

b.形參的類型是Person,那么實參的類型也必須是Person

c.實參在傳參時可以匿名

d.實參這個對象傳到方法中后,可以在方法里調用它的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值