java基礎知識總結
一、java概述與計算機基礎
1)計算機基礎
1)dos指令
2)進制轉換
2)java語言發展曆史
3)環境變量
4)JDK與JRE
5)Java的三種技術架構
6)javac編譯\java運作
二、java文法基礎
1)辨別符
含義:辨別符是程式員為自己定義的類、方法、變量等取的名稱
規範(包名、類名和接口名、方法名、變量名、常量名)
2)關鍵字
概述:關鍵字隻能系統使用,不能作為程式的辨別符
通路修飾符關鍵字
public、protected、private
類、方法和變量修飾符關鍵字
class\interface、implements、extends、abstract、static
流程控制關鍵字
if-else
switch-case-default
for
do-while
break、continue、return
instanceof 判斷對象是否是類或接口的執行個體
異常處理關鍵字
try-catch-finally
throw、throws
assert 用于斷言操作
包控制關鍵字
import 用于将包或者類導入到程式中
package 用于定義包
資料類型關鍵字
boolean、char、byte、short、int、long、float、double
float f1 = 123.23456f;//浮點會保留兩位小數
double d1 = 123.23456; 是雙精度數字
特殊類型和方法關鍵字
super 引用父類
this 作用于目前類對象
void 定義一般的方法
保留的關鍵字
go、const
3) 注釋
單行注釋
多行注釋
文檔注釋
4)資料類型(基本、引用)
基本資料類型(四類八中)
數值型 位數
位元組型 byte 8
短整型 short 16
整型 int 32
長整型 long 64
字元型
char 基本字元
Unicode碼表示字元 格式:\uxxxx
unicode碼中定義了至今人類語言的所有字元集,Unicode編碼字元用16進制數值表示,既有 2^16 個可能值,也就是0-65535
轉義字元
\' 但引号 \"雙引号 \\ 斜杠 \r 回車
\n 換行 \f 換頁 \t 跳格\b 倒退
浮點型 float、double
float 單精度浮點數 float f1 = 123.123f;
double 雙精度浮點數
布爾型 boolean
true、false
進制數值
八進制 定義:int a8 = 012; //定義一個八進制數值,以0開頭 範圍0-7
十六進制 定義: int a16 = 0xcafe;//定義十六進制數值,以0x開頭 範圍0-9,
A(10)、B(11)、C(12)、D(13)、E(14)、F(15),不區分大小寫
資料類型間的轉換
自動轉換
轉換前的資料類型的位數,要低于轉換後的資料類型。 位數低的類型可以自動轉換成位數高的類型。
short - int - long - double
16位數的short可以自動轉換成 32位數的int. 32位數的float 可以自動轉換成double
long 可以轉換成 double 類型,但是一定要在後面加上小數位
強制轉換
從高位到低位 字元類型是可以自動轉換為數值類型的,相反數值類型也可以強制轉換為字元類型的。
隐含轉換
byte b = 123;// 123 是數值預設為int類型,隐含強制轉換成byte類型
5)常量
定義:使用final關鍵字
6)變量
變量的作用域和生存期
變量的資料類型
自動類型轉換、強制類型轉換
7)運算符
算術運算符
+ 加法運算符
- 減法運算符
+ 、- 也可以作為正數和負數的字首。 同時 + 可以用于字元串連接配接操作。
* 乘法運算符
/ 除法運算符
% 求餘運算符
求餘 和 除法 運算符 第二位不能為0,否則程式異常 java.lang.ArithmeticException
自增自減運算符
++ 自增
-- 自減
字首方式:先進行自增或自減運算,再進行表達式運算
字尾方式,先進行表達式運算,後進行自增自減運算。
注意:使用自增自減運算符的時候,并不會進行類型的提升,操作前數值是什麼類型,操作後的數值就是什麼類型。
關系運算符
== 等于
!= 不等于
>= 大于等于
<= 小于等于
> 大于
< 小于
批注:關系運算符比較的是基本資料類型時,表示比較的值是否相等;
用 == 或 != 比較的是對象或者引用資料類型是,表示比較的對象的引用是否相等。
邏輯運算符
& 與 兩邊都為true,則為true, 否則為false
&& 短路與 兩邊都為true,則為true. 如果第一個為flase,則為false,不繼續比較
| 或 兩邊都為false,則為false,否則為true
|| 短路或 兩邊都為false,則為false,如果第一個為true,則為true,不繼續比較
! 非運算符
批注:比較的是二進制數的邏輯關系,運算結果為true\false;
&& 符号兩邊都為true , 結果為true; 有一邊為false,結果為false
|| 符号兩邊都為false ,結果為false;有一邊為true,結果為true
三元運算符
表達式1:表達式2 ? 表達式3
批注:對三個表達式集中比較,表達式1為true,取第二個表達式,否則取第三個表達式
位運算符
概述:在計算機中,所有的整數都是通過二進制進行儲存的,由一串0或者1組成。每個數字占一個比特位。
位運算符就是對資料的比特位進行操作,隻能由于整數類型。
& 與 : 如果對應位都是1,則結果為1,否則為0. 如: x & y
| 或 :如果對應位都是0,則結果為0,否則為1. 如: x | y
^ 異或:如果對應值相同,則結果為0 ,否則為1. 如: x^y
~ 非:把操作數的每一位都去反
批注:将操作數轉換為二進制,然後按位比較
位移運算符
<< 帶符号右移 ,需保證正負不變。 如 7>>1 = 3 ,右移相當于 除以2,如果是奇數則是-1後除以2
<< 帶符号左移 ,不足用0補齊。 6<<1 = 12 左移相當于 乘以2
>>> 無符号右移 ,移動後首位是0,正數,即可以把負數移位後轉成正數
例如:-8 >>>1 = 2147483644
批注:和邏輯運算符一樣,對表達式進行比較。
先将比較的操作數轉出成二進制數,然後向右向左移動相應的位數。
指派運算符
= 一般指派運算符 如: int n = 3; //把數值3指派給整型的變量n
+=、-=、*= 運算指派運算符 先運算,再指派
運算符的優先級
三、流程控制語句
1)複合語句
2)條件語句
if-else
switch-case-default
break 不能省略,否則無法跳出循環
3)循環語句
while
do-while
for
for(初始化;條件;疊代運算){ 循環體 }
for(int i=0;true;i++) //循環條件一直為true
for(;true;) //沒有起始條件
for(;;) //沒有任何條件的死循環
4)跳轉語句
break 跳出
用法1:跳出循環;當循環嵌套時,跳出目前的循環;
用法2:跳出語句塊。 用于循環嵌套時跳出外循環。
continue 繼續
用法:雖然break可以跳出循環,但是有時候要停止一次循環剩餘的部分,同時還要繼續執行下次循環,這時候就需要continue
return 傳回
實戰經典:
1)99乘法表
2)螺旋矩陣
四、字元串
五、數組
1)建立
int [] array1 = new int[5]; //注意:數組的小标是從0開始, 最後一個索引是數組的長度-1
int a = array1[1]; //通過小标擷取元素
java.lang.ArrayIndexOutOfBoundsException:5 數組下标越界異常
在建立數組的時候 數組元素會獲得一個預設值。
指派: array1[0] = 1;
2)初始化
int [] arr = {1,2,3,4,5};//建立的時候初始化
3)length 執行個體變量
java中的數組是一個對象,它會有自己的執行個體變量。 數組隻有一個公共執行個體變量:length 指數組的長度
4)main方法接受 使用者輸入的參數
5)數組拷貝
array1=array2; array2[0]=10; //我們會發現,兩個數組的值都改變了。 顯然,這樣的拷貝方法不合适
System.arraycopy(fromArray,fromIndex,toArray,toIndex,llength); //目标數組必須有足夠多的空間,否則會抛出異常。
實戰:
建立兩個數組把數組1的全部元素拷貝到數組2的尾部
6)數組排序
選擇排序 --- 典型的交換排序算法
概念:對一個長度n的數組進行n次辦理,第一次周遊選出最大或者最小的元素,将之與數組的第一個元素交換;
第二次周遊,再從剩餘的元素中選出最大(或者最小)的元素,将之與數組的第二個元素互動。
這樣周遊n次後,得到的就為降序或者升序 的數組。
批注:選擇排序的效率比較低,但原理簡單,實作起來比較容易
冒泡排序
快速排序
六、類和對象
七、包裝類
基本資料類型包裝類:Integer、Boolean、Byte、Character、Double、Number
八、數字處理類
0) 數字格式化
1)數學運算
Math
常用數學運算方法
2)随機數
Math.random()
Random類
3)大數字運算
BigInteger
BigDecimal
九、接口、繼承、多态
十、類的進階特性 内部類
十一、異常處理 異常、斷言、日志、調試
十二、集合類
十三、IO流
十四、反射、枚舉、泛型
十五、多線程
十六、網絡通信
十七、資料庫操作
十八、JDK 7的改進
附錄: