Java相關知識一覽

import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; public class TestRef { public static void main(String args[]) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { Foo foo = new Foo("這個一個Foo對象!"); ...
java.lang.IndexOutOfBoundsException: No group 9 java.util.regex.Matcher.group(Unknown Source) java.util.regex.Matcher.appendReplacement(Unknown Source) java.util.regex.Matcher.replaceAll(Unknown Source) java.lang.String.replaceAll(Unknown Source) 問題出在replaceAll()上面。 可以把它換成replace()就可 ...
    Java設計模式-圖解-附代碼     目錄 1. 設計模式 3 1.1 創建型模式 4 1.1.1 工廠方法
Java語言基礎 談到Java語言基礎學習的書籍,大家肯定會推薦Bruce Eckel的《ThinkinginJava》。它是一本寫的相當深刻的技術書籍,Java語言基礎部分基本沒有其它任何一本書可以超越它。該書的作者BruceEckel在網絡上被稱爲天才的投機者,作者的《Thinking in C++》在1995年曾獲SoftwareDevelopmentJoltAward最佳書籍大獎,《Thinking inJava》被評爲1999年JavaWorld“最愛讀者歡迎圖書”,並且贏得了編輯首選圖書獎。作者從1986年至今,已經發表了超過150篇計算機技術文章,出版了6本書(其中4本 ...
可供程序利用的資源(內存、CPU時間、網絡帶寬等)是有限的,優化的目的就是讓程序用儘可能少的資源完成預定的任務。優化通常包含兩方面的內容:減小代碼的體積,提高代碼的運行效率。本文討論的主要是如何提高代碼的效率。在Java程序中,性能問題的大部分原因並不在於Java語言,而是在於程序本身。養成好的代碼編寫習慣非常重要,比如正確地、巧妙地運用java.lang.String類和java.util.Vector類,它能夠顯著地提高程序的性能。下面我們就來具體地分析一下這方面的問題。 1、     儘量指定類的final修飾符帶有final修飾符的類是不可派生的。在Java核心API中,有許多應 ...
        重寫方法規則如下:   * 變元列表必須與被重寫的方法的變元列表完全匹配,如果不匹配,則得到的可能就是一個意想不到的重載方法   * 返回類型必須與超類中被重寫方法中原先聲明的返回類型或其子類型   * 訪問級別的限制性一定不能比被重寫方法的更嚴格   * 訪問級別的限制性可以比被重寫方法的弱   * 僅當實力方法被子類繼承時,它們才能被重寫   * 重寫方法可以拋出任何未檢驗(運行時異常),無論被重寫方法是否聲明瞭該異常   *重寫方法一定不能拋出比被重寫方法聲明的檢驗異常更新或更廣的檢驗異常   * 重寫方法可以拋出更少 ...
Java合法標識符規範   (1)標識符必須以字母,貨幣符號($)或連字符(如下劃線)開頭。標識符不能以數字開頭   (2)第一個字符之後,標識符可包含字符,貨幣符號,連字符或數字的任意組合   (3)在實際使用中,對標識符可以包含的字符數沒有限制   (4)不能將Java關鍵字作爲標識符   (5)Java中的標識符是大小寫敏感的,foo和FOO是兩個不同的標識符   源文件聲明規則   * 每個源文件只能有一個public類   * 如果文件中有一個public類,那麼文件名必須與public 類的名稱匹配   *一個文件可以有多個非公共類   * 不 ...
  1.一般的用法:continue 和break用於跳出循環。   continue指結束當前1次循環的繼續執行,計數器步進,循環操作繼續。如下 Java代碼    for ( int i = 0
阻塞指的是暫停一個線程的執行以等待某個條件發生(如某資源就緒),學過操作系統的同學對它一 定已經很熟悉了。Java 提供了大量方法來支持阻塞,下面讓我們逐一分析。   1. sleep() 方法:sleep() 允許 指定以毫秒爲單位�� ...
  package com.zhaopin; public class SortTest { static int data []={2,4,7,5,1,9,6,0,3,8}; public static void main(String args[]){ //sortDataByBubble(data); //冒牌排序 // sortDataBySelect(data); //選擇排序 // sortDataByInsert(data); //選擇排序 sortDataByShell(data,data.length); //選擇排序 prin ...
101、java中會存在內存泄漏嗎,請簡單描述。會。如:int i,i2;  return (i-i2);   //when i爲足夠大的正數,i2爲足夠大的負數。結果會造成溢位,導致錯誤。     102、java中實現多態的機制是什麼?方法的重寫Overriding和重載Overloading是Jav ...
71、簡述synchronized和java.util.concurrent.locks.Lock的異同?主要相同點:Lock能完成synchronized所實現的所有功能主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,並� ...
51、垃圾回收的優點和原理。並考慮2種回收機制。 Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內存管理。由於有個垃圾回� ...
11、HashMap和Hashtable的區別。  HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在於HashMap允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。 HashMap允許將null作爲一個entry的key或者value,而Hashtable不允許。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因爲contains方法容易讓人引起誤解。 Hashtable繼承自Dictionary類,而HashMap是Java1.2引 ...
1、String是最基本的數據類型嗎? 基本數據類型包括byte、int、char、long、float、double、boolean和short。 java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。爲了提高效率節省空間,我們應該用StringBuffer類     2、� ...
  import java.applet.Applet; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GraphicsConfiguration;   import javax.media.j3d.BoundingSphere; import javax.media.j3d.BranchGroup; import javax.media.j3d.Canvas3D; import javax.media.j3d.Geometry; import javax.media.j3d.G ...
打包成雙擊可執行的jar文件。 推薦插件:fatJar(Eclipse使用) 下載地址 http://sourceforge.net/project/showfiles.php?group_id=115990&package_id=125924 我用的是Eclipse,它自帶的打包方法在打包一些圖片等資源時不是很爽。可以使用這個插件。 安裝方法解壓後將plugins文件夾下的net.sf.fjep.fatjar_0.0.24文件夾拷到eclipse安裝目錄的plugins 下。 用此工具可以方便的將eclipse中的工程打包成jar文件。如果 ...
Java中方法的局部變量必須要初始化,否則不能使用和操作,   要是類數據成員(即字段)是基本類型,情況就會變得有些不同。類的每個基本類型數據成員保證都會有一個初始值。   在類裏定義一個對象引用時,如果不將其初始化,此引用就會獲得一個特殊值null。     初始化的順序規則, 1 自動初始化(編譯器自動爲數據成員賦值) 早於  構造器初始化(如果有的話) 2 在類的內部,變量定義的先後順序決定了初始化的順序,即使變量定義散佈於方法定義之間,他們仍舊會在任何方法(包括構造器)被調用之前得到初始化。   3 靜態數據的初始化:無論創建多少個對象,靜態數據只佔一份存儲空 ...
在static方法內部不能調用非靜態方法,反過來是可以的。   把一個對象用完之後就“棄之不顧”的做法並非總是安全的,由於垃圾回收期只知道釋放那些經由new分配的內存,所以它不知道如何釋放(並非使用new)內存區域。   記住3點: 1 對象可能不被垃圾回收。 2 垃圾回收不等於“析構”。 3 垃圾回收只於內存有關。   finalize()方法可以用來在清理對象前執行清理工作(主要是對特殊的情況(並非使用new分配的內存,即調用本地方法))
在構造其中可以用this調用一個構造器,但卻不能調用兩個。   此外,必須將構造器調用置於最起始處,否則編譯器會報錯。   除了構造器之外,編譯器禁止在其他任何方法中調用構造器。
return :兩方面的用途,一方面指定一個方法返回什麼值,另一方面他會導致當前的方法退出。   任何迭代語句的主體部分,都可以用break和continue控制循環流程。break用於強行退出循環,不執行循環中剩下的語句。而continue則停止執行當前的迭代,然會退回循環起始處,開始下一次的迭代。   注意:break和contiue只能中斷最內層的循環。當然,如果想在中斷循環的同時退出,簡單地用一個return即可。   Java中switch語句只能對 int 和 char 類型數據起作用。
按位操作符:   如果兩個輸入位都是1,則按位“與” 操作符(&)生成一個輸出位1;否則生成一個0;   如果兩個輸入位只有有一個是1,則按位“或” 操作符(|)生成一個輸出位1;否則,兩個都是0才生成一個0;   如果輸入位的某一個是1,但不全都是1,那麼按位“異或” 操作符(^)生成一個輸出位1;   "~"非 爲取反運算符;   移位操作符:   運算對象也是二進制的位。移位運算符只能用來處理整型。   左移位操作符(<<)能按照操作符右側指定的位數將操作符左邊的操作數向右移動。“有符號”右移位操作符使用“符號擴展”; ...
 使用邏輯操作符時,我們會遇到一種“短路現象”,即一旦能夠明確無誤地確定整個表達式的值,就不在計算表達式餘下部分了。所以,整個邏輯表達式靠後的部分有可能不會被運算。
基本類型存儲了實際的數值,而並非只想一個對象的引用,所以在爲其賦值的時候,是直接將一個地方的內容複製到了另一個地方。例如,對基本數據類型使用a=b,那麼b的內容就複製給a.若接着又修改了a,而b根本不會受這種修改的影響。   對一個對象賦值時,真正操作的是這個對象的引用。所以倘若“將一個對象賦值給另一個對象”,實際是將“引用”從一個地方複製到另一個地方。這意味着假若對對象使用c=d,那麼c和d都指向原本只有d指向的那個對象。  
  1 作用域決定了再起內定義的變量名(基本類型)的可見性和生命週期。   2 Java對象不具備和基本類型一樣的生命週期。當用new 創建一個Java對象時,它可以存活於作用域之外。如 { String s=new String("a string"); } 引用s在作用域終點已近消失了。然而,s只想的String隊形仍繼續佔據內存空間。   問題:如果JAVA讓對象繼續存在,那麼靠什麼才能防止這些對象填滿內容空間,進而阻塞你的程序呢? 答案:Java有一個垃圾回收器,用來監視用new創建的所有對象,並辨別那些不會再被引用的對象。隨後釋放那 ...
1 JAVA中一切都視爲對象,但操作的標識符實際上是對象的一個“引用”。如:String s; s是一個引用,並不是對象,它沒有和    任何事物相關聯。   2 存儲到什麼地方?   有5個不同的地方可以存儲數據:   (1)寄存器,最快的存儲區(在處理器內部)但是數量有限,所以寄存器根據需求進行分配。   (2)堆棧,位於通用RAM(隨機訪問存儲器)中,但通過堆棧指針可以從處理器那裏獲得直接支持。堆棧指針若向下移動,則分配新的內存,若向上移動,則釋放那些內存。這是一種快速有效的分配存儲方法,僅次於寄存器。創建程序時,JAVA系統必須知道存儲在堆棧內所有項得確切生命週期, ...
public class Test2{ public static void main(String [] args){ A a=new A(); B b=new B(); a.func(); b.func(); System.out.println("a.i="+a.i); System.out.println("b.i="+b.i); A c= new B(); c.func(); System.out.println("c.i="+c.i); } } class A { int i=1; ...
1   java中:         byte   1(字節)         short  2          int    4         long   8          float  4         double 8           char   2 2   System.out.println(3+5+&quot;a&quot;+6+7);輸出:8a67 3  開發與運行Java程序需要經過的三個主要步驟爲 編輯源程序、編譯生成字節碼 和 解釋運行字節碼。 4  interface只能用public修飾。 5   字節流轉換成字符流可以用InputStr ...
大家看下面的代碼 class A { public static void pri() { System.out.println("A"); } } public class B extends A { public static void pri() { System.out.println("B"); } public static void main(String[] args) { A a = new B(); a.pri(); } }   輸出結果是:   A ...
public class B { public int aMethod() { static int i = 0; i++; return i; }   上邊這個代碼的錯誤就是:類的實例方法中不能定義靜態變量。看看下面這面的 public class B { public static int aMethod() { static int i = 0; i++; return i; }  這個還是錯誤的。所以大家要記住:在類的實例方法和靜態方法中都不能定義靜態變量。那麼只能能定義靜態變量呢?   下面說一下具體原理:   只有類才存在靜 ...
發佈了114 篇原創文章 · 獲贊 15 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章