java-基礎(chǔ)

1.java中的final關(guān)鍵字:http://www.importnew.com/7553.html

final關(guān)鍵字的含義许蓖?
final在Java中是一個(gè)保留的關(guān)鍵字,可以聲明成員變量漓摩、方法裙士、類以及本地變量。一旦你將引用聲明作final管毙,你將不能改變這個(gè)引用了腿椎,編譯器會(huì)檢查代碼,如果你試圖將變量再次初始化的話夭咬,編譯器會(huì)報(bào)編譯錯(cuò)誤啃炸。

  • final變量經(jīng)常和static關(guān)鍵字一起使用,作為常量卓舵。final變量是只讀的
    • final成員變量必須在聲明時(shí)初始化或者在構(gòu)造器中初始化南用,否則會(huì)報(bào)編譯錯(cuò)誤。
    • final本地變量(在方法中的或者代碼塊中的變量稱為本地變量)必須在聲明時(shí)賦值掏湾。
    • 不能夠?qū)inal變量再次賦值裹虫。
  • final方法不可以被子類覆寫
  • final類不能被繼承,它們通常是完整的類融击。java中有許多類是final的屑咳,如String须板,Integer以及其他包裝類。
2.java中的static關(guān)鍵字:http://www.cnblogs.com/dolphin0520/p/3799052.html

static方法就是沒有this的方法。在static方法內(nèi)部不能調(diào)用非靜態(tài)方法化焕,反過來是可以的政溃。而且可以在沒有創(chuàng)建任何對(duì)象的前提下瘤袖,僅僅通過類本身來調(diào)用static方法测柠。這實(shí)際上正是static方法的主要用途

簡(jiǎn)而言之:方便在沒有創(chuàng)建對(duì)象的情況下來進(jìn)行調(diào)用(方法/變量)。
很顯然工育,被static關(guān)鍵字修飾的方法或者變量不需要依賴于對(duì)象來進(jìn)行訪問虾宇,只要類被加載了,就可以通過類名去進(jìn)行訪問如绸。

  • static方法
    static方法一般稱作靜態(tài)方法嘱朽,由于靜態(tài)方法不依賴于任何對(duì)象就可以進(jìn)行訪問旭贬,因此對(duì)于靜態(tài)方法來說,是沒有this的搪泳,因?yàn)樗灰栏接谌魏螌?duì)象稀轨,既然都沒有對(duì)象,就談不上this了岸军。并且由于這個(gè)特性奋刽,在靜態(tài)方法中不能訪問類的非靜態(tài)成員變量和非靜態(tài)成員方法,因?yàn)榉庆o態(tài)成員方法/變量都是必須依賴具體的對(duì)象才能夠被調(diào)用艰赞。
    雖然在靜態(tài)方法中不能訪問非靜態(tài)成員方法和非靜態(tài)成員變量佣谐,但是在非靜態(tài)成員方法中是可以訪問靜態(tài)成員方法/變量的。
  • static變量
    static變量也稱作靜態(tài)變量方妖,靜態(tài)變量和非靜態(tài)變量的區(qū)別是:靜態(tài)變量被所有的對(duì)象所共享狭魂,在內(nèi)存中只有一個(gè)副本,它當(dāng)且僅當(dāng)在類初次加載時(shí)會(huì)被初始化党觅。而非靜態(tài)變量是對(duì)象所擁有的雌澄,在創(chuàng)建對(duì)象的時(shí)候被初始化,存在多個(gè)副本杯瞻,各個(gè)對(duì)象擁有的副本互不影響镐牺。
    static成員變量的初始化順序按照定義的順序進(jìn)行初始化。
  • static代碼塊
    static塊可以置于類中的任何地方魁莉,類中可以有多個(gè)static塊睬涧。在類初次被加載的時(shí)候,會(huì)按照static塊的順序來執(zhí)行每個(gè)static塊沛厨,并且只會(huì)執(zhí)行一次宙地。
    很多時(shí)候會(huì)將一些只需要進(jìn)行一次的初始化操作都放在static代碼塊中進(jìn)行。

在C/C++中static是可以作用于局部變量的逆皮,但是在Java中切記:static是不允許用來修飾局部變量。不要問為什么参袱,這是Java語法的規(guī)定电谣。

