成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

張巨偉 / 3032人閱讀

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

簡(jiǎn)評(píng):Java var != JavaScript var。

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

什么是類型推斷

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

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

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

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

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

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

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

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)聲明的變量,同時(shí)也可以用于循環(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)嗎?

一個(gè)字:不。

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

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

var x = "Todd"

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

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

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

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 也不會(huì)因此變成動(dòng)態(tài)類型分配語(yǔ)言,這僅僅是對(duì)局部變量多了一種定義方式。

總結(jié)下

Var 是我們的好朋友;

Java var != JavaScript var;

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

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

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

多了解一下總不會(huì)錯(cuò)吧!

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72288.html

相關(guān)文章

  • 不使用盜版軟件

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

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

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

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

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

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

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

    fjcgreat 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<