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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java面向对象(七)包、内部类、垃圾回收机制

發(fā)布時(shí)間:2024/4/30 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java面向对象(七)包、内部类、垃圾回收机制 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、包

package 包名; ?---- 聲明包 ? ?注意: 一個(gè)java文件中只能有一句package語句 , ?并且必須放在java文件首行 。?

import 包名; --- 導(dǎo)包

import ?java.util.*; ? ?*是一個(gè)通配符,會(huì)匹配當(dāng)前包下所有的類,但不會(huì)包括子包下的類

java.lang --- 核心類庫,一個(gè)java程序運(yùn)行之前會(huì)先自動(dòng)把這個(gè)包下所有的類加載到方法區(qū)。 不需要手動(dòng) 導(dǎo)入。 (同包類也 不需要手動(dòng)導(dǎo)入)

java.util --- 工具包

java.io --- 用于傳輸數(shù)據(jù)

java.nio --- 用于處理高并發(fā)

java.net ---- 用于網(wǎng)絡(luò)通信

javax ---- java 擴(kuò)展包

java.sql --- 數(shù)據(jù)庫交互

org.* ---- 由第三方廠商和一些開源社區(qū)提供的包 。

注意: 在自定義包名時(shí) , 不能以java 、 javax 、 org開頭 , 否則jvm會(huì)去java原生類中尋找你自定義的類 , 這樣是永遠(yuǎn)也找不到的 。?

二、內(nèi)部類

內(nèi)部類是封裝的第三種形式(1. 函數(shù)、2. 屬性的私有化)

1. 方法內(nèi)部類

定義在方法內(nèi)的類。

方法內(nèi)部類中不能定義靜態(tài) 變量和方法,但允許定義靜態(tài)常量。

方法內(nèi)部類不能使用方法的變量,但能使用方法的常量。

方法內(nèi)部類可以使用外部類的屬性和方法。

方法內(nèi)部類可以繼承其他類

方法內(nèi)部類調(diào)用外部類的方法 : Outer.this.m() ;

除了當(dāng)前方法外 , 其他地方都不能使用這個(gè)方法內(nèi)部類 。?

內(nèi)部類會(huì)比外部類先加載 。?

2. 成員內(nèi)部類

定義在類內(nèi)方法外

利用外部類對(duì)象創(chuàng)建內(nèi)部類對(duì)象

Outer.Inner ? in = new outer().new Inner();

不能定義靜態(tài)方法和變量。 但可以定義靜態(tài)常量 。 ?

可以是用外部類的方法和屬性

具有成員屬性的特性: 可以被權(quán)限修飾符修飾 。?

3.靜態(tài)內(nèi)部類

用static修飾的成員內(nèi)部類

Outer.Inner in = new Outer.Inner();

可以定義靜態(tài)屬性和方法。

和普通類 基本沒有差別

4. 匿名內(nèi)部類

匿名內(nèi)部類本質(zhì)上就是繼承了這個(gè)類/實(shí)現(xiàn)了這個(gè)接口

Class c/*匿名內(nèi)部類創(chuàng)建的對(duì)象*/ = new Class(){

code;//匿名內(nèi)部類的實(shí)體 。

};

有構(gòu)造函數(shù),單數(shù)不能手動(dòng)定義。

定義在方法內(nèi)時(shí)需要注意的與方法內(nèi)部類一樣

定義在方法外時(shí),需要注意的與成員內(nèi)部類一樣。

匿名內(nèi)類中 必須要重寫 接口\類中的抽象方法 。?

只要一個(gè)類可以被繼承 , 就可以出現(xiàn)匿名內(nèi)部類的形式。?

構(gòu)造函數(shù)可以私有化 。 ?只是在類外不能被繼承 , 在類內(nèi)可以被內(nèi)部類繼承 。?

5. 內(nèi)部接口

定義在類中或接口中的接口默認(rèn)是靜態(tài)的。 理解: 在類定義時(shí)不能創(chuàng)建對(duì)象 ,要求內(nèi)部接口要能被直接訪問 , 所以要求內(nèi)部接口是靜態(tài)的 。

接口中可以定義 類,并且默認(rèn)是靜態(tài),因?yàn)榻涌诓荒軇?chuàng)建對(duì)象。 理解: 接口不能創(chuàng)建對(duì)象, ?所以要求內(nèi)部類能直接被訪問 。?

三、垃圾回收機(jī)制

1. 對(duì)象存儲(chǔ)在堆內(nèi)存中 , 垃圾回收針對(duì)堆內(nèi)存而言。

當(dāng)調(diào)用構(gòu)造方法的時(shí)候,創(chuàng)建對(duì)象,存在堆內(nèi)存中,因?yàn)?/span>java中對(duì)每種數(shù)據(jù)類型都明確的給定了大小,所以在創(chuàng)建對(duì)象的時(shí)候會(huì)自動(dòng)計(jì)算大小分配內(nèi)存(具體的數(shù)據(jù)都是由基本數(shù)據(jù)類型組成的)。所以在內(nèi)存的回收和釋放的時(shí)候也是由java自己管理。

對(duì)象在堆內(nèi)存中存儲(chǔ) , 在使用完成后不會(huì)被立即回收 ,而是在 不定時(shí)的某個(gè)時(shí)刻被垃圾回收機(jī)制(Grabage collector ---gc)回收 ? , 回收過程程序員不能手動(dòng)控制。?

2. 一個(gè)對(duì)象剛創(chuàng)建時(shí)是放在新生代的伊甸園區(qū),如果這個(gè)對(duì)象在棧內(nèi)存中沒有引用,那么會(huì)在掃描的時(shí)候被解析,釋放內(nèi)存;如果經(jīng)過一次掃描依然沒有釋放內(nèi)存,會(huì)將移入新生代的幸存區(qū),幸存區(qū)的掃描平率略低于伊甸園區(qū);如果幸存區(qū)經(jīng)過多次掃描依然沒有被釋放,會(huì)被放入老生代,老生代的掃描的頻率遠(yuǎn)低于新生代。老生代的對(duì)象一旦被回收,可能導(dǎo)致程序的卡頓或崩潰。

3. 在原生的java中新生代要大于老生代 ?, 但是在實(shí)際開發(fā)中為了提高效率 , ?往往會(huì)增大老生代 , 達(dá)到降低掃描頻率的目的 。?

4. 垃圾回收的線程優(yōu)先級(jí)是相當(dāng)相當(dāng)?shù)偷?。?

minor GC(Garbage Collage) 發(fā)生在新生代的回收 ---初代回收 ?

full GC 發(fā)生在老生帶的回收 ---完全回收

5. 在JDK1.6及以前 , ?java只把內(nèi)存分為四塊 : 棧 、 堆 、 本地方法棧 、 寄存器 。 而堆中又可以分為:新生代 、 老生代 、 永久帶 ?,JDK1.6之后 把堆中的永久帶獨(dú)立出來 形成方法區(qū)。 ?現(xiàn)在的內(nèi)存分塊: 棧 、 堆 、 方法區(qū) 、 本地方法棧 、 寄存器 ?。

總結(jié)

以上是生活随笔為你收集整理的Java面向对象(七)包、内部类、垃圾回收机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。