3.toArray()中參數(shù)的作用

String[] result = set.toArray(new String[0]);

  • 使用無參數(shù)的toArray()有一個(gè)缺點(diǎn),就是轉(zhuǎn)換后的數(shù)組類型是Object[]抹蚀。 雖然Object數(shù)組也不是不能用剿牺,但當(dāng)你真的想用一個(gè)具體類型的數(shù)組時(shí)轉(zhuǎn)化就非常麻煩。
    需要用到這個(gè)String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);
    還是一開始就弄成String[]比較好环壤。所以需要使用帶參數(shù)的toArray.
  • String[] a = collection.toArray(new String[0]);
    如果指定的數(shù)組能容納該 collection晒来,則返回包含此 collection 元素的數(shù)組。否則郑现,將根據(jù)指定數(shù)組的運(yùn)行時(shí)類型和此 collection 的大小分配一個(gè)新數(shù)組湃崩。這里給的參數(shù)的數(shù)組長(zhǎng)度是0荧降,因此就會(huì)返回包含此 collection 中所有元素的數(shù)組,并且返回?cái)?shù)組的類型與指定數(shù)組的運(yùn)行時(shí)類型相同攒读。
4. java可變參數(shù)

Java1.5增加了新特性:可變參數(shù):適用于參數(shù)個(gè)數(shù)不確定朵诫,類型確定的情況,java把可變參數(shù)當(dāng)做數(shù)組處理薄扁。

注意:可變參數(shù)必須位于最后一項(xiàng)剪返。當(dāng)可變參數(shù)個(gè)數(shù)多余一個(gè)時(shí),必將有一個(gè)不是最后一項(xiàng)邓梅,所以也只支持有一個(gè)可變參數(shù)脱盲。

因?yàn)閰?shù)個(gè)數(shù)不定,所以當(dāng)其后邊還有相同類型參數(shù)時(shí)日缨,java無法區(qū)分傳入的參數(shù)屬于前一個(gè)可變參數(shù)還是后邊的參數(shù)钱反,所以只能讓可變參數(shù)位于最后一項(xiàng)。
可變參數(shù)的特點(diǎn):

  • 只能出現(xiàn)在參數(shù)列表的最后殿遂;
  • ...位于變量類型和變量名之間诈铛,前后有無空格都可以;
  • 調(diào)用可變參數(shù)的方法時(shí)墨礁,編譯器為該可變參數(shù)隱含創(chuàng)建一個(gè)數(shù)組幢竹,在方法體中以數(shù)組的形式訪問可變參數(shù)。
    示例代碼:
public class Varable {
   public static void main(String [] args){
       System.out.println(add(2,3));
       System.out.println(add(2,3,5));
   }
   public static int add(int x, int... args){
       int sum=x;
       for(int i=0;i<args.length;i++){
          sum+=args[i];
       }
      return sum;
   }
}
5.Arrays.asList()
public class NodeNetwork {
  private List<Node> nodes;
  public NodeNetwork(Node...  nodes) {
      this.setNodes(Arrays.asList(nodes));
  }
  public void setNodes(List<Node> nodes) {
        this.nodes = nodes;
    }
}
    Node[] nodes = new Node[3];
    nodes[0] = node1;
    nodes[1] = node2;
    nodes[2] = node3;
    nnw=new NodeNetwork(nodes);
    nnw.addNode(node2); 

此時(shí)會(huì)報(bào)錯(cuò):UnsupportedOperationException
原因:

Returns a fixed-size list backed by the specified array.

it is documented not to support any structural modification (i.e. removing or adding elements)
因?yàn)锳rrays.asList()返回的是一個(gè)固定大小的列表恩静,故無法對(duì)其進(jìn)行add操作焕毫。

6.StringBuilder()

String對(duì)象是不可改變的。每次使用 System.String類中的方法之一時(shí)驶乾,都要在內(nèi)存中創(chuàng)建一個(gè)新的字符串對(duì)象邑飒,這就需要為該新對(duì)象分配新的空間。在需要對(duì)字符串執(zhí)行重復(fù)修改的情況下级乐,創(chuàng)建新的 String對(duì)象相關(guān)的系統(tǒng)開銷可能會(huì)非常昂貴疙咸。如果要修改字符串而不創(chuàng)建新的對(duì)象,則可以使用System.Text.StringBuilder類风科。例如撒轮,當(dāng)在一個(gè)循環(huán)中將許多字符串連接在一起時(shí),使用 StringBuilder類可以提升性能贼穆。

