国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

var 是 Java 開發(fā)的好朋友??!

張巨偉 / 3013人閱讀

摘要:中引入了新的語法用于局部變量類型推斷,很多開發(fā)者有所疑惑,希望這篇文章能幫到你。對經(jīng)常使用泛型的開發(fā)者來說,可能早就對上面的類型推斷寫法習(xí)以為常。簡單說它是受限于它們存在的方法或循環(huán)聲明的范圍。

簡評:Java var != JavaScript var。

Java 10 中引入了新的語法用于局部變量類型推斷,很多開發(fā)者有所疑惑,希望這篇文章能幫到你。

什么是類型推斷

其實(shí)在 Java 中類型推斷早就存在了,看下下面的例子:

public void doSomething() {
    final List names = new ArrayList();
                                         //  ^^^^^^------- Redundant
    ...
}

在這個例子中給?ArrayList?定義持有的類型就沒必要了,因?yàn)?List?已經(jīng)定義了我們需要的類型?String?,在 Java 7 中增加了類型推斷,這時例子可以直接寫成

public void doSomething() {
    final List names = new ArrayList<>();
                                         // ^^------ Inferred!
    ...
}

這兩種寫法是完全合法的,而且最終會形成一樣的字節(jié)碼。對經(jīng)常使用泛型的開發(fā)者來說,可能早就對上面的類型推斷寫法習(xí)以為常。

那什么是局部變量類型推斷?

即能推斷出方法中局部變量的類型,這是 Java 10 中新增的特性,對應(yīng)關(guān)鍵詞?var,看個例子 :

public void doSomething() {
    final ??? name = "Todd";
}

name 是什么類型,很明顯是?String,而 Java 10 就可以讓編譯器幫我們判斷其類型,我們只要寫成下面的形式:

public void doSomething() {
    final var name = "Todd";   // name is inferred as a String!
}

var 的使用不局限于函數(shù)內(nèi)聲明的變量,同時也可以用于循環(huán)的索引:

final List names = new ArrayList<>();

public void doSomething() {
    for(var name: names) {
        System.out.println("Name: " + name);
    }
    for(var i = 0; i < names.size(); i++) {
        System.out.println("Name: " + names.get(i));
    }
}

我必須使用 var 嗎?不是的,老方法一樣完美支持。

這樣的做法危險(xiǎn)嗎?

一個字:不。

簡單說它是受限于它們存在的方法(或循環(huán)聲明)的范圍。這意味著除了聲明它們的方法的開發(fā)之外,人們不編寫依賴于這些類型的代碼。

還有大家會有一個疑惑,很多語言也是不需要定義類型的,完全由編譯器搞定,以 JavaScript 舉例:

var x = "Todd"

簡單吧,x 是?String?類型的,但是在 JS 中能重新定義類型,比如:

var x = "Todd"
x = 42  // Now it"s an int?!

像這種 Java 以后是不是也不用考慮變量類型了?錯,和JS 不一樣,Java 中的 var 只能在局部變量使用外,同時是不能重復(fù)賦值的,就拿上面的例子,會導(dǎo)致編譯錯誤:

public void doSomething() {
    var x = "Todd";
    x = 42;    // Compiler fails on this line: 
               // Error: java: incompatible types: int cannot be converted to java.lang.String
}

所以 var 一點(diǎn)都不危險(xiǎn),Java 也不會因此變成動態(tài)類型分配語言,這僅僅是對局部變量多了一種定義方式。

總結(jié)下

Var 是我們的好朋友;

Java var != JavaScript var;

Var 解決了你顯示聲明變量的一些麻煩,但他們依然存在;

Var 聲明的變量和顯示聲明的變量是一模一樣的;

Var 類型變量不會影響到你其他的代碼;

多了解一下總不會錯吧!

原文鏈接: Java Developers: var Is Your Friend ? Todd Ginsberg?todd.ginsberg.com

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/72288.html

相關(guān)文章

  • 不使用盜版軟件

    摘要:因?yàn)榕笥咽褂玫氖牵瑸榱朔奖悖乙簿拖螺d了正版的軟件,讓他幫我配置上環(huán)境?,F(xiàn)在不同了,如果從長遠(yuǎn)的角度考慮,還是不使用盜版軟件。不過現(xiàn)在情況不同了,英語水平提高,軟件使用方法概念也比較清楚,而且不愿意使用盜版軟件了。 本人微信公眾號:前端修煉之路,歡迎關(guān)注 問題概述 最近跟朋友做的java項(xiàng)目,使用到了mysql和MyEclipse。先談?wù)勎覍浖睦斫?,等?xiàng)目都結(jié)束時,再開一個文章,談...

    supernavy 評論0 收藏0
  • 關(guān)于個人第一天前端面試面試問答QA,希望能對其他找前端工作朋友有所幫助。

    摘要:兩日前,發(fā)了一篇吐槽,莫名的火了一把。關(guān)于的第一個,其實(shí)就是聲明一個常量,不允許變更。另外對象迭代這里出自,阮一峰大神寫的入門指南,對象篇。 兩日前,發(fā)了一篇吐槽,莫名的火了一把。經(jīng)過大家的建議與鼓勵,于是修改了簡歷,開始了重新投遞,2天后接到第一份面試邀請。 此文為個人面試經(jīng)歷,QA問答過程與總結(jié),不透露面試公司及面試人員,內(nèi)容真實(shí),如果有面試過我的大佬看到博客,歡迎指出問題。 循序...

    Youngdze 評論0 收藏0
  • 3年軟件測試經(jīng)驗(yàn)突顯迷茫...不知道我這種測試人員被淘汰???

    這兩天和朋友談到軟件測試的發(fā)展:這一行的變化確實(shí)蠻大,從開始最基礎(chǔ)的功能測試,到現(xiàn)在自動化、性能、安全乃至于以后可能出現(xiàn)的大數(shù)據(jù)測試、AI測試崗位需求逐漸增多。我也在軟件測試這行摸爬滾打了十年了,正好有朋友問我:如何快速成為互聯(lián)網(wǎng)時代優(yōu)秀的測試工程師呢?趁著最近終于有了些閑余時間,遂總結(jié)了下自動化測試的成長線路圖和職業(yè)必備技能,希望可以幫助各位少走彎路、破繭成蝶、邁向成功。 下面我來分享下自動化測...

    fasss 評論0 收藏0
  • 2.準(zhǔn)備—本地工具

    摘要:沒錯,我想這正是我們大多數(shù)人學(xué)習(xí)新東西不斷探索向前時使用最多的工具了。開發(fā)工具推薦是公司旗下一款開發(fā)工具。簡稱是在年月日開發(fā)者大會上正式宣布一個運(yùn)行于和之上的,針對于編寫現(xiàn)代和云應(yīng)用的跨平臺源代碼編輯器,可在桌面上運(yùn)行,并且可用于,和。 ...

    fjcgreat 評論0 收藏0

發(fā)表評論

0條評論

張巨偉

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<