一肠骆,面向?qū)ο笕筇卣?/p>
1算途,封裝 屬性私有化,同時給該屬性提供共有的get(獲仁赐取)和set(設(shè)置)方法
2嘴瓤,多態(tài) 一個對象可以有多個形態(tài)。父類的引用指向子類對象莉钙。(繼承普通類抽象類實現(xiàn)接口)
實現(xiàn)多態(tài):1廓脆,使用父類作為方法形參時 2,使用父類作為方法返回值
3磁玉,繼承 繼承子類是對父類的 重用 拓展 修改
4停忿,抽象 抽象是將一類對象的共同特征總結(jié)出來構(gòu)造類的過程,包括數(shù)據(jù)抽象和行為抽象兩方面蜀涨。(另一種說法四大特征就加上)
二瞎嬉,常用JAVA內(nèi)存分配
堆(存對象) 不存基本數(shù)據(jù)類型和對象引用? 被所有線程共享
常量池(存基本類型常量和字符串常量)
方法區(qū)(方法)又叫做靜態(tài)區(qū) 被所有線程共享 包含的都是程序中永遠(yuǎn)唯一的元素
方法棧(每個方法都有自己的棧,各個棧之間沒有關(guān)系 可存放基本數(shù)據(jù)類型的數(shù)據(jù))先進(jìn)先出方式
SVN服務(wù)器(軟件)所有成員的代碼上傳到一個SVN服務(wù)器上 是團(tuán)隊開法必須用的
三厚柳,GC垃圾回收機(jī)制
java提供了單獨(dú)的守護(hù)進(jìn)程,進(jìn)行自動回收垃圾 防止堆內(nèi)存存儲對象過多發(fā)生內(nèi)存溢出
垃圾:不存活的對象 判斷對象存活有兩種方式
? ? ? ? 1)引用計數(shù)法:給對象添加一個引用計數(shù)器沐兵,每當(dāng)被引用時 計數(shù)器+1别垮,引用失效時-1。當(dāng)記數(shù)為0時 該對象就是垃圾
? ? ? ? 2)可達(dá)性分析:重肯定能訪問的對象(GC Root)開始扎谎,向下遍歷能遍歷到的對象為可達(dá)對象碳想,不可達(dá)對象為垃圾
? ? ? ? ? ? ? 常用的GC Root:棧應(yīng)用的對象 方法區(qū)中的靜態(tài)屬性和常量
1常見的清理方法
? ? ? ? 1)標(biāo)記-清理
? ? ? ? ? ? 通過可達(dá)性分析將垃圾和存貨的對象,進(jìn)行標(biāo)記毁靶,然后清理垃圾
? ? ? ? ? ? 優(yōu)缺點(diǎn):方便簡潔? 但容易產(chǎn)生內(nèi)存碎片
? ? ? ? 2)標(biāo)記-整理
? ? ? ? ? ? 把存活對象通過挪動位置胧奔,讓其扎堆存放
? ? ? ? ? ? 優(yōu)缺點(diǎn):防止產(chǎn)生大量碎片 適合垃圾對象少的情況
? ? ? ? 3)復(fù)制
? ? ? ? ? ? 把內(nèi)存分為兩部分 程序只在一部分執(zhí)行 當(dāng)使用的那部分內(nèi)存滿時 將存活的對象復(fù)制到另一部分內(nèi)存 垃圾直接清除
? ? ? ? ? ? 優(yōu)缺點(diǎn):適合垃圾多 存活對象少的時候 但容易造成頻繁的復(fù)制
? 2堆分類:新生代(活對象少垃圾多) 老年代(垃圾少活對象多) 永久代
? ? ? ? ? ? 新生代:存儲程序運(yùn)行時產(chǎn)生的大量對象(大部分為不可對象 被視為垃圾)
? ? ? ? ? ? 老年代:存儲新生代中少量長時間存貨的對象
? ? ? ? ? ? 永久代:存儲靜態(tài)文件,永久有效的文件(java8以經(jīng)摒棄预吆,被放在元空間 )
3新生代使用復(fù)制進(jìn)行垃圾回收(包含三個區(qū):伊甸區(qū)(Eden)存活A(yù)區(qū) 存活B區(qū))8:1:1
4老年代使用標(biāo)記整理進(jìn)行垃圾回收
四龙填,8種基本數(shù)據(jù)類型:byte short int long float double char boolean? String不是基本數(shù)據(jù)類型 它是java提供的一個類
五,java關(guān)鍵字
? ? ? ? abstract const false long short
? ? ? ? boolean default float native static
? ? ? ? break else while new super
? ? ? ? byte extends void null switch
? ? ? ? case final if transient synchronized
? ? ? ? cast finally implements package this
? ? ? ? catch for import private throw
? ? ? ? char goto instanceof protected throws
? ? ? ? class do interface public strictfp
? ? ? ? continue double true return
六拐叉,java 常用包
? ? ? ? java.lang.*,
? ? ? ? java.util.*,
? ? ? ? java.net.* ,
? ? ? ? java.io.*,
? ? ? ? java.text.*,
? ? ? ? java.sql.*,
? ? ? ? java.awt.*,
? ? ? ? java.swing.*.
七岩遗,數(shù)組三種定義方式:
? ? ? ? int[] s={1,2,3,4};
? ? ? ? int[] s=new int[]{1,2,3,4,5,6};
? ? ? ? 動態(tài)定義數(shù)組:
? ? ? ? int[] s=new int[8];
八,遍歷數(shù)組:
? ? ? ? 數(shù)組長度:length
? ? ? ? for(int i=0;i<scores.length;i++){...}
九凤瘦,類 對象 數(shù)組的基本概念
類:是對某一個類事物的特征抽取宿礁,可以理解為該類事物的模板或藍(lán)圖。
對象:是某類的一個具體實例蔬芥,它具有該類中定義的所有屬性以及方法
數(shù)組:具有相同數(shù)據(jù)類型的一組數(shù)
十梆靖,類 抽象類 接口定義內(nèi)容的區(qū)別
類中可定義:屬性 方法 代碼塊 靜態(tài)代碼塊 構(gòu)造方法
抽象類可定義:屬性 方法 代碼塊 靜態(tài)代碼塊 構(gòu)造方法 抽象方法(只能繼承一個類)
接口可定義:抽象方法 常量值(可以實現(xiàn)多個接口)
十一控汉,對象和基本數(shù)據(jù)內(nèi)心基本值
屬性可以直接賦值,如果沒有賦值返吻,屬性有默認(rèn)值姑子,引用類型的默認(rèn)值是null
基本數(shù)據(jù)類型:整數(shù)是0,浮點(diǎn)數(shù)是0.0思喊,char是空格壁酬,boolean是false
十二,訪問權(quán)限修飾符
? ? public 共有的
? ? ? ? 在任何地方都能訪問的:本類中恨课、本包其他位置舆乔、子類,其他包中
? ? protected 受保護(hù)的
? ? ? ? 本類中剂公,本包其他位置希俩,子類
? ? 默認(rèn)(包級別)
? ? ? ? 本類中,本包其他位置
? ? private 私有的
? ? ? ? 本類中
十三纲辽,String Stringbuffer StringBuilder區(qū)別颜武;
? ? ? ? String字符串是定長的 沒做一次字符拼接其實是產(chǎn)生一個新字符串,消耗時間長 當(dāng)拼接次數(shù)過多時 會造成內(nèi)存資源浪費(fèi)(線程不安全)
? ? ? ? StringBuilder 每次拼接字符都是同一個對象 消耗時間最短(線程不安全)
? ? ? ? Stringbuffer? 每次拼接字符都是用一個對象 支持同步鎖所以消耗時間比StringBuilder多一些(線程安全)
十四拖吼,vector ArraysList linkedList區(qū)別
? ? ? ? 1鳞上,vector 線程同步 Arrayslist和linkedlist線程不同步
? ? ? ? 2,vector和Arrayslist屬于數(shù)組形式存儲 linkedlist屬于鏈表形式存儲
? ? ? ? 3吊档,vector和Arrayslist適合查找 不適合操作 linkedlist適合操作不適合查找
? ? ? ? 3篙议,vector當(dāng)數(shù)據(jù)滿時自動擴(kuò)大容器為%100 Arrarslist擴(kuò)大%50 所以Arr...更節(jié)約空間
十五,hashMap hashtable區(qū)別
? ? ? ? 1怠硼,Hashtable 是 JDK 1 遺留下來的類鬼贱,而 HashMap 是后來增加的。
? ? ? ? 2香璃,Hashtable 是同步的这难,比較慢,但 HashMap 沒有同步策略葡秒,所以會更快姻乓。
? ? ? ? 3,Hashtable 不允許有個空的 key同云,但是 HashMap 允許出現(xiàn)一個 null key
? ? ? 4糖权,Hashtable 是線程安全的 HashMap線程不安全
? ? ? ? 5,hashTable 每次擴(kuò)容2n+1 hashmap每次擴(kuò)容2倍
? ? ? ? 6炸站,HashTable做元素運(yùn)算需要進(jìn)行一次除法運(yùn)算 效率低 HashMap使用的位運(yùn)算
十六星澳,集合框架繼承關(guān)系圖:
? ? Collection
? ? ? ? List 有索引下標(biāo),元素可重復(fù)
? ? ? ? ? ? ? ? -Vector
? ? ? ? ? ? ? ? -ArrayList
? ? ? ? ? ? ? ? -LinkedList
? ? ? ? Set 沒索引下標(biāo),不可重復(fù)旱易,元素存儲是排好序的
? ? ? ? ? ? ? ? -HashSet
? ? ? ? ? ? ? ? -TreeSet
Map <key,value>
? ? ? ? -HashMap
? ? ? ? -HashTable
? ? ? ? -WeakHashMap
十七禁偎,常見的異常
? ? ? ? 異常:分為編譯時異常? 和? 運(yùn)行時異常 和程序無法恢復(fù)的異常(內(nèi)存崩潰)
? ? ? ? 空指針異常:
? ? ? ? ? ? ? ? NullPointerException
? ? ? ? 數(shù)字格式轉(zhuǎn)換異常:
? ? ? ? ? ? ? ? NumberFormatException
? ? ? ? 數(shù)組越界異常:
? ? ? ? ? ? ? ? ArrayIndexOutOfBoundsException 數(shù)組下標(biāo)越界
? ? ? ? 除0會報異常:
? ? ? ? ? ? ? ? ArithmeticException: / by zero
? ? ? ? 類轉(zhuǎn)換異常:
? ? ? ? ? ? ? ? ClassCastException
? ? ? ? 并發(fā)修改異常腿堤;
? ? ? ? ? ? ? ? ConcurrentModificationException 如果某個集合對象創(chuàng)建了Iterator或者ListIterator,然后其它的線程試圖“結(jié)構(gòu)上”更改集合對象如暖,就會拋出并發(fā)修改異常
? ? ? ? 非法數(shù)據(jù)異常
? ? ? ? ? ? ? ? Illegal Argument Exception 如果某個集合對象創(chuàng)建了迭代器或者列表迭代器笆檀,而其他線程已經(jīng)從結(jié)構(gòu)上更改了集合對象,在調(diào)用Set()方法就會拋出非法數(shù)據(jù)異常