Java基礎(chǔ)知識點

一些基本概念

  1. 內(nèi)存溢出 out of memory,是指程序在申請內(nèi)存時攒暇,沒有足夠的內(nèi)存空間供其使用剩瓶,出現(xiàn)out of memory菊匿;比如申請了一個integer,但給它存了long才能存下的數(shù),那就是內(nèi)存溢出宛篇。
    內(nèi)存泄露 memory leak悲柱,是指程序在申請內(nèi)存后,無法釋放已申請的內(nèi)存空間些己,一次內(nèi)存泄露危害可以忽略豌鸡,但內(nèi)存泄露堆積后果很嚴重,無論多少內(nèi)存,遲早會被占光段标。
    memory leak會最終會導(dǎo)致out of memory涯冠!
    棧滿時再做進棧必定產(chǎn)生空間溢出,叫上溢逼庞,椛吒空時再做退棧也產(chǎn)生空間溢出,稱為下溢赛糟。就是分配的內(nèi)存不足以放下數(shù)據(jù)項序列,稱為內(nèi)存溢出.
  2. ServerSocket(int port) 是服務(wù)端綁定port端口派任,調(diào)accept()監(jiān)聽等待客戶端連接,它返回一個連接隊列中的一個socket璧南。
    Socket(InetAddress address , int port)是創(chuàng)建客戶端連接主機的socket流掌逛,其中InetAddress是用來記錄主機的類,port指定端口司倚。
    socket和servletSocket的交互如下圖所示
    Paste_Image.png
  3. A: 垃圾回收在jvm中優(yōu)先級相當相當?shù)汀?br> B:垃圾收集器(GC)程序開發(fā)者只能推薦JVM進行回收豆混,但何時回收,回收哪些动知,程序員不能控制皿伺。
    C:垃圾回收機制只是回收不再使用的JVM內(nèi)存,如果程序有嚴重BUG盒粮,照樣內(nèi)存溢出鸵鸥。
    D:進入DEAD的線程,它還可以恢復(fù)丹皱,GC不會回收
  4. Java把內(nèi)存分成兩種妒穴,一種叫做棧內(nèi)存,一種叫做堆內(nèi)存种呐。
    在函數(shù)中定義的一些基本類型的變量和對象的引用變量都是在函數(shù)的棧內(nèi)存中分配宰翅。當在一段代碼塊中定義一個變量時,java就在棧中為這個變量分配內(nèi)存空間爽室,當超過變量的作用域后汁讼,java會自動釋放掉為該變量分配的內(nèi)存空間淆攻,該內(nèi)存空間可以立刻被另作他用。
    堆內(nèi)存用于存放由new創(chuàng)建的對象和數(shù)組嘿架。在堆中分配的內(nèi)存瓶珊,由java虛擬機自動垃圾回收器來管理。在堆中產(chǎn)生了一個數(shù)組或者對象后耸彪,還可以在棧中定義一個特殊的變量伞芹,這個變量的取值等于數(shù)組或者對象在堆內(nèi)存中的首地址,在棧中的這個特殊的變量就變成了數(shù)組或者對象的引用變量蝉娜,以后就可以在程序中使用棧內(nèi)存中的引用變量來訪問堆中的數(shù)組或者對象唱较,引用變量相當于為數(shù)組或者對象起的一個別名,或者代號召川。
    引用變量是普通變量南缓,定義時在棧中分配內(nèi)存,引用變量在程序運行到作用域外釋放荧呐。而數(shù)組&對象本身在堆中分配汉形,即使程序運行到使用new產(chǎn)生數(shù)組和對象的語句所在地代碼塊之外,數(shù)組和對象本身占用的堆內(nèi)存也不會被釋放倍阐,數(shù)組和對象在沒有引用變量指向它的時候(比如先前的引用變量x=null時)概疆,才變成垃圾,不能再被使用峰搪,但是仍然占著內(nèi)存岔冀,在隨后的一個不確定的時間被垃圾回收器釋放掉。這個也是java比較占內(nèi)存的主要原因罢艾。
    以上段落來自于某一本Java程序設(shè)計的書中楣颠,實際上,棧中的變量指向堆內(nèi)存中的變量咐蚯,這就是Java中的指針。
    總結(jié)起來就是對象存儲在堆內(nèi)存弄贿,引用變量存儲在棧內(nèi)存春锋。棧內(nèi)存指向堆內(nèi)存。
  5. 數(shù)據(jù)類型的轉(zhuǎn)換差凹,分為自動轉(zhuǎn)換和強制轉(zhuǎn)換期奔。自動轉(zhuǎn)換是程序在執(zhí)行過程中 “ 悄然 ” 進行的轉(zhuǎn)換,不需要用戶提前聲明危尿,一般是從位數(shù)低的類型向位數(shù)高的類型轉(zhuǎn)換呐萌;強制類型轉(zhuǎn)換則必須在代碼中聲明,轉(zhuǎn)換順序不受限制谊娇。
    自動數(shù)據(jù)類型轉(zhuǎn)換
    自動轉(zhuǎn)換按從低到高的順序轉(zhuǎn)換肺孤。不同類型數(shù)據(jù)間的優(yōu)先關(guān)系如下:
    低 ---------------------------------------------> 高
    byte,short,char-> int -> long -> float -> double

