程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> java入門知識

java入門知識

編輯:JAVA編程入門知識

java基礎知識小總結

在一個獨立的原始程序裡,只能有一個 public 類,卻可以有許多 non-public 類。
此外,若是在一個 Java 程序中沒有一個類是 public,那麼該 Java 程序的文件名就可以隨意命名了。

文檔注釋,是以單斜線加兩個星形標記( /**)開頭,並以一個星形標記加單斜線( */)結束。用這種方法注釋的內容會被解釋成程序的正式文檔,並能包含進如 javadoc之類的工具生成的文檔裡,用以說明該程序的層次結構及其方法。

Java 把整數常量的數據類型均視為 int 型,因此,如果在程序中使用了超過 2147483647 這個大小的常量,編譯時將發生錯誤
要解決這個問題,只要在整數常量後面加上一個大寫的“ L”即可,此舉代表該常量是long 類型的整數常量。
最大值的代碼是 MAX_VALUE,最小值是 MIN_VALUE。如果要取用某個類型的最大值或最小值,只要在這些代碼之前,加上它們所屬的類的全名即可。

\f 換頁 \\ 反斜線
\b 倒退一格 \' 單引號
\r 歸位 \" 雙引號

在程序中已經定義好了數據類型的變量,若是想用另一種數據類型表示時, Java
會在下列的條件皆成立時,自動做數據類型的轉換:
 1、 轉換前的數據類型與轉換後的類型兼容。
 2、 轉換後的數據類型的表示范圍比轉換前的類型大

若是將一個超出該變量可表示范圍的值賦值給這個變量時,這種轉換稱為縮小轉換。由於在轉換的過程中可能會丟失數據的精確度, Java 並不會自動做這些類型的轉換,此時就必須要做強制性的轉換。

+3 ; // 表示正 3
~a ; // 表示取 a 的補碼

優先級 運算符 類 結合性
1 () 括號運算符 由左至右
1 [] 方括號運算符 由左至右
2 !、 +(正號)、 -(負號) 一元運算符 由右至左
2 ~ 位邏輯運算符 由右至左
2 ++、 -- 遞增與遞減運算符 由右至左
3 *、 /、 % 算術運算符 由左至右
4 +、 - 算術運算符 由左至右
5 <<、 >> 位左移、右移運算符 由左至右
6 >、 >=、 <、 <= 關系運算符 由左至右
7 ==、 != 關系運算符 由左至右
8 &(位運算符 AND) 位邏輯運算符 由左至右
9 ^(位運算符號 XOR) 位邏輯運算符 由左至右
10 |(位運算符號 OR) 位邏輯運算符 由左至右
11 && 邏輯運算符 由左至右
12 || 邏輯運算符 由左至右
13 ?: 條件運算符 由右至左
14 = 賦值運算符 由右至左

1、 占用字節較少的類型轉換成占用字節較多的類型。
2、 字符類型會轉換成 int 類型。
3、 int 類型會轉換成 float 類型。
4、 表達式中若某個操作數的類型為 double,則另一個操作數字也會轉換成 double
類型。
5、 布爾類型不能轉換成其它類型。

在 switch 語句裡的選擇值只能是字符或是常量。

1、 第一次進入 for 循環時,為循環控制變量賦起始值。
2、 根據判斷條件的內容檢查是否要繼續執行循環,當判斷條件值為真( true)
時,繼續執行循環主體內的語句;判斷條件值為假( false)時,則會跳出循
環,執行其他語句。
3、 執行完循環主體內的語句後,循環控制變量會根據增減量的要求,更改循環
控制變量的值,再回到步驟 2 重新判斷是否繼續執行循環。

System.arrayCopy(source,0,dest,0,x):語句的意思就是:復制源數組從下標 0 開始
的 x 個元素到目標數組,從目標數組的下標 0 所對應的位置開始存取。
Arrays.sort(數組名 )為數組排序的操作
值得一提的是 Java 允許二維數組中每行的元素個數均不相同,這點與一般的程序
語言是不同的。
“匿名對象”,顧名思義,就是沒有明確的聲明的對象。讀者也可以簡單的理解
為只使用一次的對象,即沒有任何一個具體的對象名稱引用它。

