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

歡迎訪問 生活随笔!

生活随笔

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

java

Java基础相关

發布時間:2025/7/25 java 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础相关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/a724888/article/details/70038420

程序員江湖陸小鳳的博客,作為學習Java的順序目錄還可以,內容結合其它博客看比較容易理解,以下未加外鏈的在此人博客Java分類下基本能找到。

?

面向對象三大特性:繼承、封裝和多態

?

java基本數據類型:byte(8位),short(16),int,long,float,double,boolean(8),char(16)

對應包裝類:Byte,Short,Integer,Long,Float,Double,Boolean,Character

自動拆箱裝箱:https://www.cnblogs.com/wang-yaz/p/8516151.html,基本數據類型的包裝類只在數字范圍-128到127中用到常量池,會自動拆箱裝箱,其余數字范圍的包裝類則會新建實例

?

final關鍵字:

final修飾基本數據類型保證不可變

修飾引用類型保證引用不能指向別的對象,否則報錯

修飾類,不能被繼承,類的實例分配空間后地址不可變,子類不能重寫所有父類方法

修飾方法,子類不能重寫該方法

?

抽象類和接口

可以有方法實現,有非final成員變量,用abstract修飾,可以有構造方法,但只能由子類實例化

接口可用extends加多個接口實現多繼承,接口只能有public final類型的成員變量,接口只能有抽象方法、不能有方法體,接口不能實例化,但是可以作為引用類型

?

代碼塊和加載順序

假設該類是第一次進行實例化,加載順序如下:

靜態代碼塊比非靜態優先,從早到晚包括:靜態代碼塊和靜態成員變量順序根據代碼位置前后來決定,代碼塊和成員變量順序也根據代碼位置來決定,最后才調用構造方法

1、父類靜態變量

2、父類靜態代碼塊(若有多個按代碼先后順序執行)

3、子類靜態變量

4、子類靜態代碼塊(若有多個按代碼先后順序執行)

5、父類非靜態變量

6、父類非靜態代碼塊(若有多個按代碼先后順序執行)

7、父類構造函數

8、子類非靜態變量

9、子類非靜態代碼塊(若有多個按代碼先后順序執行)

10、子類構造函數

?

外部類、內部類

外部類只有public和default兩種修飾,全局訪問和包內訪問

內部類可以有全部訪問權限,概念為一個成員變量,故訪問權限設置與一般成員變量相同,非靜態內部類是外部類一個成員變量,只和外部類的實例有關,靜態內部類是獨立于外部類存在的一個類,與外部類實例無關,可以通過外部類.內部類直接獲取Class類型

?

異常

Throwable

Error(jvm完全無法處理的系統錯誤,只能終止運行) 和Exception,日志框架,log4j,slf4j

?

泛型 https://blog.csdn.net/s10461/article/details/53941091

java中是偽泛型,運行期自動進行泛型擦除,將泛型替換為實際上傳入的類型

泛型通配符1、泛化 2、<? extends Number> 上邊界 3、<? super Integer>下邊界 此種方式限制上下邊界

泛型的使用:泛型類,泛型接口,泛型方法

數組的類型不可以是類型變量,除非是采用通配符的方式

?

Class類和Object類

class.forName

對象.getClass

類名.class

clone()調用需要實現Cloneable接口

?

反射機制

https://www.jianshu.com/p/5b3acad0f025

注解

https://www.cnblogs.com/acm-bingzi/p/javaAnnotation.html

https://www.cnblogs.com/liangweiping/p/3837332.html

?

枚舉類

https://blog.csdn.net/javazejian/article/details/71333103

?

集合框架

Collection

List:ArrayList、LinkedList、Vector、Stack

Set:EnumSet、HashSet、HashSet

Map:HashMap,TreeMap,HashTable

Queue:ArrayBlockQueue,PriorityBlockingQueue,LinkedBlockingQueue,ArrayDeque,LinkedBlockingDeque,LinkedList

https://blog.csdn.net/a724888/article/details/80215706

http://calvin1978.blogcn.com/articles/collection.html

?

序列化:實現serializable接口,transient修飾符保證某個成員變量不被序列化

原文:https://blog.csdn.net/a724888/article/details/80210095

在序列化過程中,如果被序列化的類中定義了writeObject 和 readObject 方法,虛擬機會試圖調用對象類里的 writeObject 和 readObject 方法,進行用戶自定義的序列化和反序列化。

如果沒有這樣的方法,則默認調用是 ObjectOutputStream 的 defaultWriteObject 方法以及 ObjectInputStream 的 defaultReadObject 方法。

why transient

ArrayList實際上是動態數組,每次在放滿以后自動增長設定的長度值,如果數組自動增長長度設為100,而實際只放了一個元素,那就會序列化99個null元素。為了保證在序列化的時候不會將這么多null同時進行序列化,ArrayList把元素數組設置為transient。

why writeObject and readObject

前面說過,為了防止一個包含大量空對象的數組被序列化,為了優化存儲,所以,ArrayList使用transient來聲明elementData。 但是,作為一個集合,在序列化過程中還必須保證其中的元素可以被持久化下來,所以,通過重寫writeObject 和 readObject方法的方式把其中的元素保留下來。

writeObject方法把elementData數組中的元素遍歷的保存到輸出流(ObjectOutputStream)中。

readObject方法從輸入流(ObjectInputStream)中讀出對象并保存賦值到elementData數組中。

?

多線程:

線程7種狀態:new runable running blocked waiting time_waiting terminate

https://www.cnblogs.com/wxd0108/p/5479442.html

Lock類:

java.util.concurrent包內,三個實現,ReentrantLock,ReentrantReadWriteLock.ReadLock,ReentrantReadWriteLock.WriteLock

BlockingQueue:ArrayListBlockingQueue,LinkedListBlockingQueue,DelayQueue,SynchronousQueue

ConcurrentHashMap

CachedThreadPool,SingleThreadPool,FixedThreadPool,ScheduledExecutorService

ThreadPoolExecutor:https://www.cnblogs.com/dolphin0520/p/3932921.html,https://www.cnblogs.com/cjsblog/p/8214921.html(1.8)

public?ThreadPoolExecutor(int?corePoolSize,int?maximumPoolSize,long?keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler);

1、如果正在運行的線程數少于核心線程數,則新建一個線程去運行這個任務

2、如果工作隊列沒有滿,則放到工作隊列中

3、如果工作隊列已滿(PS:workQueue.offer(command)返回false),則再新建線程

4、若線程數已經達到最大線程數則reject(command)

?

IO流與網絡編程

字節流、字符流。

?

代理

https://www.cnblogs.com/cenyu/p/6289209.html

https://www.jianshu.com/p/471c80a7e831

https://blog.csdn.net/a724888/article/details/77194098

靜態代理:使用時定義接口或父類,被代理對象與代理對象一起實現相同的接口或是繼承相同父類

動態代理(JDK代理,接口代理):代理對象,不需要實現接口;代理對象的生成,是利用JDK的API,動態的在內存中構建代理對象

Cglib代理(子類代理):目標對象只是一個單獨的對象,并沒有實現任何的接口,這個時候就可以使用以目標對象子類的方式類實現代理,這種方法就叫做:Cglib代理

?

轉載于:https://www.cnblogs.com/lun14061076/p/10545002.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Java基础相关的全部內容,希望文章能夠幫你解決所遇到的問題。

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