運算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進行運算赠堵,轉(zhuǎn)換規(guī)則如下:

操作數(shù) 1 類型 操作數(shù) 2 類型 轉(zhuǎn)換后的類型
byte 小渊、 short 、 char int int
byte 茫叭、 short 酬屉、 char 、 int long long
byte 揍愁、 short 呐萨、 char 、 int 莽囤、 long float float
byte 垛吗、 short 、 char 烁登、 int 怯屉、 long 、 float double double

強制數(shù)據(jù)類型轉(zhuǎn)換
強制轉(zhuǎn)換的格式是在需要轉(zhuǎn)型的數(shù)據(jù)前加上 “( )” 饵沧,然后在括號內(nèi)加入需要轉(zhuǎn)化的數(shù)據(jù)類型锨络。有的數(shù)據(jù)經(jīng)過轉(zhuǎn)型運算后,精度會丟失狼牺,而有的會更加精確

面向?qū)ο笳Z法特點

  1. 方法的重寫(override)兩同兩小一大原則:
    方法名相同羡儿,參數(shù)類型相同(參數(shù)順序也相同,總之參數(shù)相同是钥,返回值類型可以不同)
    子類返回類型小于等于父類方法返回類型掠归,
    子類拋出異常小于等于父類方法拋出異常,
    子類訪問權(quán)限大于等于父類方法訪問權(quán)限悄泥。
  2. throws用于在方法上聲明該方法不需要處理的異常類型,用在方法上后面跟異常類名 可以是多個異常類
    throw用于拋出具體異常類的對象,用在方法內(nèi) 后面跟異常對象只能是一個異常類型實體.
    try塊必須和catch塊或和finally同在,不能單獨存在,二者必須出現(xiàn)一個.
    finally塊總會執(zhí)行,不論是否有錯誤出現(xiàn).但是若try語句塊或會執(zhí)行的catch語句塊使用了JVM系統(tǒng)退出語句,finally塊就不會被執(zhí)行了. 一般我們把關(guān)閉資源的代碼放在finally里面 保證資源總是能關(guān)閉虏冻。finally在throw和return之前執(zhí)行
  3. 鏈接:https://www.nowcoder.com/questionTerminal/27a89bce14c242d1a4161fbeca2b6b7e來源:牛客網(wǎng)
    1.父類靜態(tài)代碼塊 ( java虛擬機加載類時弹囚,就會執(zhí)行該塊代碼厨相,故只執(zhí)行一次)
    2 .子類靜態(tài)代碼塊 ( java虛擬機加載類時,就會執(zhí)行該塊代碼鸥鹉,故只執(zhí)行一次)
    3. 父類屬性對象初始化
    4.父類普通代碼塊(每次new,每次執(zhí)行
    5. 父類構(gòu)造函數(shù)(每次new,每次執(zhí)行)
    6.子 屬性對象初始化
    7.子類普通代碼塊(每次new,每次執(zhí)行
    8.子 類構(gòu)造函數(shù)(每次new,每次執(zhí)行)
  4. Java 提供的事件處理模型是一種人機交互模型蛮穿。它有三個基本要素:
  1. 事件源(Event Source):即事件發(fā)生的場所,就是指各個組件毁渗,如按鈕等践磅,點擊按鈕其實就是組件上發(fā)生的一個事件;
  2. 事件(Event):事件封裝了組件上發(fā)生的事情灸异,比如按鈕單擊府适、按鈕松開等等羔飞;
  3. 事件監(jiān)聽器(Event Listener):負責監(jiān)聽事件源上發(fā)生的特定類型的事件,當事件到來時還必須負責處理相應(yīng)的事件细溅;

Java自帶API解讀

  1. String褥傍、StringBuilder、StringBuffer的區(qū)別:
    String是不可變對象喇聊,不適合用來做大量修改自身操作的地方恍风,因為每次修改都是新建一個String,會造成對內(nèi)存的浪費誓篱。StringBuilder是非線程同步的朋贬,StringBuffer是線程同步的。單線程情況下推薦使用StringBuilder窜骄,因為不用考慮同步锦募,速度自然要快一些。
  2. 單線程和多線程容器有(左邊是非線程同步的邻遏,右邊是線程同步的):
  • HashMap和HashTable
  • StringBuilder和StringBuffer
  • ArrayList和Vector
  1. HashMap和HashTable的區(qū)別:
  • HashMap是非synchronized糠亩,而Hashtable是synchronized,這意味著Hashtable是線程安全的准验,多個線程可以共享一個Hashtable赎线;而如果沒有正確的同步的話,多個線程是不能共享HashMap的糊饱。Java 5提供了ConcurrentHashMap垂寥,它是HashTable的替代,比HashTable的擴展性更好另锋。
  • HashMap可以使用null做key或者value滞项,HashTable則不行。

sychronized意味著在一次僅有一個線程能夠更改Hashtable夭坪。就是說任何線程要更新Hashtable時要首先獲得同步鎖文判,其它線程要等到同步鎖被釋放之后才能再次獲得同步鎖更新Hashtable。

我們能否讓HashMap同步台舱?
HashMap可以通過下面的語句進行同步:
Map m = Collections.synchronizeMap(hashMap);

Java多線程

  1. join()的作用是:“等待該線程終止”律杠,這里需要理解的就是該線程是指的主線程等待子線程的終止。也就是在子線程調(diào)用了join()方法后面的代碼竞惋,只有等到子線程結(jié)束了才能執(zhí)行。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末灰嫉,一起剝皮案震驚了整個濱河市拆宛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌讼撒,老刑警劉巖浑厚,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件股耽,死亡現(xiàn)場離奇詭異,居然都是意外死亡钳幅,警方通過查閱死者的電腦和手機物蝙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敢艰,“玉大人诬乞,你說我怎么就攤上這事∧频迹” “怎么了震嫉?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵柜思,是天一觀的道長粟耻。 經(jīng)常有香客問我剪廉,道長塌计,這世上最難降的妖魔是什么赞厕? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任拐迁,我火速辦了婚禮胸私,結(jié)果婚禮上挫掏,老公的妹妹穿的比我還像新娘措伐。我一直安慰自己特纤,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布废士。 她就那樣靜靜地躺著叫潦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪官硝。 梳的紋絲不亂的頭發(fā)上矗蕊,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音氢架,去河邊找鬼傻咖。 笑死,一個胖子當著我的面吹牛岖研,可吹牛的內(nèi)容都是我干的卿操。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼孙援,長吁一口氣:“原來是場噩夢啊……” “哼害淤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拓售,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤窥摄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后础淤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崭放,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡哨苛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了币砂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片建峭。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖决摧,靈堂內(nèi)的尸體忽然破棺而出亿蒸,到底是詐尸還是另有隱情,我是刑警寧澤蜜徽,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布祝懂,位于F島的核電站,受9級特大地震影響拘鞋,放射性物質(zhì)發(fā)生泄漏砚蓬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一盆色、第九天 我趴在偏房一處隱蔽的房頂上張望灰蛙。 院中可真熱鬧,春花似錦隔躲、人聲如沸摩梧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仅父。三九已至,卻和暖如春浑吟,著一層夾襖步出監(jiān)牢的瞬間笙纤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工组力, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留省容,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓燎字,卻偏偏與公主長得像腥椒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子候衍,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Java8張圖 11笼蛛、字符串不變性 12、equals()方法蛉鹿、hashCode()方法的區(qū)別 13伐弹、...
    Miley_MOJIE閱讀 3,707評論 0 11
  • 1 一個Java源程序是由若干個類組成。 2 class 是Java的關(guān)鍵字榨为,用來定義類惨好。 3 Java應(yīng)用程序中...
    少帥yangjie閱讀 2,393評論 1 8
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司随闺,掛了不少日川,但最終還是拿到小米、百度矩乐、阿里龄句、京東、新浪散罕、CVTE分歇、樂視家的研發(fā)崗...
    時芥藍閱讀 42,253評論 11 349
  • Java基本語法: __1、標識符 Java出現(xiàn)的名稱 如源文件名 類名 變量名 方法名 __ 命名規(guī)范(見名知意...
    八怪不姓丑閱讀 1,834評論 8 35
  • 寢室里最近要貼壁紙欧漱,制作照片墻职抡。 師范的生活總是很奇怪,明明大家都只是個半大的孩子误甚,卻要在上高中課程的同時體驗所謂...
    夙惟閱讀 285評論 0 0