有兩種方式可用於對象間的比較,它們是“ = =”運算符與 equals()方法,“ = =”
操作符用於比較兩個對象的內存地址值是否相等, equals()方法用於比較兩個對象的內
容是否一致。
this 表示當前對象,而
所謂的當前對象就是指調用類中方法或屬性的那個對象。
如果在程序中想用某一構造方法調用另一構造方法,可以用 this 來實現,具體的
調用形式如下:
 this() ;
在類中的所有方法裡,只有構造方法是被優先調用的,所以使用 this 調用構造方法必須也只能放在構造方法的第一行一個類可以使用不包含在任何方法體中的靜態代碼塊,當類被載入時,靜態代碼塊被執行,且只執行一次,靜態代碼塊經常用來進行類屬性的初始化,這部分內容你可以多看一些java視頻教程,可以更好的理解。

構造方法雖然被私有了,但並不一定是說此類不能產生實例化對象,只是產生這個實例化對象的位置有所變化,即只能在本類中產生實例化對象。

內部類在聲明時,會破壞程序的結構,在開發中往往不建議讀者去使用。

用 static 也可以
聲明內部類,用 static 聲明的內部類則變成外部類,但是用 static 聲明的內部類不能訪
問非 static 的外部類屬性。
內部類也可以通過創建對象從外部類之外被調用,只要將內部類聲明為 public 即



在java視頻的第一部分已經提到過, Java 支持三種形式的注釋。前兩種是// 和/*… */。
第三種方式被稱為文檔注釋。它以“ /**”開始,以“ */”標志結束。文檔注釋提供將
程序信息嵌入到程序中的功能。開發者可以使用 javadoc 工具將信息取出,然後轉換
為 HTML 文件。


子類對象在實例化時會默認先去調用父類中的構造方法,之後再
調用本類中的相應構造方法。
用 super 調用父類中的構造方法,只能放在程序的第一行。


在抽象
類中聲明構造方法後,在子類中 必須明確調用
如果一個類沒
有使用 extends 關鍵字明確標識繼承另外一個類,那麼這個類就默認繼承 Object 類。


接口裡的數據成員必須初始化,且數據成員均為常量。
2、 接口裡的方法必須全部聲明為 abstract,也就是說,接口不能像抽象類一樣保有一
般的方法,而必須全部是“抽象方法”。


接口與一般類一樣,本身也具有數據成員與方法,但數據成員一定要賦初值,且
此值將不能再更改


接口是 java 實現多繼承的一種機制,一個類只能繼承一個父類,但如果需要一
個類繼承多個抽象方法的話,就明顯無法實現,所以就出現了接口的概念。一個類只
可以繼承一個父類,但卻可以實現多個接口。
同樣的,接口的擴展(或繼承)也是通過關鍵字 extends 來實現的。有趣的是,
一個接口可以繼承多個接口
父類用其本身類實例化自己的對
象,但它並不知道誰是自己的子類,那肯定在轉換的時候會出現錯誤


可以用 instanceof 判斷一個類是否實現了某個接口,也可以用它來判斷一個實
例對象是否屬於一個類。


前面已經介紹過 Object 是所有類的父類,其中的 toString()方法是需要被復寫的,
如果讀者去查 JDK 手冊,會發現在 Object 類中有一個 equals 方法,此方法用於比較
對象是否相等,而且此方法必須被復寫


接口是無法直接實例化
的,因為接口中沒有構造方法,但是卻可以根據對象多態性的概念,通過接口的子類
對其進行實例化


異常可分為兩大類: 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實現
在 Runnable 接口中並沒有 start()方法,所以一個類實現了
Runnable 接口也必須用 Thread 類中的 start()方法來啟動多線程。
Thread 類實現了 Runnable 接口,也就是說 Thread 類也是
Runnable 接口的一個子類。


一個類繼承 Thread 類之後,這個類的對象無論調用
多少次 start()方法,結果都只有一個線程在運行。


