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