首頁>Club>
有語句int i=Integer.MIN_VALUE 則(i-1)+(i-1L)的值為? 求解析不甚感激
6
回覆列表
  • 1 # 小逗電競

    這個問題看似簡單,但如果不實際測試可能還真會搞錯,最好的辦法是寫個Demo將各個值輸出,就能揣摩出其中的意思,咱們結合程式及輸出來分析下:

    在Java中整形是有資料範圍的,其中最小值:Integer.MIN_VALUE是-2147483648。如果在此基礎上再減1,就會出現溢位現象,從輸出結果看已經變成:2147483647。而(i-1L)返回是long長整形,再減去1,不會發生溢位正常計算,結果是:-2147483649。

    (i-1):2147483647

    (i-1L):-2147483649

    所以,(i-1) + (i-1L)結果就是:-2。

  • 2 # Java非著名程式設計師

    1、包衝突和類裝載。

    有一個專案是用maven管理的,當時對maven的dependency裡頭的機制還不太懂,一不小心引入了apache httpclient裡頭的2個版本,好像是4.3和4.4。很不巧,4.4版本有一個新的API。

    我用的IDE是IntelliJ,它識別出來了4.4,所以給的程式碼提示都是4.4的。

    但實際執行的時候,老提示method not found,查了大半天。後來請教別人,用dependency:tree命令看一下有沒有版本衝突問題。果然……exclude之後就好了。

    2、Eclipse的坑

    在IntelliJ出來之前,Eclipse應該是唯一的事實IDE(雖然我用NetBeans比較多……)。但Eclipse的J2EE容器整合好像有點小問題。在開啟熱編譯替換的情況下,如果替換失敗,Eclipse TMD不告訴你啊!!!!所以我是從來不相信Eclipse的結果的。。。提交程式碼前,一定會用純命令列跑一下maven,以命令列下的結果為準。

    現在能用IntelliJ就用IntelliJ,付費旗艦版使用者(正版驕傲臉)。

    3、Spring的各種不知道是不是bug的問題

    Spring這個框架,很好,很給力,用來快速搭建專案是極好的。尤其是用了SpringBoot以後。但如果用的周邊配套有點多的話……有小機率會打架,也就是前面其他人說過的“重啟一下就好了”的問題……當然,極大可能是我對這個龐然大物瞭解不透徹,這個框架是工業級別的,要給予肯定。

    現在不用Spring了,只用Jersey+自己寫的外圍外掛。

    4、不知道是否允許null的問題

    這個問題很大程度屬於管理+設計問題,但Java的語法也要背上一定的鍋。因為從語法層面上,並不能反映“在設計上,一個變數正常情況下是否為null”。更恐怖的是,當團隊大起來,加上水平參差不齊,再加上有幾個“勤奮”的新手,BOOM……有人說,有@NotNull Annotation,但你也要知道,Annotation自身並沒有什麼卵用……Annotation要配合生命週期管理、依賴注入才有用,還嚴重受限於你所用的依賴注入,是否處理了這個Annotation,有的會自己定義另外一套……看過不少人,各種變數標記了@NotNull,但是自己手工new出來,有個蛋蛋用啊……

    所以為了應對這個設計問題+新手問題,不得不在函式呼叫的第一行,加上 assert,但這樣程式碼就很臃腫了。

    Kotlin在這方面做的很好,語法上強化了null safety。有興趣的可以瞭解一下,可以減少很多噩夢。

  • 中秋節和大豐收的關聯?
  • 能否用簡單的白話解釋一下楞嚴經到底說的是什麼?