Java基礎(JavaSE)
1、Java 基礎語法;
1、1 注釋
- 行內注釋 //
- 多行注釋 /**/
- 檔案注釋 /** */ - javadoc 生成幫助檔案
1、2 識別符號
- 關鍵字
1、3 資料型別
1、基本資料型別:四類八種
- 整數
- byte - 1byte
- short - 2byte
- int【默認】 - 4byte
- long - 8byte
- (拓展:進制轉換 二進制 - 0b -、十六進制 - 0x 、8進制 - 0)
- 浮點數
- float - 4byte
- double【默認】- 8byte
- (拓展 - 金融計算不能使用 float和double ,要使用 BigDecimal)
- 字符
- char - 2byte
- (拓展 ASCII編碼-1位元組、UTF-8編碼-3位元組、Unicode-2位元組)
- (拓展:
\u0000轉義字符)- \b
- \n
- \r
- \t
- \\
- \"
- \'
- 布林值
- boolen- 1位(0或1)
- (拓展 if(a) )
2、參考資料型別
- 類
- 介面
- 陣列
3、型別轉換
- 自動型別轉換
- 低轉高(子類轉父類)
- 強制型別轉換
- 高轉低(父類轉子類) - 格式:(低)高 - (int)long
- 高低的概念在數字里面就是位元組數,在類里面就是 子類 - 父類
1、4 變數和常量
1、type varName [= value];
2、作用域
- 類變數 - static 修飾變數(靜態變數)
- 實體變數 - static去掉 (在類內方法外)-全域變數
- 區域變數(成員變數)- 方法內
3、常量
- final MAX_A = 10;常量必須全部大寫,單詞隔開用下劃線
4、命名規范
- 見名知意
- 駝峰命名 - 用在變數和方法上
- 類命名 - 是首字母大寫+駝峰命名
- 常量 - 大寫+下劃線
- 不要使用拼音和中文
1、5 運算子
1、算數運算子:+ 、- 、* 、/、%、++、--
2、賦值運算子:=
3、關系運算子:>、<、>=、<=、==、!= 、instanceof
4、邏輯運算子:&&、||、!
5、位運算子:&、|、^、~、>>、<<、>>>
6、條件運算子:?:
7、擴展運算子:+= 、-=、*=、/=
1、6 JavaDoc
1、JDK 幫助檔案
2、命令 javadoc 生成檔案
- @author 作者
- @Version 版本
- @Since 最早支持哪個java版本
- @param 引數
- @return 回傳值
- @throws 拋出的例外
1、7 流程控制
1、Scanner 用戶互動 System.in
2、順序結構:自上而下的執行
3、選擇結構
- if 單選擇結構
- if - else 雙選擇結構
- if - else if - else 多選擇結構
- switch
- (JDK7 支持了String型別)
- case穿透現象
- break
- default
4、分支結構(回圈結構)
- while:盡量避免死回圈
- do... while
- for - 可計次數一般用for回圈 ,不可計次數一般用while 回圈
- for(int i=0;i<100;i++)
- 經典案例 - 99 乘法表
- 增強for回圈
- break & continue
- break 跳出回圈
- continue 終止當此回圈,繼續下次回圈
- (帶標簽的continue 廢棄的)
- return 結束方法的運行;
1、8 方法
1、什么是方法?- 陳述句塊的集合
2、方法的定義
-
修飾符 回傳值 方法名(引數名){ return 回傳值; }
3、方法的呼叫
- 類名.方法
- 物件.方法
4、方法多載
- 名字相同,方法形參串列不同;
5、命令列傳參 - 給mian 方法傳遞引數 (涉及JVM調優)
- main 方法是自帶了引數的,可以通過命令列的方式傳遞引數進運行程式;
1、9 陣列
1、陣列的定義
- new int[5]
- {1,2,3,4,5}
- 陣列必須是同一個型別
2、陣列的使用
- 通過下標拿到值
- ArrayIndexoutofBounds - 陣列下標越界例外
- 通過增強for回圈遍歷
3、二維陣列 :
- int[ ] [ ]
4、Arrays類(工具類)
5、排序演算法(第一個資料結構)
- 冒泡排序
- 選擇排序
- 插入排序
- 快速排序
- 歸并排序
- 希爾排序
- 堆排序
- 桶排序(基數排序)
2、面向物件:一切皆物件
2、1 類和物件
1、類是物件的抽象:模板Class;
2、物件是類的具體
2、2 構造方法
1、構造方法的多載
2、默認的無參構造
- 如果手動定義了有參構造,就必須要手動加一個無參構造;
- 單例模式,需要構造器私有;
2、3 new物件
1、堆疊存放參考,堆存放具體的物件
2、4 三大特性:封裝、繼承、多型
1、封裝屬性私有:get、set 方法;
2、繼承
- extends 繼承關鍵字
- Object 是所有類的老祖宗
- 子類擁有父類的特性
- 方法重寫
- this
- super
- Java 是單繼承,只能繼承一個父類,但是可以實作多個介面;
3、多型
- 父類的參考指向子類的物件 Person person = new Student();
- instanceof 關鍵字,如果匹配,可以進行型別之間的轉換;
2、5 修飾符
1、public
2、protected
3、private
4、static
5、fina
6、abstract
2、6 介面
1、interface
2、特性:
-
約束,只能定義方法名;
-
子類實作介面必須重寫其中的方法;
3、函式式介面:只有一個方法的介面,可以使用lambda運算式簡化;
4、介面比抽象類更抽象;
- 抽象類里可以有具體的實作,介面不能有方法的具體實作,實作交給實作類進行;
2、7 內部類
1、區域內部類
2、靜態內部類
3、匿名內部類(重點) - 可以被lambda運算式簡寫;
4、普通內部類
3、例外;
3、1 Throwable 例外的總結口
1、Exception
- 運行時例外(一般處理運行時例外)
- 1/0
- ClassNotFound
- NullPoint
- UnKnwoType
- 下標越界例外
- 編譯時例外(檢查型例外)
2、Error
- AWT錯誤
- JVM錯誤
- StackOverFlow 堆疊溢位
- OutOfMeory 記憶體溢位
3、2 處理例外,五個關鍵字
1、try{}
2、catch{} 先小后大
3、finally{}
4、throw 手動拋出例外
5、throws 方法拋出例外
3、3 自定義例外
1、繼承Excpetion 類即可
4、I/O流;
4、1 位元組流
1、輸出:OutputStream
2、輸入:InputStream
4、2 字符流(中文一定要用字符流)
1、Reader
2、Wirter
4、3 處理流
1、buffer
- bufferInputStream
- bufferOutputStream
- bufferReader
- bufferWriter
2、data
- DataInputStream
- DataOutputStream
3、轉換流
- InputStreamReader
- OutputStreamWriter
4、Filter(4個)
5、Print
- PrintWriter
- PrintSteam
6、Object 流(4個)
- ObjectInputStream
- ObjectOutputStream
- ObjectReader
- ObjectWriter
7、序列化和反序列化
- Serializable
- transient(透明的)- 某一個屬性時透明的,使用關鍵字就不會被序列化;
4、4 節點流
1、CharArrayReader、Writer、InputStream、OutputStream
2、StringReader、StringWriter
3、pipe(管道流) : PipedOutputStream
4、File()
5、集合(容器);
5、1 Collection(單列集合 - 物件集合)
- List(有序,可以重復)
- ArrayList - 全部常用
- add
- remove
- contains
- size
- LinkedList(鏈表) - 常用
- getFirst()
- getLast()
- pop()
- push()
- removeFirst()
- addFirst
- ...
- Vector
- Stack
- ArrayList - 全部常用
- Set(無序,不可重復)
- HashSet - 一般常用
- TreeSet
- iterator 迭代器 遍歷
5、2 Map(雙列集合 - 鍵值對集合)
- HasMap - 重點常用
- JDK 1.7以前:陣列+鏈表 ; JDK1.8之后:陣列+鏈表+紅黑樹
- TreeMao
5、3 Collections 工具類
5、4 泛型 <> ,約束作用,避免型別轉換之間的問題;
6、常用類和工具類;
6、1 Object類
1、hashcode()
2、toString()
3、clone()
4、getClass()
5、notify()
6、wait()
7、equals()
6、2 Math類(數學運算)
6、3 Random類(生成亂數)
- UUID類
6、4 File類
1、創建檔案
2、查看檔案
3、修改檔案
4、洗掉檔案
6、5 包裝類
1、自動裝箱和自動拆箱
6、6 Date類
1、Date
2、SimpleDateFormat
- yyyy-MM-dd HH:mm:ss
3、Calendar - 日歷類(建議使用)
6、7 String類 - 操作量較少
- 不可變性 final
6、8 StringBuffer類 - 多執行緒資料量較大 - 效率低,安全
- 可變長 - append()【append 可以鏈式編程】
6、9 StringBuilder類 - 單執行緒資料量較大 - 效率高,不安全
- 可變長 - append()
6、10 問題
- String str = "a"+1+2 a12
- String str = 'a' + 1+2 具體的數值
- String str = 1+2+ “a” 3a
7、反射與注解;
7、1 注解
1、元注解
2、內置注解
3、自定義注解
4、反射讀取注解
7、2 反射
1、Class
- newInstance();
2、類加載機制
- 物件獲取
- 類獲取
3、Method 獲得方法
- 通過反射獲得方法物件,再通過invoke執行方法并傳遞方法引數, .invoke(引數型別 引數,引數型別 引數) - 因為方法存在多載,也需要寫引數的型別
4、Field 獲得欄位
-
通過反射get 獲得 欄位
-
.set(引數型別 引數) - 因為方法存在多載,也需要寫引數的型別
5、Construct
- newInstance(引數型別 引數); - 獲取的時候需要傳遞引數的class型別
6 破壞私有關鍵字
- setAccessible(true);
- 就可以set 資料
7 性能分析
- 正常new >檢測關閉的反射>默認的反射
8\ 反射獲得注解\泛型
9 \單例模式的探究
9 \Stream
11\ ForkJoin
8、網路編程;
8、1 IP
8、2 埠
8、3 Socket 編程
8、4 TCP
1、三次握手
2、四次揮手
8、5 UDP
1、無連接
2、Packet 以包發送
8、6 URL
8、7 聊天通信
8、8 檔案上傳
9、GUI編程(可選) -
9、1 AWT
1、Frame
2、事件
- 監聽事件
- 滑鼠監聽事件
- 鍵盤監聽事件
- 視窗監聽事件
- 文本框監聽事件
- 動作監聽事件
9、2 Swing
1、文本框
2、標簽
3、按鈕
4、文本域
5、面板
6、布局方式
7、關閉視窗
8、串列
9、3 案例:貪吃蛇
1、Timer
2、鍵盤監聽
3、游戲幀的概念
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/243119.html
標籤:Java
上一篇:Spring-AOP核心
