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

歡迎訪問 生活随笔!

生活随笔

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

java

疯狂Java讲义笔记汇总

發(fā)布時(shí)間:2023/12/10 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 疯狂Java讲义笔记汇总 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 一、基礎(chǔ)類型
  • 二、流程控制與數(shù)組
  • 三、面向?qū)ο?/li>
  • 四、基礎(chǔ)類庫
  • 五、集合
  • 六、泛型
  • 七、異常
  • 八、數(shù)據(jù)庫
  • 九、注釋
  • 十、輸入輸出
  • 十一、網(wǎng)絡(luò)
  • 十二、類加載機(jī)制
  • 十三、多線程


面向?qū)ο笕筇匦?#xff1a;封裝、繼承、多態(tài)

一、基礎(chǔ)類型

  • char, int, short, long, byte, float, double, boolean
  • 基本類型的類型轉(zhuǎn)換(自動(dòng)與強(qiáng)制、補(bǔ)碼,反碼與原碼)
  • 邏輯運(yùn)算符(不短路與&,和&&; | 和|| 兩個(gè)的只執(zhí)行最少比較,單個(gè)的都比較)
  • 運(yùn)算符的優(yōu)先級

二、流程控制與數(shù)組

  • if, while, for
  • break, continue, return
  • 數(shù)組在內(nèi)存中,初始化
  • java8增強(qiáng)工具類:Arrays

三、面向?qū)ο?/h1>
  • 類和對象;方法(值傳遞,基礎(chǔ)·類型傳遞值到不同方法棧區(qū),對象類型傳遞引用值,引用自內(nèi)存堆的對象)
  • 成員變量、局部變量的初始化和內(nèi)存中的運(yùn)行機(jī)制;
  • 隱藏與封裝:private、default、protected、public
  • 構(gòu)造器
  • 繼承:單繼承
  • 多態(tài):編譯時(shí)類型、運(yùn)行時(shí)類型
  • instanceof前一個(gè)需要和后一個(gè)類有關(guān)系,否則編譯錯(cuò)誤。比如String instanceof Math,無法通過編譯;
  • 繼承與組合:開銷無差別,繼承is-a;組合has-a
  • final、abstract、接口與抽象類
  • 內(nèi)部類(非靜態(tài)內(nèi)部類、靜態(tài)內(nèi)部類)
  • Lambda表達(dá)式
  • 枚舉類
  • 對象與垃圾回收可達(dá)、可恢復(fù)、不可達(dá)System.gc(); Runtime.getRuntime().gc();finalize方法軟、弱、虛引用

四、基礎(chǔ)類庫

  • Object,Java8增強(qiáng)Objects(大多是空指針安全的)
  • String、StringBuffer(線程安全,每個(gè)方法加了synchronized 關(guān)鍵字,和StringBuidler同繼承自AbstractStringBuilder方法)、StringBuilder
  • Math庫
  • Random、ThreadLocalRandom(Java7新增用于并發(fā)線程安全)
  • BigDecimal(double類型容易發(fā)生精度丟失:4.015*100=401.499999999994)
  • Date(不推薦)、Canlendar、Java8新增java.time包
  • 正則表達(dá)式:\d \D \s \S \w \W;[]枚舉 -范圍 ^否 &&與 ;^開頭 $結(jié)尾 \b邊界 \B \A輸入的開頭 \G前一個(gè)匹配的結(jié)構(gòu) \Z輸入的結(jié)尾,僅用于最后的結(jié)束符 \z輸入的結(jié)尾;貪婪模式(匹配最多,默認(rèn))、勉強(qiáng)模式(匹配最少,?)、占有模式Pattern p = Pattern.compile("a*b");Mathcer m = p.matcher("aaaaab");boolean b = m.matches(); //返回true
  • SimpleDateFormat、Java8新增DateTimeFormatter

五、集合

Set:無序,下面實(shí)現(xiàn)類都是非線程安全的

  • HashSet:非同步、元素可以是null
  • LinkedHashSet:以插入順序保存,遍歷效率高
  • TreeSet:排序,紅黑樹排序
  • EnumSet:有序,以位向量存儲(chǔ),緊湊高效,占用內(nèi)存小,對于批量操作非常快;不允許插入null

List:有序、可重復(fù)

  • ArrayList:線程不安全的,可以通過Collections工具類變成線程安全的;數(shù)組存儲(chǔ)
  • Vector:線程安全,不過很老了,不推薦使用
  • LinkedList:也實(shí)現(xiàn)了Deque接口,可以作為雙端隊(duì)列或者棧;鏈表存儲(chǔ)

Queue隊(duì)列

  • PriorityQueue:按照元素大小重新排序
  • Deque(類似于雙端隊(duì)列,也可以作為棧的實(shí)現(xiàn)),ArrayDeque

Map

  • HashMap:線程不安全;允許放入null作為key或value;
  • Hashtable:古老,類似于Vector,不推薦使用,線程安全,不允許放入null;Properties是它的子類
  • LinkedHashMap
  • TreeMap,SortedMap
  • WeakHashMap

Hash的知識(shí)點(diǎn):

  • 容量(capacity,默認(rèn)是10)、初始化容量(可以通過構(gòu)造器傳入)
  • 尺寸(當(dāng)前hash表中記錄的數(shù)量)
  • 負(fù)載因子,一般是0.75;超過時(shí)會(huì)發(fā)生rehashing,比較消耗

Collections:提供的集合工具類,操縱List、Set、Map

  • 排序、查找、替換
  • 同步控制List list = Collections.synchronizedList(new ArrayList()),可以獲得線程安全的ArrayList