new Thread(t).start();//其中t是一個實現了Runnable接口的類
這樣連續調用多次之後會產生多個共享數據的線程


任何線程一般具有五種狀態,即創建、就緒、運行、阻塞、終止。
允許兩個 Thread 對象有相同的名字,但為了清晰,應該盡量避免這種情況的發生。
如果程序並沒有為線程指定名稱,則系統會自動的為線程分配一個名稱


可以通過 isAlive()方法來測試線程是否已經啟動而且仍然在啟動。


如果某個線程對
象在啟動(調用 start()方法)之前調用了 setDaemon(true)方法,這個線程就變成了後
台線程。
進程中只有後台線程運行時,進程就會結束。
join()方法用來強制某一線程運行(強制運行完後再運行後面的線程)


在 Thread 類之中可以發現有一個名為 sleep(long millis)的靜態方法,此方法用於
線程的休眠。


當一個線程運行時,另一個線程可以調用對應的 Thread 對象的 interrupt()方法來
中斷它。


也可以用 Thread 對象調用 isInterrupted()方法來檢查每個線程的中斷狀態。


一旦被打上interrupt狀態以後,線程執行到可中斷阻塞(有些中斷是不可以被中斷的)
的時候,就會拋出異常並且結束當前的操作,然後重置狀態。


synchronized(對象)
{
 需要同步的代碼 ;
}
需要注意的是,同步監視器一般可以由任何對象充當,只要其唯一恆定就可以,
通常推薦使用可能被並發訪問的共享資源充當同步監視器。


除了可以對代碼塊進行同步外,也可以對函數實現同步,只要在需要同步的函數
定義前加上 synchronized 關鍵字即可。


 wait()方法使當前線程等待,釋放對該同步器的鎖定。
    notify()方法喚醒該同步器上等待的單個線程,對於喚醒的選擇是任意的。
    notifyAll()喚醒全部等待的線程。


控制線程生命周期的方法有很多種,如: suspend 方法、 resume 方法和 stop 方法。
雖然 stop 能夠避免死鎖的發生,但是也有其它的不足:如果一個線程正在操作共
享數據段,操作過程沒有完成就被“ stop”了的話,將會導致數據的不完整性。


圖9-11線程的生命周期


通過控制 run 方法中循環條件的方式來結束一個線程的方法是推薦讀
者使用的,這也是實際中用的最多的方法。


StringBuffer 類用於內容可以改變的字符串,可以將其它各種類型的數據增加、插
入到字符串中,也可以轉置字符串中原來的內容。


在實際開發中,如果需要頻繁改變字符串的內容就需要考慮用 StringBuffer 類實
現,因為其內容可以改變,所以執行性能會比 String 類更高。


exit(int status)方法,提前終止虛擬機的運行。對於發生了異常情況而想終止虛擬
機的運行,傳遞一個非零值作為參數。


CurrentTimeMillis 方法返回自 1970 年 1 月 1 日 0 點 0 分 0 秒起至今的以毫秒為單
位的時間,這是一個 long 類型的大數值。


Runtime 類封裝了 Java 命令本身的運行進程,其中的許多方法與 System 中的方法
重復。不能直接創建 Runtime 實例,但可以通過靜態方法 Runtime.getRuntime 獲得正
在運行的 Runtime 對象的引用。


getInputStream()方法可以得到一個輸入流,客戶端的 Socket 對象上的 getInputStream()
方法得到的輸入流其實就是從服務器端發回的數據流。 getOutputStream()方法得到一個
輸出流,客戶端 Socket 對象上的 getOutputStream()方法返回的輸出流就是將要發送到
服務器端的數據流。


Sockets 有兩種主要的操作方式:面向連接的和無連接的。


無連接的操作使用數據報協議。一個數據報是一個獨立的單元,它包含了所有的
這次投遞的信息。


面向連接的操作使用 TCP 協議。一個這個模式下的 socket 必須在發送數據之前與
目的地的 socket 取得一個連接。一旦連接建立了, sockets 就可以使用一個流接口

  1. 上一頁:
  2. No
Copyright © 程式師世界 All Rights Reserved