Java基础7:关于Java类和包的那些事
更多內(nèi)容請關(guān)注微信公眾號【Java技術(shù)江湖】
這是一位阿里 Java 工程師的技術(shù)小站,作者黃小斜,專注 Java 相關(guān)技術(shù):SSM、SpringBoot、MySQL、分布式、中間件、集群、Linux、網(wǎng)絡(luò)、多線程,偶爾講點(diǎn)Docker、ELK,同時(shí)也分享技術(shù)干貨和學(xué)習(xí)經(jīng)驗(yàn),致力于Java全棧開發(fā)!(關(guān)注公眾號后回復(fù)”資料“即可領(lǐng)取 3T 免費(fèi)技術(shù)學(xué)習(xí)資源以及我我原創(chuàng)的程序員校招指南、Java學(xué)習(xí)指南等資源)
**
本文主要介紹了三種代碼塊的特性和使用方法。
具體代碼在我的GitHub中可以找到
https://github.com/h2pl/MyTech
文章首發(fā)于我的個(gè)人博客:
https://h2pl.github.io/2018/04/24/javase6
代碼塊:用{}包圍的代碼
java中的代碼塊按其位置劃分為四種:
局部代碼塊
位置:局部位置(方法內(nèi)部)
作用:限定變量的生命周期,盡早釋放,節(jié)約內(nèi)存
調(diào)用:調(diào)用其所在的方法時(shí)執(zhí)行
public class 局部代碼塊 { @Test public void test (){B b = new B();b.go(); } } class B {B(){}public void go() {//方法中的局部代碼塊,一般進(jìn)行一次性地調(diào)用,調(diào)用完立刻釋放空間,避免在接下來的調(diào)用過程中占用棧空間//因?yàn)闂?臻g內(nèi)存是有限的,方法調(diào)用可能會(huì)會(huì)生成很多局部變量導(dǎo)致棧內(nèi)存不足。//使用局部代碼塊可以避免這樣的情況發(fā)生。{int i = 1;ArrayList<Integer> list = new ArrayList<>();while (i < 1000) {list.add(i ++);}for (Integer j : list) {System.out.println(j);}System.out.println("gogogo");}System.out.println("hello");} }構(gòu)造代碼塊
位置:類成員的位置,就是類中方法之外的位置
作用:把多個(gè)構(gòu)造方法共同的部分提取出來,共用構(gòu)造代碼塊
調(diào)用:每次調(diào)用構(gòu)造方法時(shí),都會(huì)優(yōu)先于構(gòu)造方法執(zhí)行,也就是每次new一個(gè)對象時(shí)自動(dòng)調(diào)用,對 對象的初始化
class A{int i = 1;int initValue;//成員變量的初始化交給代碼塊來完成{//代碼塊的作用體現(xiàn)于此:在調(diào)用構(gòu)造方法之前,用某段代碼對成員變量進(jìn)行初始化。//而不是在構(gòu)造方法調(diào)用時(shí)再進(jìn)行。一般用于將構(gòu)造方法的相同部分提取出來。//for (int i = 0;i < 100;i ++) {initValue += i;}}{System.out.println(initValue);System.out.println(i);//此時(shí)會(huì)打印1int i = 2;//代碼塊里的變量和成員變量不沖突,但會(huì)優(yōu)先使用代碼塊的變量System.out.println(i);//此時(shí)打印2//System.out.println(j);//提示非法向后引用,因?yàn)榇藭r(shí)j的的初始化還沒開始。//}{System.out.println("代碼塊運(yùn)行");}int j = 2;{System.out.println(j);System.out.println(i);//代碼塊中的變量運(yùn)行后自動(dòng)釋放,不會(huì)影響代碼塊之外的代碼}A(){System.out.println("構(gòu)造方法運(yùn)行");} } public class 構(gòu)造代碼塊 {@Testpublic void test() {A a = new A();} }靜態(tài)代碼塊
位置:類成員位置,用static修飾的代碼塊作用:對類進(jìn)行一些初始化 只加載一次,當(dāng)new多個(gè)對象時(shí),只有第一次會(huì)調(diào)用靜態(tài)代碼塊,因?yàn)?#xff0c;靜態(tài)代碼塊 是屬于類的,所有對象共享一份調(diào)用: new 一個(gè)對象時(shí)自動(dòng)調(diào)用public class 靜態(tài)代碼塊 {@Test public void test() {C c1 = new C();C c2 = new C();//結(jié)果,靜態(tài)代碼塊只會(huì)調(diào)用一次,類的所有對象共享該代碼塊//一般用于類的全局信息初始化//靜態(tài)代碼塊調(diào)用//代碼塊調(diào)用//構(gòu)造方法調(diào)用//代碼塊調(diào)用//構(gòu)造方法調(diào)用 }} class C{C(){System.out.println("構(gòu)造方法調(diào)用");}{System.out.println("代碼塊調(diào)用");}static {System.out.println("靜態(tài)代碼塊調(diào)用");} }執(zhí)行順序 靜態(tài)代碼塊 -----> 構(gòu)造代碼塊 -------> 構(gòu)造方法
關(guān)于抽象類和接口的內(nèi)容可以在上一節(jié)查看:
https://blog.csdn.net/a724888/article/details/80061047
關(guān)于Java類和包的內(nèi)容可以在下一節(jié)查看:
https://blog.csdn.net/a724888/article/details/80069504
轉(zhuǎn)載于:https://www.cnblogs.com/xll1025/p/10662428.html
總結(jié)
以上是生活随笔為你收集整理的Java基础7:关于Java类和包的那些事的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019.04.06 电商04 模板嵌套
- 下一篇: 20190408 Java中的Doub