日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础7:关于Java类和包的那些事

發布時間:2024/1/17 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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类和包的那些事的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。