7.transient 詳見http://www.importnew.com/21517.html
  • 一旦變量被transient修飾题山,變量將不再是對(duì)象持久化的一部分,該變量?jī)?nèi)容在序列化后無法獲得訪問故痊。

  • transient關(guān)鍵字只能修飾變量顶瞳,而不能修飾方法和類。注意,本地變量是不能被transient關(guān)鍵字修飾的慨菱。變量如果是用戶自定義類變量焰络,則該類需要實(shí)現(xiàn)Serializable接口。

  • 被transient關(guān)鍵字修飾的變量不再能被序列化抡柿,一個(gè)靜態(tài)變量不管是否被transient修飾舔琅,均不能被序列化。

8. Scanner用法

當(dāng)通過new Scanner(System.in)創(chuàng)建一個(gè)Scanner洲劣,控制臺(tái)會(huì)一直等待輸入备蚓,直到敲回車鍵結(jié)束,把所輸入的內(nèi)容傳給Scanner囱稽,作為掃描對(duì)象郊尝。如果要獲取輸入的內(nèi)容,則只需要調(diào)用Scanner的nextLine()方法即可战惊。

public class TestScanner { 
        public static void main(String[] args) { 
                Scanner s = new Scanner(System.in); 
                System.out.println("請(qǐng)輸入字符串:"); 
                while (true) { 
                        String line = s.nextLine(); 
                        if (line.equals("exit")) break; 
                        System.out.println(">>>" + line); 
                } 
        } 
}
請(qǐng)輸入字符串: 
234 
>>>234 
wer 
>>>wer 
bye 
>>>bye 
exit 

Process finished with exit code 0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末流昏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吞获,更是在濱河造成了極大的恐慌况凉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件各拷,死亡現(xiàn)場(chǎng)離奇詭異刁绒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)烤黍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門知市,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人速蕊,你說我怎么就攤上這事嫂丙。” “怎么了规哲?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵跟啤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我唉锌,道長(zhǎng)腥光,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任糊秆,我火速辦了婚禮,結(jié)果婚禮上议双,老公的妹妹穿的比我還像新娘痘番。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布汞舱。 她就那樣靜靜地躺著伍纫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昂芜。 梳的紋絲不亂的頭發(fā)上莹规,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音泌神,去河邊找鬼良漱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛欢际,可吹牛的內(nèi)容都是我干的母市。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼损趋,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼患久!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浑槽,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤蒋失,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后桐玻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篙挽,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年畸冲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嫉髓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邑闲,死狀恐怖算行,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苫耸,我是刑警寧澤州邢,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站褪子,受9級(jí)特大地震影響量淌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嫌褪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一呀枢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧笼痛,春花似錦裙秋、人聲如沸琅拌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽进宝。三九已至,卻和暖如春枷恕,著一層夾襖步出監(jiān)牢的瞬間党晋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工徐块, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留未玻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓蛹锰,卻偏偏與公主長(zhǎng)得像深胳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铜犬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一:java概述:1舞终,JDK:Java Development Kit,java的開發(fā)和運(yùn)行環(huán)境癣猾,java的開發(fā)工...
    ZaneInTheSun閱讀 2,650評(píng)論 0 11
  • 1敛劝、一個(gè)".java"源文件中是否可以包括多個(gè)類(不是內(nèi)部類)?有什么限制纷宇?答:可以有多個(gè)類夸盟,但只能有一個(gè)publ...
    岳小川閱讀 928評(píng)論 0 2
  • 這個(gè)系列面試題主要目的是幫助你拿輕松到offer,同時(shí)還能開個(gè)好價(jià)錢像捶。只要能夠搞明白這個(gè)系列的絕大多數(shù)題目上陕,在面試...
    獨(dú)念白閱讀 338評(píng)論 0 3
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法拓春,內(nèi)部類的語法释簿,繼承相關(guān)的語法,異常的語法硼莽,線程的語...
    子非魚_t_閱讀 31,625評(píng)論 18 399
  • Win7下如何打開DOS控制臺(tái)庶溶? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,595評(píng)論 4 12