六、泛型

編譯時(shí)不檢查類型的異常,所以需要泛型

  • 沒有泛型類:Collections instanceof java.util.ArrayLsit<String>()這個(gè)是錯(cuò)誤的
  • 類型通配符
  • 類型上限與下限,當(dāng)從List<string>變成List時(shí),發(fā)生了類型擦除,變成了上限Object

七、異常

  • finally
  • throw, throws,try catch
  • 不要過度使用異常
  • 不要使用過于龐大的try塊
  • 避免使用Catch All語句
  • 不要忽略捕獲到的異常

八、數(shù)據(jù)庫

Class.forName(“com.mysql.jdbc.Driver”);

try{

Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/select","root","xxxx");

Statement stat = conn.createStatement();

ResultSet rs = stat.execute("sql語句");

while(rs.hasnext){sysout(rs.getXX)}

stat.executeUpdate("updateSql語句");

conn.commit();

}

  • 連接池(DBCP數(shù)據(jù)源、C3P0數(shù)據(jù)源)

九、注釋

  • @override,@Deprecated, @SuppressWarnings
  • @Retention,@Target, @Document
  • 自定義注釋(public @interface Test {}) 用法:@Test
  • 只加注解是沒有用的,結(jié)合反射使用 method.isAnnotationPresent方法來做處理

十、輸入輸出

  • File:不能訪問文件本身,需要使用輸入/輸出流
  • 字節(jié)流(8位字節(jié),Inputstream、OutputStrem)、字符流(16位字符,Reader、Writer)
  • 轉(zhuǎn)換流(只提供了從字節(jié)流轉(zhuǎn)換為字符流)
  • 序列化(類實(shí)現(xiàn)了Serializable,所有的成員變量也都需要是可序列化的),通過transient指定序列化時(shí)可以無需理會(huì)(只能用于修飾實(shí)例變量)
  • NIO,從java1.4開始,放在java.nio包下;兩個(gè)核心對象Channel、Buffer
  • NIO.2 Path、Paths、和Files核心API、FileVisitor

十一、網(wǎng)絡(luò)

  • InetAddress代表ip地址
  • URLDecoder,URLEncoder
  • ......太多了

十二、類加載機(jī)制

  • 加載過程加載:將類的class文件讀入內(nèi)存,并為之創(chuàng)建一個(gè)java.lang.Class對象連接:驗(yàn)證、準(zhǔn)備、解析初始化:虛擬機(jī)對類進(jìn)行初始化
  • 類加載器根類加載器 bootstrap擴(kuò)展類加載器 extension系統(tǒng)類加載器 system
  • 反射(由于對象存在編譯時(shí)類型和運(yùn)行時(shí)類型,程序需要在運(yùn)行時(shí)發(fā)現(xiàn)對象和類的真實(shí)信息)獲得Class對象:forName獲取構(gòu)造器 getConstructor方法getMthod, method.invoke();獲取成員變量getField獲取標(biāo)注getAnnotation...等
  • 使用反射生成JDK動(dòng)態(tài)代理

十三、多線程

一、創(chuàng)建線程三種方式

繼承Thread、實(shí)現(xiàn)Runnable、Callable接口

二、線程的生命周期

新建和就緒、運(yùn)行和阻塞、死亡

三、控制線程

join、后臺(tái)進(jìn)程Daemon、睡眠Sleep、讓步y(tǒng)ield

  • synchronized關(guān)鍵字可以修飾方法、代碼塊,但是不能修飾構(gòu)造器、成員變量等synchronized修飾的同步方法,因?yàn)樵擃惖哪J(rèn)實(shí)例是this,就是同步監(jiān)視器,所以可以直接調(diào)用Object的wati(), notify(),notifyAll()方法;synchronized修飾的是同步代碼塊,同步監(jiān)視器就是synchronized括號(hào)后的對象,所以必須使用該隊(duì)現(xiàn)改對象調(diào)用這三個(gè)方法。
  • java8提供了新型的StampedLock類,大多數(shù)場景中它可以替代傳統(tǒng)的ReentrantReadWriteLock
  • ReentrantReadWriteLock為讀寫操作提供了三種鎖模式:Writing、ReadingOptimistic、Reading
  • 常用的是ReentrantLock(可重入鎖)Private final ReentrantLock lock = new ReentrantLock();public void m(){ lock.lock(); try{ // 需要保障線程安全的代碼} finally{lock.unlock();}}如果是用Lock,則使用Condition將wait,notify,nitifyAll分成不同對象private final Lock lock = new ReentrantLock();privat final Condition cond = lock.newCondition();lock.lock();cond.await();\ cond.signalAll();
  • 使用阻塞隊(duì)列(BlockingQueue)控制線程通信

線程組 ThreadGroup

線程池:從java5開始,提供了Executor工廠類

線程相關(guān)類:ThreadLocal

產(chǎn)生死鎖的原因主要是:

(1) 因?yàn)橄到y(tǒng)資源不足。

(2) 進(jìn)程運(yùn)行推進(jìn)的順序不合適。

(3) 資源分配不當(dāng)?shù)取?/p>

產(chǎn)生死鎖的四個(gè)必要條件:

(1) 互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用。

(2) 請求與保持條件:一個(gè)進(jìn)程因請求資源而阻塞時(shí),對已獲得的資源保持不放。

(3) 不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前,不能強(qiáng)行剝奪。

(4) 循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。

總結(jié)

以上是生活随笔為你收集整理的疯狂Java讲义笔记汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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