<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    konhon

    忘掉過去,展望未來。找回自我,超越自我。
    逃避不一定躲的過, 面對不一定最難過, 孤單不一定不快樂, 得到不一定能長久, 失去不一定不再擁有, 可能因為某個理由而傷心難過, 但我卻能找個理由讓自己快樂.

    Google

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks

    #

    Java修飾詞的總結

    作者:jackliu
    e-mail:suntoday@eyou.com

    Java語言定義了public、protected、private、abstract、static和final這6常用修飾
    詞外還定義了5個不太常用的修飾詞,下面是對這11個Java修飾詞的介紹:

    1.public

    使用對象:類、接口、成員

    介紹:無論它所處在的包定義在哪,該類(接口、成員)都是可訪問的

    2.private

    使用對象:成員

    介紹:成員只可以在定義它的類中被訪問

    3.static

    使用對象:類、方法、字段、初始化函數

    介紹:成名為static的內部類是一個頂級類,它和包含類的成員是不相關的。靜態方法
    是類方法,

    是被指向到所屬的類而不是類的實例。靜態字段是類字段,無論該字段所在的類創建了
    多少實例,該字

    段只存在一個實例被指向到所屬的類而不是類的實例。初始化函數是在裝載類時執行
    的,而不是在創建

    實例時執行的。

    4.final

    使用對象:類、方法、字段、變量

    介紹:被定義成final的類不允許出現子類,不能被覆蓋(不應用于動態查詢),字段值
    不允許被

    修改。

    5.abstract

    使用對象:類、接口、方法

    介紹:類中包括沒有實現的方法,不能被實例化。如果是一個abstract方法,則方法體
    為空,該方

    法的實現在子類中被定義,并且包含一個abstract方法的類必須是一個abstract類

    6.protected

    使用對象:成員

    介紹:成員只能在定義它的包中被訪問,如果在其他包中被訪問,則實現這個方法的類
    必須是該成

    員所屬類的子類。

    7.native

    使用對象:成員

    介紹:與操作平臺相關,定義時并不定義其方法,方法的實現被一個外部的庫實現。

    8.strictfp

    使用對象:類、方法

    介紹:strictfp修飾的類中所有的方法都隱藏了strictfp修飾詞,方法執行的所有浮點
    計算遵守

    IEEE 754標準,所有取值包括中間的結果都必須表示為float或double類型,而不能利用
    由本地平臺浮

    點格式或硬件提供的額外精度或表示范圍。

    9.synchronized

    使用對象:方法

    介紹:對于一個靜態的方法,在執行之前jvm把它所在的類鎖定;對于一個非靜態類的方
    法,執行

    前把某個特定對象實例鎖定。

    10.volatile

    使用對象:字段

    介紹:因為異步線程可以訪問字段,所以有些優化操作是一定不能作用在字段上的。
    volatile有時

    可以代替synchronized。

    11.transient

    使用對象:字段

    介紹:字段不是對象持久狀態的一部分,不應該把字段和對象一起串起。
    posted @ 2005-12-19 22:41 konhon 優華 閱讀(550) | 評論 (0)編輯 收藏

    將Java應用程序本地編譯為EXE的幾種方法
    將Java應用程序本地編譯為EXE的幾種方法(推薦使用JOVE和JET)
    1. 從www.towerj.com獲得一個TowerJ編譯器,該編譯器可以將你的CLASS文件編譯成EXE文件。
    2. 利用微軟的SDK-Java 4.0所提供的jexegen.exe創建EXE文件,這個軟件可以從微軟的網站免費下載,地址如下:
    http://www.microsoft.com/java/download/dl_sdk40.htm
    jexegen的語法如下:
    jexegen /OUT:exe_file_name
    /MAIN:main_class_name main_class_file_name.class
    [and other classes]
    3. Visual Cafe提供了一個能夠創建EXE文件的本地編譯器。你需要安裝該光盤上提供的EXE組件。
    4. 使用InstallAnywhere創建安裝盤。
    5. 使用IBM AlphaWorks提供的一個高性能Java編譯器,該編譯器可以從下面的地址獲得:
    http://www.alphaworks.ibm.com/tech/hpc
    6. JET是一個優秀的Java語言本地編譯器。該編譯器可以從這個網站獲得一個測試版本: http://www.excelsior-usa.com/jet.html
    7. Instantiations公司的JOVE
    http://www.instantiations.com/jove/...ejovesystem.htm
    JOVE公司合并了以前的SuperCede,一個優秀的本地編譯器,現在SuperCede 已經不復存在了。
    8. JToEXE
    Bravo Zulu Consulting, Inc開發的一款本地編譯器,本來可以從該公司的網頁上免費下載的,不過目前在該公司的主頁上找不到了。
    主頁:http://www.bravozulu.com/
    根據精華區中的資料,下面這個FTP上曾經有過這個軟件,不知道現在是不是還在:
    ftp://race.dlut.edu.cn/pub/java/tools/jet
    注:本文的主要內容來自如下網站,本人對其中的技術性內容進行了確認并補
    充了一小部分內容。 (tack)
    http://www.artima.com/legacy/answer...ssages/190.html
    posted @ 2005-12-19 22:19 konhon 優華 閱讀(527) | 評論 (0)編輯 收藏

    Download Shutdown.exe

    C:\shutdown.exe /r /t 10 /c "釋放內存..." /f
    重啟本機

    C:\shutdown.exe /r /t 10 /c "釋放內存..." /f /m \\konhon
    重啟遠程電腦


    posted @ 2005-12-14 20:05 konhon 優華 閱讀(506) | 評論 (0)編輯 收藏

     
    winexec(Pchar('StrCommand'),sw_Show);
    其中"StrCommand"代表以下命令之一(使用Windows中的運行不要加引號):
    "rundll32 shell32,Control_RunDLL" - 運行控制面板
    "rundll32 shell32,OpenAs_RunDLL" - 打開"打開方式"窗口
    "rundll32 shell32,ShellAboutA Info-Box" - 打開"關于"窗口
    "rundll32 shell32,Control_RunDLL desk.cpl" - 打開"顯示屬性"窗口
    "rundll32 user,cascadechildwindows" - 層疊全部窗口
    "rundll32 user,tilechildwindows" - 最小化所有的子窗口
    "rundll32 user,repaintscreen" - 刷新桌面
    "rundll32 shell,shellexecute Explorer" - 重新運行Windows Explorer
    "rundll32 keyboard,disable" - 鎖寫鍵盤
    "rundll32 mouse,disable" - 讓鼠標失效
    "rundll32 user,swapmousebutton" - 交換鼠標按鈕
    "rundll32 user,setcursorpos" - 設置鼠標位置為(0,0)
    "rundll32 user,wnetconnectdialog" - 打開"映射網絡驅動器"窗口
    "rundll32 user,wnetdisconnectdialog" - 打開"斷開網絡驅動器"窗口
    "rundll32 user,disableoemlayer" - 顯示BSOD窗口, (BSOD) = Blue Screen Of
    Death, 即藍屏
    "rundll32 diskcopy,DiskCopyRunDll" - 打開磁盤復制窗口
    "rundll32 rnaui.dll,RnaWizard" - 運行"Internet連接向導",
    如果加上參數"/1"則為silent模式
    "rundll32 shell32,SHFormatDrive" - 打開"格式化磁盤(A)"窗口
    "rundll32 shell32,SHExitWindowsEx -1" - 冷啟動Windows Explorer
    "rundll32 shell32,SHExitWindowsEx 1" - 關機
    "rundll32 shell32,SHExitWindowsEx 0" - 退當前用戶
    "rundll32 shell32,SHExitWindowsEx 2" Windows9x 快速重啟
    "rundll32 krnl386.exe,exitkernel" - 強行退出Windows 9x(無確認)
    "rundll rnaui.dll,RnaDial "MyConnect" - 運行"網絡連接"對話框
    "rundll32 msprint2.dll,RUNDLL_PrintTestPage" - 選擇打印機和打印測試頁
    "rundll32 user,setcaretblinktime" - 設置光標閃爍速度
    "rundll32 user, setdoubleclicktime" - 測試鼠標雙擊速度
    "rundll32 sysdm.cpl,InstallDevice_Rundll" - 搜索非PnP設備
     控制面板中的各項功能

     winexec('rundll32.exe shell32.dll, Control_RunDLL', 9);
     {輔助選項 屬性-鍵盤}
     winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 1', 9);
     {輔助選項 屬性-聲音}
     winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 2', 9);
     {輔助選項 屬性-顯示}
     winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 3', 9);
     {輔助選項 屬性-鼠標}
     winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 4', 9);
     {輔助選項 屬性-常規}
     winexec('rundll32.exe shell32.dll, Control_RunDLL access.cpl, 5', 9);
     {添加/刪除程序 屬性-安裝/卸載}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 1', 9);
     {添加/刪除程序 屬性-Windows安裝程序}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 2', 9);
     {添加/刪除程序 屬性-啟動盤}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Appwiz.cpl, 3', 9);
     {顯示 屬性-背景}
     winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 0', 9); 
     {顯示 屬性-屏幕保護程序}
     winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 1', 9);
     {顯示 屬性-外觀}
     winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 2', 9);
     {顯示 屬性-設置}
     winexec('rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 3', 9);
     {Internet 屬性-常規}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 0',
    9);
     {Internet 屬性-安全}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 1',
    9);
     {Internet 屬性-內容}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 2',
    9);
     {Internet 屬性-連接}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 3',
    9);
     {Internet 屬性-程序}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 4',
    9);
     {Internet 屬性-高級}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl, 5',
    9);
     {區域設置 屬性-區域設置}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 0', 9);
     {區域設置 屬性-數字}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 1', 9);
     {區域設置 屬性-貨幣}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 2', 9);
     {區域設置 屬性-時間}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 3', 9);
     {區域設置 屬性-日期}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Intl.cpl, 4', 9);
     
     winexec('rundll32.exe shell32.dll, Control_RunDLL Joy.cpl, 0', 9);


    winexec('rundll32.exe shell32.dll, Control_RunDLL Joy.cpl, 1', 9);
     {鼠標 屬性}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Main.cpl', 9);
     {多媒體 屬性-音頻}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 0', 9);
     {多媒體 屬性-視頻}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 1', 9);
     {多媒體 屬性-MIDI}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 2', 9);
     {多媒體 屬性-CD音樂}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 3', 9);
     {多媒體 屬性-設備}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl, 4', 9);
     {調制解調器 屬性}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Modem.cpl', 9);
     
     winexec('rundll32.exe shell32.dll, Control_RunDLL Netcpl.cpl', 9);
     {密碼 屬性}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Password.cpl', 9);
     {掃描儀與數字相機 屬性}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Sticpl.cpl', 9);
     {系統 屬性-常規}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 0', 9);
     {系統 屬性-設備管理器}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 1', 9);
     {系統 屬性-硬件配置文件}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 2', 9);
     {系統 屬性-性能}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Sysdm.cpl, 3', 9);
     {日期/時間 屬性}
     winexec('rundll32.exe shell32.dll, Control_RunDLL timedate.cpl', 9);
     {電源管理 屬性}
     winexec('rundll32.exe shell32.dll, Control_RunDLL Powercfg.cpl', 9);
     
     winexec('rundll32.exe shell32.dll, Control_RunDLL Telephon.cpl', 9);
    關于調用后的判斷處理建議:
    先聲明一個cardinal類型的變量RtnCardinal獲取返回值進行判斷如:
    RtnCardinal := winexec('rundll32.exe shell32.dll, Control_RunDLL
    Telephon.cpl', 9);
     返回值 可能原因
     0 程序超出內存 
    ERROR_BAD_FORMAT 程序為一個非法的Win32.EXE程序
    ERROR_FILE_NOT_FOUND 指定文件沒找到 
    ERROR_PATH_NOT_FOUND 指定路徑沒找到

    使用方法:
    點擊“開始-程式-Ms-Dos方式”,進入Dos視窗,然後鍵入"rundll32.exe
    user.exe,restartwindows",再按下回車鍵,這時你將看到,機器被重啟了!怎么樣,是不是很有趣?
      當然,Rundll的功能絕不僅僅是重啟你的機器。其實,Rundll者,顧名思義,執行Dll也,它的功能就是以命令列的方式呼叫Windows的動態鏈結庫,Rundll32.exe與Rundll.exe的區別就在於前者是呼叫32位的鏈結庫,而後者是運用於16位的鏈結庫,它們的命令格式是:
      RUNDLL.EXE ,,
      這里要注意三點:1.Dll檔案名中不能含有空格,比如該檔案位於c:Program
    Files目錄,你要把這個路徑改成c:Progra~1;2.Dll檔案名與Dll入口點間的逗號不能少,否則程式將出錯并且不會給出任何資訊!3.這是最重要的一點:Rundll不能用來呼叫含返回值參數的Dll,例如Win32API中的GetUserName(),GetTextFace()等。在Visual
    Basic中,提供了一條執行外部程式的指令Shell,格式為:
      Shell “命令列”
      如果能配合Rundll32.exe用好Shell指令,會使您的VB程式擁有用其他方法難以甚至無法實現的效果:仍以重啟為例,傳統的方法需要你在VB工程中先建立一個模組,然後寫入WinAPI的聲明,最後才能在程式中呼叫。而現在只需一句:
      Shell “rundll32.exe
    user.exe,restartwindows”就搞定了!是不是方便多了?
      實際上,Rundll32.exe在呼叫各種Windows控制面板和系統選項方面有著獨特的優勢。下面,我就將本人在因特網上收集的有關Rundll的指令列舉如下(很有用的,能省去你很多呼叫Windows
    API的時間!!),供大家在程式設計中引用:
      命令列: rundll32.exe shell32.dll,Control_RunDLL
      功能: 顯示控制面板
      命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
      功能: 顯示“控制面板-輔助選項-鍵盤”選項視窗
      命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
      功能: 顯示“控制面板-輔助選項-聲音”選項視窗
      命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
      功能: 顯示“控制面板-輔助選項-顯示”選項視窗
      命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
      功能: 顯示“控制面板-輔助選項-滑鼠”選項視窗
      命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
      功能: 顯示“控制面板-輔助選項-傳統”選項視窗
      命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
      功能: 執行“控制面板-添加新硬體”向導。
      命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
      功能: 執行“控制面板-添加新印表機”向導。
      命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
      功能: 顯示 “控制面板-添加/刪除程式-安裝/卸載” 面板。
      命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
      功能: 顯示 “控制面板-添加/刪除程式-安裝Windows” 面板。
      命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
      功能: 顯示 “控制面板-添加/刪除程式-啟動盤” 面板。
      命令列: rundll32.exe syncui.dll,Briefcase_Create
      功能: 在桌面上建立一個新的“我的公文包”。
      命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll
      功能: 顯示復制軟碟視窗
      命令列: rundll32.exe apwiz.cpl,NewLinkHere %1
      功能:
    顯示“建立快捷方式”的對話框,所建立的快捷方式的位置由%1參數決定。
      命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
      功能: 顯示“日期與時間”選項視窗。


    命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
      功能: 顯示“時區”選項視窗。
      命令列: rundll32.exe rnaui.dll,RnaDial [某個撥號連接的名稱]
      功能:
    顯示某個撥號連接的撥號視窗。如果已經撥號連接,則顯示目前的連接狀態的視窗。
      命令列: rundll32.exe rnaui.dll,RnaWizard
      功能: 顯示“新建撥號連接”向導的視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
      功能: 顯示“顯示屬性-背景”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
      功能: 顯示“顯示屬性-螢屏保護”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
      功能: 顯示“顯示屬性-外觀”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
      功能: 顯示顯示“顯示屬性-屬性”選項視窗。
      命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
      功能: 顯示Windows的“字體”檔案夾。
      命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
      功能: 同樣是顯示Windows的“字體”檔案夾。
      命令列: rundll32.exe shell32.dll,SHformatDrive
      功能: 顯示格式化軟碟對話框。
      命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0
      功能: 顯示“控制面板-游戲控制器-一般”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1
      功能: 顯示“控制面板-游戲控制器-進階”選項視窗。
      命令列: rundll32.exe mshtml.dll,PrintHTML (HTML文檔)
      功能: 列印HTML文檔。
      命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
      功能: 顯示Microsoft Exchange一般選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
      功能: 顯示“控制面板-滑鼠” 選項 。
      命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
      功能: 顯示 “控制面板-鍵盤屬性-速度”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1
      功能: 顯示 “控制面板-鍵盤屬性-語言”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
      功能: 顯示Windows“印表機”檔案夾。
      命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
      功能: 顯示Windows“字體”檔案夾。
      命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
      功能: 顯示“控制面板-輸入法屬性-輸入法”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
      功能: 執行“添加新調制解調器”向導。
      命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
      功能: 顯示“控制面板-多媒體屬性-音頻”屬性頁。
      命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
      功能: 顯示“控制面板-多媒體屬性-視頻”屬性頁。
      命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
      功能: 顯示“控制面板-多媒體屬性-MIDI”屬性頁。
      命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
      功能: 顯示“控制面板-多媒體屬性-CD音樂”屬性頁。
      命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
      功能: 顯示“控制面板-多媒體屬性-設備”屬性頁。
      命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
      功能: 顯示“控制面板-聲音”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
      功能: 顯示“控制面板-網路”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl
      功能: 顯示ODBC32資料管理選項視窗。
      命令列: rundll32.exe shell32.dll,OpenAs_RunDLL
    功能: 顯示指定檔案(drive:pathfilename)的“打開方式”對話框。
      命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl
      功能: 顯示“控制面板-密碼”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl
      功能: 顯示“控制面板-電源管理屬性”選項視窗。
      命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL
    PrintersFolder
      功能: 顯示Windows“印表機”檔案夾。(同rundll32.exe
    shell32.dll,Control_RunDLL main.cpl @2)
      命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
      功能: 顯示“控制面板-區域設置屬性-區域設置”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
      功能: 顯示“控制面板-區域設置屬性-數字”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
      功能: 顯示“控制面板-區域設置屬性-貨幣”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
      功能: 顯示“控制面板-區域設置屬性-時間”選項視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
      功能: 顯示“控制面板-區域設置屬性-日期”選項視窗。
      命令列: rundll32.exe desk.cpl,InstallScreenSaver [螢屏保護檔案名]
      功能:
    將指定的螢屏保護檔案設置為Windows的屏保,并顯示螢屏保護屬性視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
      功能: 顯示“控制面板-系統屬性-傳統”屬性視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
      功能: 顯示“控制面板-系統屬性-設備管理器”屬性視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
      功能: 顯示“控制面板-系統屬性-硬體配置檔案”屬性視窗。
      命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
      功能: 顯示“控制面板-系統屬性-性能”屬性視窗。
      命令列: rundll32.exe user.exe,restartwindows
      功能: 強行關閉所有程式并重啟機器。
      命令列: rundll32.exe user.exe,exitwindows
      功能: 強行關閉所有程式并關機。
      命令列: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl
      功能: 顯示“撥號屬性”選項視窗
      命令列: rundll32.exe shell32.dll,Control_RunDLL themes.cpl
      功能: 顯示“桌面主旨”選項面板
      當然,不止是VisualBasic,象Delphi.VisualC++等其他程式設計語言也可以通過呼叫外部命令的方法來使用Rundll的這些功能,具體方法這里就不再詳細敘述了。靈活的使用Rundll,一定會使你的程式設計輕輕松松,達到事半功倍的效果
    posted @ 2005-12-14 19:04 konhon 優華 閱讀(750) | 評論 (0)編輯 收藏

    6.你以前的經驗和我們現在的工作有哪些聯系?

      分析:這個提問要求你在與其它求職者進行比較時,你要克服你背景中顯示出來的任何弱點。

      回答對策:首先要介紹你的優勢。假如其它求職者明顯地比你受的教育多,工作經驗多或知識多,那么你就要介紹你的優勢。

      回答樣板1:“如你所知,我剛剛結束電腦編程方面的加強培訓。另外,我在企業方面有三年多的工作經驗,其中包括在老板不在時管理小型企業。我在那學會了處理財務及基本的會計工作。我還盤算和管理過價值30萬美元的產品。這些經歷幫我認識企業使用電腦編程的作用。雖然我剛接觸編程工作,我對電腦語言是熟悉的。我受的教育是全面的,我有300多個小時的電腦操作時間,這是我課程的一部分。因為我是新手,我決心比別人更努力地工作,以便及時完成任務。”

      評語:這種回答強調了可轉換性的技能(會計工作知識)和適應性技能(按時完成任務,更努力工作)。這對缺乏工作經驗的程序員來說是必要的。在這種情況下,在學校學的知識也非常重要,也要像“正式”工作那樣予以強調。

      回答樣板2:“在以前的工作中,我使用過很多與做好這項工作所需要的相同的技術。盡管是不同的企業,但管理企業都需要有我具有的組織和監督能力。在過去的七年里,我使我的部門成為我們公司最贏利的部門之一。在我工作期間,每年銷售額平均上升30%,利潤也提高30%。由于這是個老公司,這樣的業績是很不一般的,七年中我得到兩次晉升,并很快地榮升到管理層。我想在你們這樣小的、發展型公司接受挑戰,我感到我的經驗為我走向這一步做好了準備。”

      評語:回答者明白以前的工作領域與現在考慮的不同,但是,他強調了成績和以前的成功。為完成這項工作,各種管理技術都會用到。回答中還談到繼續接受小公司工作挑戰的動力。

      7.你對以后有什么打算?

      分析:這個問題是在考察你的工作動機。它是在探究是否可以信賴你把工作長久地干下去,而且干得努力。

      回答對策:你最好的對策就是誠實。這是一貫強調的。我并非是要你把負面的信息也擺出來,你應該準備坦率地、正面地回答雇主關心的問題。而哪些是雇主關心的問題取決于你介紹個人背景的具體情況。

      例如:

      -你對工作滿意嗎?(如果不滿意你會離開公司嗎?)

      -你想成家嗎?(如果成家,你會停職去照料小孩嗎?)

      -你是否有過短期工作后離開的歷史?(如果有,你會不會也放棄這份工作呢?)

      -你是否剛搬到此地,是臨時的或暫住人口?(如果是,你也不會在此地久居,對嗎?)

      -你是否有比本工作要求更好的條件?(如果是,是什么使你不去高就呢?)

      -你有什么優勢和承諾在工作中發展嗎?(如果不是,誰需要一個沒有優勢和動力的人呢?)

      -有什么原因使你感到不滿嗎?(如果有,雇主自然會設法搞清楚。)

      回答樣板1:對于一個剛剛參加工作的人,他可以這樣回答:

      “我認識到要在這一領域造就自己,我很愿意從此開始。我想過我要做什么,而且肯定我的技能正是做好這項工作所需要的。例如,我善于與人打交道。在我過去的一項工作中,我每周向1000多名不同的人提供服務。在我18個月的工作中,我曾為72000多名顧客提供服務,從未得到一次正式的投訴。事實上,他們常因我的周到服務表揚我。我認識到我喜歡與公眾接觸,想到我能得到這份工作感到非常愉快。我想在工作中更好地學習,并與之共同進步。由于我對公司的貢獻和價值不斷提高,我希望能考慮使我得到更有責任的職務。”

      評語:雇主想了解你會長期工作下去并努力工作。這樣的回答使對此表示關注的雇主感到安慰。(注意,這樣的回答可以在快餐店工作獲得的經驗為背景。)

      回答樣板2:對沒有工作經驗和只有各種短期工作經驗的人,他們可以這樣回答:

      “我做過幾種工作(一種或失業),我認識到應該珍視體面的、穩定的工作。我的各種經驗是一種財富,我學到很多東西,我可以把它們用于這項工作中去。我正在尋找一份可以安定下來,努力工作并持久下去的工作。”

      評語:這是一種可以接受的回答,只是回答太短,也沒有提供證據。介紹自己的實例最好放在最后一句話之前。有些職務,如銷售方面的工作,要求你有勃勃雄心,或者說是咄咄勇氣。其它工作有對工作領域或專門機構的要求。你不會總能預料到雇主想要什么。如果你能正確地做,你就會具有任何工作要求的條件,而這一切只需要你用嘴講出來,就是這么簡單。
    posted @ 2005-12-14 03:55 konhon 優華 閱讀(522) | 評論 (0)編輯 收藏

    8.你以前的雇主(教師、介紹人、管理員等)對你的評價如何?

      分析:這個問題與雇主的第二種期望有關。雇主想知道你的適應性技能--你是否容易相處,你是否是個好工人等等。你以前的雇主可能會談到你存在的問題,當然,也可能不談。你知道,許多雇主會在雇用你之前查閱你的證明信,如果你在面談時談的與你以前的雇主說的不一樣,你就要倒霉了。

      回答對策:一定要與你以前的雇主討論你的求職計劃,也要征求你介紹人的意見。要明確地告訴他們你想找的工作種類以及你準備做好新工作的理由。假如以前的雇主會說一些不利于你的話,你要和他開誠布公地談談,看他會說寫什么。

      如果你是被解雇或被迫辭職的,你可以向未來的雇主進行辯解。有很多成功的人與前雇主發生過沖突,如果能把這些沖突盡可能地講出來,許多面談者是會理解的。對和你關系不好的舊雇主,明智的辦法是請他寫一份文字證明材料,在這種情況下,他們不會給你極為不利的信。大的公司一般不接受電話提供證明材料,這可以使你大大地松一口氣,只要給公司打個電話就清楚了。

      如果可能的話,使用那些說你好話的證明信。要是你的前任老板不愿這么做,找個愿意幫忙你的人便行了。如果你被解雇了,最好的對策是實話實說。但是對你的前任老板不要太苛刻,這樣會讓人覺得你是個好抱怨而無責任感的人。再者,你也不是一點錯也沒有。要先承認有這么回事,接著要趁機談談你從中得到的教訓。

      回答樣板:“我的三個前雇主都會說我工作努力,可靠、忠實,我離開那里是因為個人沖突。為此我深深地感到煩惱,只有放棄那里的工作。你可以給他們打電話,他們對我的評價是肯定。我認為還是向你們談談為好,我仍然尊敬他。我在那得到了幾次晉升的機會,但是,隨著我權力的增加,沖突也越發地多起來。我們主要是不同類型的人。我不知道問題會有那么嚴重,因為我一心只想工作。這是我的錯,我認識到我應該更加注意人際關系的處理。”

      評語:回答中介紹了一些正面的技能,并用具體事例加以說明,因而是有力的。

      9.你為什么要找這樣的職位?為什么是在這里

      分析:雇主想了解是否你是那種無論什么公司有活就行的人。果真如此,他或她就不會對你感興趣。雇主想找那種想解決工作中問題的人。他們有理由認為這樣的人工作起來更努力,更有效率,而那些想去特別的公司工作的人也是如此。

      回答對策:事先了解哪些工作適合你的技能和興趣非常重要。要回答這個問題,就要談到你選擇工作目標的動機,那項工作要求的而你又具備的技能,各種專門培訓,或與職務有關的教育證書。

      這個問題實際上有兩方面的含意。一是為什么選擇這個職位,二是為什么選擇這個公司。如果你有選擇這個公司的理由,或選擇這個公司是你最大愿望,你就要準備回答為什么。如果可能的話,在面談前,你要事先盡可能地對它進行了解。與別人聯系得到詳細的情報,或到圖書館查閱,看公司的年度報告,或任何能使你了解情況的方法都是必要的。

      回答樣板:“我花費了很多時間考慮各種職業的可能性,我認為這方面的工作最適合我,原因是這項工作要求的許多技能都是我擅長的。舉例來說,分析問題和解決問題是我的強項,在以前的工作中我能比別人更早發現和解決問題。有一次,我提出一項計劃使得租借設備的退貨率減少了15%,這聽起來不算高,但是取得了年增長25000美元的好效益。而成本僅為100美元。目前你們公司似乎是能讓我施展解決問題能力的地方。這個公司工作運行良好,發展迅速,善于接受新思想。你們的銷售去年上漲了30%,而且你們準備引進幾項大型新產品。如果我在這里努力工作,證實我自身的價值,我感到我有機會與公司共同發展。

      評語:這種回答巧妙地運用了“提供證據”技巧,這樣的話符合一個出色的經理或優秀的秘書的身份。

      10.為什么不講一講你個人的情況?

      分析:一個好的面談者很少這樣直接地提出這個問題,通過隨意的、友好的談話也可以得到想了解的情況。在大多數情況下,面談者會竭力地打探證明你不穩定或不可靠的信息。

      回答對策:還有其它一些可能使某個雇主關注的問題,以上問題只是對某些性格的人的推測。這都是些不相關的問題,但是,如果雇主想以此來了解你可否可靠,你就得全力以赴地去應付了。要記住即使是隨意地閑談也要避免提及隱晦的問題。在回答個人情況時,要態度友好而且自信。

      回答樣板:

      有小孩子的家:“我有兩個小孩,都在上學。他們和我的一個好朋友在一起,照料孩子不成問題。”

      一人主家:“我沒有結婚,但是我有兩個孩子。對我來說有一份穩定的收入很重要,照料孩子不成為問題。”

      年輕、單身:“我沒有結婚,即使結婚,我也不會改變做專職工作的打算,我可以把全部精力用在工作上。”

      新搬來的:“我決定在DepressionCulch長期居住下來,我租了一套公寓,搬家公司的六輛車正在卸家俱。”

      撫養人:“我有個愉快的童年,我父母住的地方離我只需一小時飛機的路程,我一年去看他們幾次。”

      閑暇時間:“在我不去上班時,我主要呆在家里。我愛參加社區組織的活動,我每周都要在教堂參加活動。”

      評語:上述回答都可以擴展開,可以做為你回答問題時的參考。這里要告訴面談者的是你個人的情況不影響你的工作能力,而且,確實還能對你有幫助。如果你的個人生活會擾亂你的工作,想必雇主也會很快對你失去耐心的。這不是他們的問題,也不應該成為他們的問題。

    posted @ 2005-12-14 03:54 konhon 優華 閱讀(514) | 評論 (0)編輯 收藏

    在面試前先了解、練習對幾個很難的問題進行回答會幫助你對其他問題的回答做準備。有的問題問得比較多,有的較少但卻是回答其它問題的基礎。

      1.為什么不談談你自己?

      分析:這是個開放性問題。從哪里談起都行,但是滔滔不絕地講上一兩個小時可不是雇主所希望的。這樣的問題是測驗你是否能選擇重點并且把它清楚、流暢地表達出來。顯然,提問者想讓你把你的背景和想要得到的位置聯系起來。

      回答對策:有幾個基本的方法。一個是直接簡要回答所問的問題,另一個是在回答前要求把問題問得更明確。在上述兩種情況下,你都要很快地把你的答案轉到你的技能、經驗和你為得到目前這份工作接受的培訓上來。

      回答樣板:“我來自一個小家庭,有一個弟弟,父母都還在工作。中學畢業后,我攻讀市場營銷學士。日間在一家商業機構擔任行銷執行員,學了不少管理方面的知識。例如,我全權負責的一個批發銷售公司的業務,銷售總額一年為200萬美元。在那里我學習到怎么管理人事,在壓力下解決問題。我希望能更好的運用我的技能。我相信我的經驗和學歷將讓我迎向未來更大的挑戰。”

      評語:只簡單的介紹了個人歷史,很快的將重點話題轉到與工作有關的技能和經驗上來。你也可請面談者把他確實想了解的東西集中到一點,如你可問:“你是不是想知道我受過的教育,或者與工作有關的技術和經驗?”等,大多雇主都會樂意告訴你他們感興趣的是什么?

      2.我為什么要雇用你?

      分析:這是個直接、正面的問題,盡管這個問題不會問得這樣明確,但是會在其它問題之后被提出來,這個問題沒有隱含的意思。

      回答對策:直接的問題需要直接了當回答,為什么他們要雇用你呢?最巧妙的回答對他們而不是對你有利。這個問題會使你向他們提供證據以證實你可以幫助他們改進工作效率,降低成本、增加銷售、解決問題(如準時上班,改進對顧客的服務、組織一個或多個管理工作等)。

      回答樣板:“我是個經驗豐富的經理,在員工隊伍建設方面,從組織項目的實施到鼓勵員工合作,我得心應手。多年來,我已經掌握了一套雇人和留人的技巧。此外,我還擅長幫助公司順利實現技術改造和員工培訓。我經常對主要客戶進行示范講解,我們的銷售額在過去兩年平均增加了87%。”

      評語:在回答中,以實例提供有力的證據,直接而自信地推銷自己。

      3.你有哪些主要的優點?

      分析:像前面問題一樣,這個問題問得相當直接,但是有一點隱含。

      回答對策:你的回答應當首先強調你適應的或已具有的技能。雇用你的決定在很大程度上取決于這些技能,你可以在后面詳細介紹你與工作有關的技能。回答時,一定要簡單扼要。

      回答樣板:“我具有朝著目標努力工作的能力。一旦我下定決心做某事,我就要把它做好,例如,我的志愿是成為一個出色的公關經理,我喜歡接觸不同的人,服務人群,為了實現這個目標。我目前正在修讀有關課程。”

      評語:如“我的學習能力、適應能力很強。”“人際關系很好”等都是可提出的優點,但盡可能要提供與工作相關的證據,這會使你與眾不同。

      4.你有哪些主要的缺點?

      分析:這是個棘手的問題。若照實的回答,你會毀了工作,雇主試圖使你處于不利的境地,觀察你在類似的工作困境中將作出什么反應。

      回答對策:回答這樣的問題應誠實。完滿地回答應該是用簡潔正面的介紹抵消反面的問題。

      回答樣板1:“工人們指責我對工作太投入。我經常提前一點上班安排好我的工作,晚上晚一點下班,使要干的事得以完成。”

      回答樣板2:“我需要學會更耐心一點。我的性子比較急,我總要我的工作趕在第一時間完成。我不能容忍工作怠慢。”

      評語:回答的雖是自身的缺點,但卻表現了正面的效果,對工作的積極抵消了反面。

      5.你想得到的薪水是多少?

      分析:如果你對薪酬的要求太低,那顯然貶低自己的能力;如果你對薪酬的要求太高,那又會顯得你分量過重,公司受用不起。一些雇主通常都事先對求聘的職位定下開支預算,因而他們第一次提出的價錢往往是他們所能給予的最高價錢。他們問你只不過想證實一下這筆錢是否足以引起你對該工作的興趣。

      回答對策:在商談薪酬之前,你已經調查了解了自己所從事工作的合理的市場價值。在與對方商談時,不妨盡可能插入“合理的和市場價值”語匯。記得,商談時降低原來的開價輕而易舉,但一旦開出低價后想再提上去就難乎其難。

      回答樣板1:如果你尚未徹底表現自我價值,面試者就提此問題考你,你不妨參考以下答案:

      “錢不是我唯一關心的事。我想先談談我對貴公司所能做的貢獻--如果您允許的話。”

      “我對工資沒有硬性要求。我相信貴公司在處理我的問題上會友善合理。我注重的是找對工作機會,所以只要條件公平,我則不會計較太多。”

      回答樣板2:如果你已經闡明該職位的重要性,可是對方仍舊告訴你給你的報酬已是最好的。您不妨指出它的工作性質實際上值得你獲得更高的報酬;闡明你將如何通過努力縮減公司的開支;說明在工作中你得自我承擔哪些費用等,以證明你對公司的價值,和表明你要求更高報酬是以你的工作表現為前提的。但是如果對方不愿妥協,在你未得到肯定的工作答復之前,不要使雇主排除對你的考慮。你可以問:‘你們決定雇用我了嗎?”如果答案是肯定的,報酬卻使你不愿接受,你可以這樣拒絕:

      “謝謝你給我提供工作機會。這個職位我很想的到,但是,工資比我想要的低,這是我無法接受這份工作的原因之一。也許你會重新考慮,或者以后能有使我對你們更有價值的工作時再考慮我。”

      評語:即使拒絕對方,也要為協商留有余地。如果雇主需要你,他會樂于滿足你的要求。一旦你對他們提出的標準說“不”,交易就做不成了.

    posted @ 2005-12-14 03:53 konhon 優華 閱讀(511) | 評論 (0)編輯 收藏

     

    方法一:
    public static String Conversion(String s)
    throws IOException
    {
    String s1 
    = new String();
    String s2 
    = new String();
    byte abyte0[] = s.getBytes("Unicode");
    for(int j = 2; j < abyte0.length; j += 2)
    {
    String s3 
    = Integer.toHexString(abyte0[j + 1]);
    int i = s3.length();
    if(i < 2)
    s1 
    = s1 + "&#x" + "0" + s3;
    else
    s1 
    = s1 + "&#x" + s3.substring(i - 2);
    s3 
    = Integer.toHexString(abyte0[j]);
    = s3.length();
    if(i < 2)
    s1 
    = s1 + "0" + s3 + ";";
    else
    s1 
    = s1 + s3.substring(i - 2+ ";";
    }


    return s1;
    }

    方法二:
    public static String enCode(String str)
       
    {
        
       
    if(str==null)return "";
       String hs
    ="";

       
    try
       
    {
       
    byte b[]=str.getBytes("UTF-16");
       
    //System.out.println(byte2hex(b));
       for (int n=0;n<b.length;n++)
       
    {
       str
    =(java.lang.Integer.toHexString(b[n] & 0XFF));
       
    if (str.length()==1)
       hs
    =hs+"0"+str;
       
    else
       hs
    =hs+str;
       
    if (n<b.length-1)hs=hs+"";
       }

       
    //去除第一個標記字符
       str= hs.toUpperCase().substring(4);
       
    //System.out.println(str);
       char[] chs=str.toCharArray();
       str
    ="";
       
    for(int i=0;i<chs.length;i=i+4)
       
    {
       str
    +="&#x"+chs[i]+chs[i+1]+chs[i+2]+chs[i+3]+";";
       }

       
    return str;
       }

       
    catch(Exception e)
       
    {
       System.out.print(e.getMessage());
       }

       
    return str;
       }

    posted @ 2005-12-14 01:29 konhon 優華 閱讀(4083) | 評論 (1)編輯 收藏

    對于這個系列里的問題,每個學Java的人都應該搞懂。當然,如果只是學Java玩玩就無所謂了。如果你認為自己已經超越初學者了,卻不很懂這些問題,請將你自己重歸初學者行列。內容均來自于CSDN的經典老貼。

    問題一:我聲明了什么!

    String s = "Hello world!";

    許多人都做過這樣的事情,但是,我們到底聲明了什么?回答通常是:一個String,內容是“Hello world!”。這樣模糊的回答通常是概念不清的根源。如果要準確的回答,一半的人大概會回答錯誤。
    這個語句聲明的是一個指向對象的引用,名為“s”,可以指向類型為String的任何對象,目前指向"Hello world!"這個String類型的對象。這就是真正發生的事情。我們并沒有聲明一個String對象,我們只是聲明了一個只能指向String對象的引用變量。所以,如果在剛才那句語句后面,如果再運行一句:

    String string = s;

    我們是聲明了另外一個只能指向String對象的引用,名為string,并沒有第二個對象產生,string還是指向原來那個對象,也就是,和s指向同一個對象。

    問題二:"=="和equals方法究竟有什么區別?

    ==操作符專門用來比較變量的值是否相等。比較好理解的一點是:
    int a=10;
    int b=10;
    則a==b將是true。
    但不好理解的地方是:
    String a=new String("foo");
    String b=new String("foo");
    則a==b將返回false。

    根據前一帖說過,對象變量其實是一個引用,它們的值是指向對象所在的內存地址,而不是對象本身。a和b都使用了new操作符,意味著將在內存中產生兩個內容為"foo"的字符串,既然是“兩個”,它們自然位于不同的內存地址。a和b的值其實是兩個不同的內存地址的值,所以使用"=="操作符,結果會是false。誠然,a和b所指的對象,它們的內容都是"foo",應該是“相等”,但是==操作符并不涉及到對象內容的比較。
    對象內容的比較,正是equals方法做的事。

    看一下Object對象的equals方法是如何實現的:
    boolean equals(Object o){

    return this==o;

    }
    Object對象默認使用了==操作符。所以如果你自創的類沒有覆蓋equals方法,那你的類使用equals和使用==會得到同樣的結果。同樣也可以看出,Object的equals方法沒有達到equals方法應該達到的目標:比較兩個對象內容是否相等。因為答案應該由類的創建者決定,所以Object把這個任務留給了類的創建者。

    看一下一個極端的類:
    Class Monster{
    private String content;
    ...
    boolean equals(Object another){ return true;}

    }
    我覆蓋了equals方法。這個實現會導致無論Monster實例內容如何,它們之間的比較永遠返回true。

    所以當你是用equals方法判斷對象的內容是否相等,請不要想當然。因為可能你認為相等,而這個類的作者不這樣認為,而類的equals方法的實現是由他掌握的。如果你需要使用equals方法,或者使用任何基于散列碼的集合(HashSet,HashMap,HashTable),請察看一下java doc以確認這個類的equals邏輯是如何實現的。

    問題三:String到底變了沒有?

    沒有。因為String被設計成不可變(immutable)類,所以它的所有對象都是不可變對象。請看下列代碼:

    String s = "Hello";
    s = s + " world!";

    s所指向的對象是否改變了呢?從本系列第一篇的結論很容易導出這個結論。我們來看看發生了什么事情。在這段代碼中,s原先指向一個String對象,內容是"Hello",然后我們對s進行了+操作,那么s所指向的那個對象是否發生了改變呢?答案是沒有。這時,s不指向原來那個對象了,而指向了另一個String對象,內容為"Hello world!",原來那個對象還存在于內存之中,只是s這個引用變量不再指向它了。
    通過上面的說明,我們很容易導出另一個結論,如果經常對字符串進行各種各樣的修改,或者說,不可預見的修改,那么使用String來代表字符串的話會引起很大的內存開銷。因為String對象建立之后不能再改變,所以對于每一個不同的字符串,都需要一個String對象來表示。這時,應該考慮使用StringBuffer類,它允許修改,而不是每個不同的字符串都要生成一個新的對象。并且,這兩種類的對象轉換十分容易。
    同時,我們還可以知道,如果要使用內容相同的字符串,不必每次都new一個String。例如我們要在構造器中對一個名叫s的String引用變量進行初始化,把它設置為初始值,應當這樣做:
    public class Demo {
    private String s;
    ...
    public Demo {
    s = "Initial Value";
    }
    ...
    }
    而非
    s = new String("Initial Value");
    后者每次都會調用構造器,生成新對象,性能低下且內存開銷大,并且沒有意義,因為String對象不可改變,所以對于內容相同的字符串,只要一個String對象來表示就可以了。也就說,多次調用上面的構造器創建多個對象,他們的String類型屬性s都指向同一個對象。
    上面的結論還基于這樣一個事實:對于字符串常量,如果內容相同,Java認為它們代表同一個String對象。而用關鍵字new調用構造器,總是會創建一個新的對象,無論內容是否相同。
    至于為什么要把String類設計成不可變類,是它的用途決定的。其實不只String,很多Java標準類庫中的類都是不可變的。在開發一個系統的時候,我們有時候也需要設計不可變類,來傳遞一組相關的值,這也是面向對象思想的體現。不可變類有一些優點,比如因為它的對象是只讀的,所以多線程并發訪問也不會有任何問題。當然也有一些缺點,比如每個不同的狀態都要一個對象來代表,可能會造成性能上的問題。所以Java標準類庫還提供了一個可變版本,即StringBuffer。

    問題四:final關鍵字到底修飾了什么?

    final使得被修飾的變量"不變",但是由于對象型變量的本質是“引用”,使得“不變”也有了兩種含義:引用本身的不變,和引用指向的對象不變。

    引用本身的不變:
    final StringBuffer a=new StringBuffer("immutable");
    final StringBuffer b=new StringBuffer("not immutable");
    a=b;//編譯期錯誤

    引用指向的對象不變:
    final StringBuffer a=new StringBuffer("immutable");
    a.append(" broken!"); //編譯通過

    可見,final只對引用的“值”(也即它所指向的那個對象的內存地址)有效,它迫使引用只能指向初始指向的那個對象,改變它的指向會導致編譯期錯誤。至于它所指向的對象的變化,final是不負責的。這很類似==操作符:==操作符只負責引用的“值”相等,至于這個地址所指向的對象內容是否相等,==操作符是不管的。

    理解final問題有很重要的含義。許多程序漏洞都基于此----final只能保證引用永遠指向固定對象,不能保證那個對象的狀態不變。在多線程的操作中,一個對象會被多個線程共享或修改,一個線程對對象無意識的修改可能會導致另一個使用此對象的線程崩潰。一個錯誤的解決方法就是在此對象新建的時候把它聲明為final,意圖使得它“永遠不變”。其實那是徒勞的。

    問題五:到底要怎么樣初始化!

    本問題討論變量的初始化,所以先來看一下Java中有哪些種類的變量。
    1. 類的屬性,或者叫值域
    2. 方法里的局部變量
    3. 方法的參數

    對于第一種變量,Java虛擬機會自動進行初始化。如果給出了初始值,則初始化為該初始值。如果沒有給出,則把它初始化為該類型變量的默認初始值。

    int類型變量默認初始值為0
    float類型變量默認初始值為0.0f
    double類型變量默認初始值為0.0
    boolean類型變量默認初始值為false
    char類型變量默認初始值為0(ASCII碼)
    long類型變量默認初始值為0
    所有對象引用類型變量默認初始值為null,即不指向任何對象。注意數組本身也是對象,所以沒有初始化的數組引用在自動初始化后其值也是null。

    對于兩種不同的類屬性,static屬性與instance屬性,初始化的時機是不同的。instance屬性在創建實例的時候初始化,static屬性在類加載,也就是第一次用到這個類的時候初始化,對于后來的實例的創建,不再次進行初始化。這個問題會在以后的系列中進行詳細討論。

    對于第二種變量,必須明確地進行初始化。如果再沒有初始化之前就試圖使用它,編譯器會抗議。如果初始化的語句在try塊中或if塊中,也必須要讓它在第一次使用前一定能夠得到賦值。也就是說,把初始化語句放在只有if塊的條件判斷語句中編譯器也會抗議,因為執行的時候可能不符合if后面的判斷條件,如此一來初始化語句就不會被執行了,這就違反了局部變量使用前必須初始化的規定。但如果在else塊中也有初始化語句,就可以通過編譯,因為無論如何,總有至少一條初始化語句會被執行,不會發生使用前未被初始化的事情。對于try-catch也是一樣,如果只有在try塊里才有初始化語句,編譯部通過。如果在catch或finally里也有,則可以通過編譯。總之,要保證局部變量在使用之前一定被初始化了。所以,一個好的做法是在聲明他們的時候就初始化他們,如果不知道要出事化成什么值好,就用上面的默認值吧!

    其實第三種變量和第二種本質上是一樣的,都是方法中的局部變量。只不過作為參數,肯定是被初始化過的,傳入的值就是初始值,所以不需要初始化。

    問題六:instanceof是什么東東?

    instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由于它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據。舉個例子:

    String s = "I AM an Object!";
    boolean isObject = s instanceof Object;

    我們聲明了一個String對象引用,指向一個String對象,然后用instancof來測試它所指向的對象是否是Object類的一個實例,顯然,這是真的,所以返回true,也就是isObject的值為True。
    instanceof有一些用處。比如我們寫了一個處理賬單的系統,其中有這樣三個類:

    public class Bill {//省略細節}
    public class PhoneBill extends Bill {//省略細節}
    public class GasBill extends Bill {//省略細節}

    在處理程序里有一個方法,接受一個Bill類型的對象,計算金額。假設兩種賬單計算方法不同,而傳入的Bill對象可能是兩種中的任何一種,所以要用instanceof來判斷:

    public double calculate(Bill bill) {
    if (bill instanceof PhoneBill) {
    //計算電話賬單
    }
    if (bill instanceof GasBill) {
    //計算燃氣賬單
    }
    ...
    }
    這樣就可以用一個方法處理兩種子類。

    然而,這種做法通常被認為是沒有好好利用面向對象中的多態性。其實上面的功能要求用方法重載完全可以實現,這是面向對象變成應有的做法,避免回到結構化編程模式。只要提供兩個名字和返回值都相同,接受參數類型不同的方法就可以了:

    public double calculate(PhoneBill bill) {
    //計算電話賬單
    }

    public double calculate(GasBill bill) {
    //計算燃氣賬單
    }

    所以,使用instanceof在絕大多數情況下并不是推薦的做法,應當好好利用多態。

    posted @ 2005-12-12 19:07 konhon 優華 閱讀(406) | 評論 (0)編輯 收藏

    http://javaalmanac.com/egs/
    almost all there with examples

    Free, good, and official Java tutorial:
    http://java.sun.com/docs/books/tutorial/

    Thinking in Java 3rd Edition,中文版 + English version
    http://java.galesoft.com/

    Code Conventions for the JavaTM Programming Language
    http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

    Java API doc
    http://java.sun.com/j2se/1.4.2/docs/api/index.html
    http://java.sun.com/j2se/1.5.0/docs/api/index.html

    api 中文版 and many others
    See links in 『 Java新技術,新聞,應用與資源等 』

    Excellent article about Runtime from JavaWorld!
    http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

    posted @ 2005-12-12 19:04 konhon 優華 閱讀(364) | 評論 (0)編輯 收藏

    僅列出標題
    共21頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 Last 
    主站蜘蛛池模板: 一本到卡二卡三卡免费高| 小小影视日本动漫观看免费| 色天使色婷婷在线影院亚洲| 亚洲国产人成网站在线电影动漫 | 亚洲免费在线播放| 免费人成网站在线高清| 97碰公开在线观看免费视频| 日本道免费精品一区二区| 视频一区二区三区免费观看| 亚洲综合色区中文字幕| 亚洲国产一区二区a毛片| 中文字幕第13亚洲另类| 暖暖免费高清日本中文| 欧亚精品一区三区免费| 99热免费在线观看| 鲁丝片一区二区三区免费| 黄床大片免费30分钟国产精品| 理论秋霞在线看免费| 亚洲av色香蕉一区二区三区蜜桃| 色偷偷亚洲女人天堂观看欧| 亚洲色图国产精品| 蜜芽亚洲av无码精品色午夜| 久久国产精品亚洲一区二区| 国产精品久久久亚洲| 亚洲第一AAAAA片| 亚洲av最新在线网址| 亚洲AV无码一区二区乱子伦| 精品国产_亚洲人成在线高清| 亚洲永久精品ww47| 亚洲中文字幕无码久久2017| 亚洲综合色婷婷七月丁香| 国产亚洲人成A在线V网站| 久久亚洲高清综合| 国产亚洲综合色就色| 亚洲国产人成网站在线电影动漫 | 国产特黄一级一片免费| 成人妇女免费播放久久久| 91国内免费在线视频| 免费在线中文日本| 日本在线看片免费人成视频1000 | 久久久久亚洲AV无码观看|