java基礎知識小小結java基礎知識小總結 在一個獨立的原始程序里,只能有一個 public 類,卻可以有許多 non-public 類。 此外,若是在一個 Java 程序中沒有一個類是 public,那么該 Java 程序的文件名就可以隨意命名了。
文檔注釋,是以單斜線加兩個星形標記( /**)開頭,并以一個星形標記加單斜線( */)結束。用這種方法注釋的內容會被解釋成程序的正式文檔,并能包含進如 javadoc之類的工具生成的文檔里,用以說明該程序的層次結構及其方法。
Java 把整數(shù)常量的數(shù)據(jù)類型均視為 int 型,因此,如果在程序中使用了超過 2147483647 這個大小的常量,編譯時將發(fā)生錯誤 要解決這個問題,只要在整數(shù)常量后面加上一個大寫的“ L”即可,此舉代表該常量是long 類型的整數(shù)常量。 最大值的代碼是 MAX_VALUE,最小值是 MIN_VALUE。如果要取用某個類型的最大值或最小值,只要在這些代碼之前,加上它們所屬的類的全名即可。
\f 換頁 \\ 反斜線 \b 倒退一格 \' 單引號 \r 歸位 \" 雙引號
在程序中已經(jīng)定義好了數(shù)據(jù)類型的變量,若是想用另一種數(shù)據(jù)類型表示時, Java 會在下列的條件皆成立時,自動做數(shù)據(jù)類型的轉換: 1、 轉換前的數(shù)據(jù)類型與轉換后的類型兼容。 2、 轉換后的數(shù)據(jù)類型的表示范圍比轉換前的類型大
若是將一個超出該變量可表示范圍的值賦值給這個變量時,這種轉換稱為縮小轉換。由于在轉換的過程中可能會丟失數(shù)據(jù)的精確度, Java 并不會自動做這些類型的轉換,此時就必須要做強制性的轉換。
+3 ; // 表示正 3 ~a ; // 表示取 a 的補碼
優(yōu)先級 運算符 類 結合性 1 () 括號運算符 由左至右 1 [] 方括號運算符 由左至右 2 !、 +(正號)、 -(負號) 一元運算符 由右至左 2 ~ 位邏輯運算符 由右至左 2 ++、 -- 遞增與遞減運算符 由右至左 3 *、 /、 % 算術運算符 由左至右 4 +、 - 算術運算符 由左至右 5 <<、 >> 位左移、右移運算符 由左至右 6 >、 >=、 <、 <= 關系運算符 由左至右 7 ==、 != 關系運算符 由左至右 8 &(位運算符 AND) 位邏輯運算符 由左至右 9 ^(位運算符號 XOR) 位邏輯運算符 由左至右 10 |(位運算符號 OR) 位邏輯運算符 由左至右 11 && 邏輯運算符 由左至右 12 || 邏輯運算符 由左至右 13 ?: 條件運算符 由右至左 14 = 賦值運算符 由右至左
1、 占用字節(jié)較少的類型轉換成占用字節(jié)較多的類型。 2、 字符類型會轉換成 int 類型。 3、 int 類型會轉換成 float 類型。 4、 表達式中若某個操作數(shù)的類型為 double,則另一個操作數(shù)字也會轉換成 double 類型。 5、 布爾類型不能轉換成其它類型。
在 switch 語句里的選擇值只能是字符或是常量。
1、 第一次進入 for 循環(huán)時,為循環(huán)控制變量賦起始值。 2、 根據(jù)判斷條件的內容檢查是否要繼續(xù)執(zhí)行循環(huán),當判斷條件值為真( true) 時,繼續(xù)執(zhí)行循環(huán)主體內的語句;判斷條件值為假( false)時,則會跳出循 環(huán),執(zhí)行其他語句。 3、 執(zhí)行完循環(huán)主體內的語句后,循環(huán)控制變量會根據(jù)增減量的要求,更改循環(huán) 控制變量的值,再回到步驟 2 重新判斷是否繼續(xù)執(zhí)行循環(huán)。
System.arrayCopy(source,0,dest,0,x):語句的意思就是:復制源數(shù)組從下標 0 開始 的 x 個元素到目標數(shù)組,從目標數(shù)組的下標 0 所對應的位置開始存取。 Arrays.sort(數(shù)組名 )為數(shù)組排序的操作 值得一提的是 Java 允許二維數(shù)組中每行的元素個數(shù)均不相同,這點與一般的程序 語言是不同的。 “匿名對象”,顧名思義,就是沒有明確的聲明的對象。讀者也可以簡單的理解 為只使用一次的對象,即沒有任何一個具體的對象名稱引用它。
有兩種方式可用于對象間的比較,它們是“ = =”運算符與 equals()方法,“ = =” 操作符用于比較兩個對象的內存地址值是否相等, equals()方法用于比較兩個對象的內 容是否一致。 this 表示當前對象,而 所謂的當前對象就是指調用類中方法或屬性的那個對象。 如果在程序中想用某一構造方法調用另一構造方法,可以用 this 來實現(xiàn),具體的 調用形式如下: this() ; 在類中的所有方法里,只有構造方法是被優(yōu)先調用的,所以使用 this 調用構造方法必須也只能放在構造方法的第一行一個類可以使用不包含在任何方法體中的靜態(tài)代碼塊,當類被載入時,靜態(tài)代碼塊被執(zhí)行,且只執(zhí)行一次,靜態(tài)代碼塊經(jīng)常用來進行類屬性的初始化,這部分內容你可以多看一些java視頻教程,可以更好的理解。
構造方法雖然被私有了,但并不一定是說此類不能產(chǎn)生實例化對象,只是產(chǎn)生這個實例化對象的位置有所變化,即只能在本類中產(chǎn)生實例化對象。
內部類在聲明時,會破壞程序的結構,在開發(fā)中往往不建議讀者去使用。
用 static 也可以 聲明內部類,用 static 聲明的內部類則變成外部類,但是用 static 聲明的內部類不能訪 問非 static 的外部類屬性。 內部類也可以通過創(chuàng)建對象從外部類之外被調用,只要將內部類聲明為 public 即 可
在java視頻的第一部分已經(jīng)提到過, Java 支持三種形式的注釋。前兩種是// 和/*… */。 第三種方式被稱為文檔注釋。它以“ /**”開始,以“ */”標志結束。文檔注釋提供將 程序信息嵌入到程序中的功能。開發(fā)者可以使用 javadoc 工具將信息取出,然后轉換 為 HTML 文件。
子類對象在實例化時會默認先去調用父類中的構造方法,之后再 調用本類中的相應構造方法。 用 super 調用父類中的構造方法,只能放在程序的第一行。
在抽象 類中聲明構造方法后,在子類中 必須明確調用 如果一個類沒 有使用 extends 關鍵字明確標識繼承另外一個類,那么這個類就默認繼承 Object 類。
接口里的數(shù)據(jù)成員必須初始化,且數(shù)據(jù)成員均為常量。 2、 接口里的方法必須全部聲明為 abstract,也就是說,接口不能像抽象類一樣保有一 般的方法,而必須全部是“抽象方法”。
接口與一般類一樣,本身也具有數(shù)據(jù)成員與方法,但數(shù)據(jù)成員一定要賦初值,且 此值將不能再更改
接口是 java 實現(xiàn)多繼承的一種機制,一個類只能繼承一個父類,但如果需要一 個類繼承多個抽象方法的話,就明顯無法實現(xiàn),所以就出現(xiàn)了接口的概念。一個類只 可以繼承一個父類,但卻可以實現(xiàn)多個接口。 同樣的,接口的擴展(或繼承)也是通過關鍵字 extends 來實現(xiàn)的。有趣的是, 一個接口可以繼承多個接口 父類用其本身類實例化自己的對 象,但它并不知道誰是自己的子類,那肯定在轉換的時候會出現(xiàn)錯誤
可以用 instanceof 判斷一個類是否實現(xiàn)了某個接口,也可以用它來判斷一個實 例對象是否屬于一個類。
前面已經(jīng)介紹過 Object 是所有類的父類,其中的 toString()方法是需要被復寫的, 如果讀者去查 JDK 手冊,會發(fā)現(xiàn)在 Object 類中有一個 equals 方法,此方法用于比較 對象是否相等,而且此方法必須被復寫
接口是無法直接實例化 的,因為接口中沒有構造方法,但是卻可以根據(jù)對象多態(tài)性的概念,通過接口的子類 對其進行實例化
異常可分為兩大類: java.lang.Exception 類與 java.lang.Error 類。這兩個類均繼承 自 java.lang.Throwable 類。
如果在類的方法中用 throws 拋出一個異常,則在 調用它的地方就必須明確地用 try-catch 來捕捉。
jar 命令是 Java 中提供的一個非常有用的命令,可以用來對大量的類(.class 文件) 進行壓縮,然后存為.jar 文件。
class 類名稱 extends Thread // 從 Thread 類擴展出子類 { 修飾符 run(){ // 復寫 Thread 類里的 run()方法 // 以線程處理的程序; } } 用start()可以啟動 也可通過implements Runnable實現(xiàn) 在 Runnable 接口中并沒有 start()方法,所以一個類實現(xiàn)了 Runnable 接口也必須用 Thread 類中的 start()方法來啟動多線程。 Thread 類實現(xiàn)了 Runnable 接口,也就是說 Thread 類也是 Runnable 接口的一個子類。
一個類繼承 Thread 類之后,這個類的對象無論調用 多少次 start()方法,結果都只有一個線程在運行。
new Thread(t).start();//其中t是一個實現(xiàn)了Runnable接口的類 這樣連續(xù)調用多次之后會產(chǎn)生多個共享數(shù)據(jù)的線程
任何線程一般具有五種狀態(tài),即創(chuàng)建、就緒、運行、阻塞、終止。 允許兩個 Thread 對象有相同的名字,但為了清晰,應該盡量避免這種情況的發(fā)生。 如果程序并沒有為線程指定名稱,則系統(tǒng)會自動的為線程分配一個名稱
可以通過 isAlive()方法來測試線程是否已經(jīng)啟動而且仍然在啟動。
如果某個線程對 象在啟動(調用 start()方法)之前調用了 setDaemon(true)方法,這個線程就變成了后 臺線程。 進程中只有后臺線程運行時,進程就會結束。 join()方法用來強制某一線程運行(強制運行完后再運行后面的線程)
在 Thread 類之中可以發(fā)現(xiàn)有一個名為 sleep(long millis)的靜態(tài)方法,此方法用于 線程的休眠。
當一個線程運行時,另一個線程可以調用對應的 Thread 對象的 interrupt()方法來 中斷它。
也可以用 Thread 對象調用 isInterrupted()方法來檢查每個線程的中斷狀態(tài)。
一旦被打上interrupt狀態(tài)以后,線程執(zhí)行到可中斷阻塞(有些中斷是不可以被中斷的) 的時候,就會拋出異常并且結束當前的操作,然后重置狀態(tài)。
synchronized(對象) { 需要同步的代碼 ; } 需要注意的是,同步監(jiān)視器一般可以由任何對象充當,只要其唯一恒定就可以, 通常推薦使用可能被并發(fā)訪問的共享資源充當同步監(jiān)視器。
除了可以對代碼塊進行同步外,也可以對函數(shù)實現(xiàn)同步,只要在需要同步的函數(shù) 定義前加上 synchronized 關鍵字即可。
wait()方法使當前線程等待,釋放對該同步器的鎖定。 notify()方法喚醒該同步器上等待的單個線程,對于喚醒的選擇是任意的。 notifyAll()喚醒全部等待的線程。
控制線程生命周期的方法有很多種,如: suspend 方法、 resume 方法和 stop 方法。 雖然 stop 能夠避免死鎖的發(fā)生,但是也有其它的不足:如果一個線程正在操作共 享數(shù)據(jù)段,操作過程沒有完成就被“ stop”了的話,將會導致數(shù)據(jù)的不完整性。
圖9-11線程的生命周期
通過控制 run 方法中循環(huán)條件的方式來結束一個線程的方法是推薦讀 者使用的,這也是實際中用的最多的方法。
StringBuffer 類用于內容可以改變的字符串,可以將其它各種類型的數(shù)據(jù)增加、插 入到字符串中,也可以轉置字符串中原來的內容。
在實際開發(fā)中,如果需要頻繁改變字符串的內容就需要考慮用 StringBuffer 類實 現(xiàn),因為其內容可以改變,所以執(zhí)行性能會比 String 類更高。
exit(int status)方法,提前終止虛擬機的運行。對于發(fā)生了異常情況而想終止虛擬 機的運行,傳遞一個非零值作為參數(shù)。
CurrentTimeMillis 方法返回自 1970 年 1 月 1 日 0 點 0 分 0 秒起至今的以毫秒為單 位的時間,這是一個 long 類型的大數(shù)值。
Runtime 類封裝了 Java 命令本身的運行進程,其中的許多方法與 System 中的方法 重復。不能直接創(chuàng)建 Runtime 實例,但可以通過靜態(tài)方法 Runtime.getRuntime 獲得正 在運行的 Runtime 對象的引用。
getInputStream()方法可以得到一個輸入流,客戶端的 Socket 對象上的 getInputStream() 方法得到的輸入流其實就是從服務器端發(fā)回的數(shù)據(jù)流。 getOutputStream()方法得到一個 輸出流,客戶端 Socket 對象上的 getOutputStream()方法返回的輸出流就是將要發(fā)送到 服務器端的數(shù)據(jù)流。
Sockets 有兩種主要的操作方式:面向連接的和無連接的。
無連接的操作使用數(shù)據(jù)報協(xié)議。一個數(shù)據(jù)報是一個獨立的單元,它包含了所有的 這次投遞的信息。
面向連接的操作使用 TCP 協(xié)議。一個這個模式下的 socket 必須在發(fā)送數(shù)據(jù)之前與 目的地的 socket 取得一個連接。一旦連接建立了, sockets 就可以使用一個流接口 本文轉自:http://blog.csdn.net/xuejiaqiang88/article/details/43700073
|