主頁(yè) > 知識(shí)庫(kù) > 初學(xué)Java的備忘錄

初學(xué)Java的備忘錄

熱門(mén)標(biāo)簽:Mysql連接數(shù)設(shè)置 阿里云 服務(wù)器配置 團(tuán)購(gòu)網(wǎng)站 電子圍欄 Linux服務(wù)器 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 銀行業(yè)務(wù)
雖然以前間或的也看了些書(shū)籍,但多是隔靴搔癢,上不了正席,絕不敢說(shuō)自己懂Java。接觸一門(mén)新的技術(shù)和初戀一樣,都是第一次,但不同的是后者一般開(kāi)始無(wú)比甜蜜,結(jié)局卻很痛苦,而前者則往往開(kāi)始很痛苦,越到后來(lái)卻越是有味,簡(jiǎn)直是欲罷不能.現(xiàn)在我就正處于這個(gè)很痛苦的階段,連一個(gè)最簡(jiǎn)單的Helloworld都運(yùn)行不出來(lái),總是提示Excepion in thread "main" java.lan.NoClassDefFoundError. 只好上網(wǎng)去查,去搜.記性又不好,所以搜出來(lái)趕緊保存下來(lái),常備無(wú)患。

  一般來(lái)說(shuō)安裝完JDK之后,一定要按一下步驟配置,才可正確編譯運(yùn)行(假定jdk版本為1.4.0)。

  1.將jdk1.4.0-安裝在自己機(jī)器的某個(gè)盤(pán)符的根目錄下,如:可安裝在C:\jdk下。

  ***(以下出現(xiàn)的c:\jdk改為你自己安裝JDK的目錄)***

  2.如果你的運(yùn)行環(huán)境是win98,則在C盤(pán)根目錄下,autoexec.bat文件中,加入下面兩條語(yǔ)句:

  set Path=%PATH%;c:\jdk\bin
  set CLASSPATH=.;c:\jdk\lib\dt.jar;c:\jdk\lib\tools.jar保存后,重新啟動(dòng)機(jī)器,就完成了jdk1.4的安裝。

  3.如果你的運(yùn)行環(huán)境是win2000的話(huà),則需在“控制面板”的“系統(tǒng)”下,“高級(jí)”選項(xiàng)的“環(huán)境變量”中,添加兩個(gè)用戶(hù)變量。

  其中一個(gè)用戶(hù)變量的名稱(chēng)為“path”,值為“.;d:\j2sdk1.4.0_01\bin”,另一個(gè)用戶(hù)變量的名稱(chēng)為"CLASSPATH",值為“.;d"\j2sdk1.4.0_01\lib\dt.jar;d:\j2sdk1.4.0_01\lib\tools.jar”,單擊“確定”即可。即完成了jdk1.4.0的安裝。

  至于這樣做的意義何在,我想應(yīng)該是讓Java系統(tǒng)在編譯字節(jié)代碼(.java)的時(shí)候需要一個(gè)什么東東的支持,如果你不告訴它這個(gè)東東放在哪個(gè)地方的話(huà),它就犯傻了?!

  看到屏幕上終于顯示出Hello world對(duì)我來(lái)說(shuō)意義重大.這是我近一年來(lái)寫(xiě)的第一個(gè)程序!再次踏上程序之路,簡(jiǎn)直有恍如隔世的感覺(jué),已經(jīng)快找不準(zhǔn)我的位置了。還好原來(lái)學(xué)的一些關(guān)于C++和面向?qū)ο蟮钠っ珱](méi)忘光光,所以費(fèi)點(diǎn)周折熟悉了JDK的環(huán)境之后,接下來(lái)的事情就好辦多了,心里也踏實(shí)多了。

  用String類(lèi)直接定義字符串變量比起C中討厭的指針,感覺(jué)確實(shí)好的多,用慣了Object Pascal的我,如果再回去數(shù)* *,真要瘋掉不可。

  數(shù)組的定義和C,C++好像略有不同,記不清了,先記下來(lái)再說(shuō)

  int[] number=new int[5]
  String[] message=new String[5]

  變量這一部分想起來(lái)要交待的也就這么多吧。雖然是菜鳥(niǎo),但我也知道,總是如譚浩強(qiáng)般在語(yǔ)法上面死摳的人簡(jiǎn)直是白癡:大多數(shù)情況下,漂亮的程序根本不需要無(wú)謂的點(diǎn)綴,工工整整,思路清晰就可以了。

  倒是對(duì)于Java程序的框架我倒想備忘一下,一個(gè)簡(jiǎn)單的java程序好像是應(yīng)該是這樣的框架:

  class ProgramName
  {
  public static void main(String【】 args)
  {
  file://程序的主體
  }

  public static int othermethod()
  {
  file://其它方法
  }
  }

  整個(gè)程序在一個(gè)大的類(lèi)中,這個(gè)類(lèi)的概念應(yīng)該就跟pascal里面的單元差不多的。同pascal一樣,文件名也要與單元名-在這里是類(lèi)名-一樣.Java對(duì)大小寫(xiě)要求的非常嚴(yán)格,我語(yǔ)法錯(cuò)了好幾次都是因?yàn)檫@個(gè).

  Java程序就是由一個(gè)或者多個(gè)或者很多個(gè)方法在這樣一個(gè)大類(lèi)當(dāng)中組成的.

  在如上的代碼中,定義方法的參數(shù)表示的意思分別為:

  public表示此成員函數(shù)是公有的,可以被其他類(lèi)直接調(diào)用 static表示main成員函數(shù)在ProgramName類(lèi)的所有對(duì)象中是唯一的,Java將為其分配永久存儲(chǔ)空間

  關(guān)于Static,我想再延伸一下。有時(shí)候我們創(chuàng)建一個(gè)類(lèi),希望這個(gè)類(lèi)的所有實(shí)例都公用一個(gè)變量,也就是說(shuō),所有這個(gè)類(lèi)的對(duì)象都只有實(shí)例變量的一個(gè)Copy.那么這樣一個(gè)靜態(tài)實(shí)例變量的內(nèi)存就不能在創(chuàng)建類(lèi)的實(shí)例的時(shí)候分配了,因?yàn)榇蠹矣玫亩际沁@么一個(gè),不需要再重新分配.因此Java為其分配永久存儲(chǔ)空間。

  比如:

  class Block{
  static int number=50
  }

  這樣定義之后,所有Block類(lèi)的實(shí)例,不管是Block1,還是Block2,它們都訪(fǎng)問(wèn)同一個(gè)number.這個(gè)number叫做類(lèi)的變量,而不是實(shí)例變量.實(shí)際上靜態(tài)變量又叫做類(lèi)變量。

  繼續(xù)深入:用Static定義的靜態(tài)成員函數(shù)或者靜態(tài)變量,可以通過(guò)其所屬類(lèi)名來(lái)直接調(diào)用.為什么可以這樣?因?yàn)榧热贿@個(gè)類(lèi)的所有對(duì)象都是使用的這一個(gè)變量,那么理所當(dāng)然我不需要去從其中的任何一個(gè)對(duì)象去引用它,而只是通過(guò)類(lèi)名引用就可以了嘛.這樣不是可以方便的實(shí)現(xiàn)一些全局函數(shù)和全局變量嗎?把所有全局的函數(shù)或者全局的變量都定義在一個(gè)靜態(tài)類(lèi)中,調(diào)用的時(shí)候直接通過(guò)這一個(gè)類(lèi)名就可以方便的訪(fǎng)問(wèn)所有的全局變量和全局函數(shù)了。

  定義所有程序都要訪(fǎng)問(wèn)的全局變量需要使用

  public final static

  另外碰到一個(gè)初學(xué)者經(jīng)常會(huì)遇到的問(wèn)題

  non-static variable mainframe cannot be referenced from a static context

  即在靜態(tài)方法中不能引用非靜態(tài)變量

  為什么?

  因?yàn)槲覀冎漓o態(tài)的方法可以在沒(méi)有創(chuàng)建實(shí)例時(shí)使用,而申明為非靜態(tài)的成員變量是一個(gè)對(duì)象屬性,它只有在對(duì)象存在時(shí)引用,因此如果在對(duì)象未創(chuàng)建實(shí)例時(shí)我們?cè)陟o態(tài)方法中調(diào)用了非靜態(tài)成員方法自然是非法的,所以編譯器會(huì)在這種時(shí)候給各錯(cuò)誤.

  簡(jiǎn)單說(shuō)來(lái),靜態(tài)方法可以不用創(chuàng)建對(duì)象就調(diào)用,非靜態(tài)方法必須有了對(duì)象的實(shí)例才能調(diào)用.因此想在靜態(tài)方法中引用非靜態(tài)方法是不可能的,因?yàn)樗烤挂玫氖悄膫€(gè)對(duì)象的非靜態(tài)方法呢?編譯器不可能給出答案,因?yàn)闆](méi)有對(duì)象啊,所以要報(bào)錯(cuò).

  最后我們看看Think in Java里面的精辟闡述,這個(gè)問(wèn)題我想就非常非常的清楚了

  static關(guān)鍵字

  通常,我們創(chuàng)建類(lèi)時(shí)會(huì)指出那個(gè)類(lèi)的對(duì)象的外觀(guān)與行為。除非用new創(chuàng)建那個(gè)類(lèi)的一個(gè)對(duì)象,否則實(shí)際上并未得到任何東西。只有執(zhí)行了new后,才會(huì)正式生成數(shù)據(jù)存儲(chǔ)空間,并可使用相應(yīng)的方法。

  但在兩種特殊的情形下,上述方法并不堪用。一種情形是只想用一個(gè)存儲(chǔ)區(qū)域來(lái)保存一個(gè)特定的數(shù)據(jù)——無(wú)論要?jiǎng)?chuàng)建多少個(gè)對(duì)象,甚至根本不創(chuàng)建對(duì)象。另一種情形是我們需要一個(gè)特殊的方法,它沒(méi)有與這個(gè)類(lèi)的任何對(duì)象關(guān)聯(lián)。也就是說(shuō),即使沒(méi)有創(chuàng)建對(duì)象,也需要一個(gè)能調(diào)用的方法。為滿(mǎn)足這兩方面的要求,可使用static(靜態(tài))關(guān)鍵字。一旦將什么東西設(shè)為static,數(shù)據(jù)或方法就不會(huì)同那個(gè)類(lèi)的任何對(duì)象實(shí)例聯(lián)系到一起。所以盡管從未創(chuàng)建那個(gè)類(lèi)的一個(gè)對(duì)象,仍能調(diào)用一個(gè)static方法,或訪(fǎng)問(wèn)一些static數(shù)據(jù)。而在這之前,對(duì)于非static數(shù)據(jù)和方法,我們必須創(chuàng)建一個(gè)對(duì)象,并用那個(gè)對(duì)象訪(fǎng)問(wèn)數(shù)據(jù)或方法。這是由于非static數(shù)據(jù)和方法必須知道它們操作的具體對(duì)象。當(dāng)然,在正式使用前,由于static方法不需要?jiǎng)?chuàng)建任何對(duì)象,所以它們不可簡(jiǎn)單地調(diào)用其他那些成員,同時(shí)不引用一個(gè)已命名的對(duì)象,從而直接訪(fǎng)問(wèn)非static成員或方法(因?yàn)榉莝tatic成員和方法必須同一個(gè)特定的對(duì)象關(guān)聯(lián)到一起)。

  Whoops!現(xiàn)在應(yīng)該回到主干上來(lái)了

  void 表示方法返回的值的類(lèi)型為空。如果返回特定的類(lèi)型的話(huà),則該方法實(shí)際上就是函數(shù),否則就是一個(gè)過(guò)程而已.
您可能感興趣的文章:
  • ASP.NET操作Excel備忘錄
  • VBS備忘錄啟動(dòng)代碼
  • Vuex2.0+Vue2.0構(gòu)建備忘錄應(yīng)用實(shí)踐

標(biāo)簽:蚌埠 萍鄉(xiāng) 棗莊 廣元 江蘇 衢州 衡水 大理

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《初學(xué)Java的備忘錄》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266