日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

臭名昭著的Java错误和陷阱

發(fā)布時(shí)間:2023/12/3 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 臭名昭著的Java错误和陷阱 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在2000年,我上大學(xué),瀕臨選擇一種語言來發(fā)展自己的職業(yè)。 Java尚未成為主流,但很受人們歡迎。 與靜態(tài)html頁面相比,小應(yīng)用程序(尚未破碎)花哨且富有光澤。 Swing不是構(gòu)建桌面應(yīng)用程序的不錯(cuò)選擇。 J2EE越來越受到關(guān)注。 從那時(shí)起已經(jīng)過去了13年,盡管小程序失敗了,Java成為主流,盡管對(duì)于小應(yīng)用程序而言,它并沒有真正考慮到這一點(diǎn),而且J2EE太復(fù)雜了,甚至無法構(gòu)建簡單的東西,但是仍然沒有什么阻止Java成為最受歡迎的編程語言。

毫不奇怪,Java非常漂亮,類型安全且易于學(xué)習(xí)。 Java中有很多很好的實(shí)現(xiàn)細(xì)節(jié),例如垃圾收集器,字符串
(最終類),提供了合并和快速排序的出色實(shí)現(xiàn)的集合,內(nèi)置在哈希碼方法中的等等。 但是,Java仍然遠(yuǎn)非完美,可能會(huì)引入一些意想不到的行為。

Abs錯(cuò)誤:

好吧,這是一個(gè)非常小的缺陷,但是Math.abs()函數(shù)可能會(huì)返回負(fù)值。 奇怪的? 實(shí)際上很簡單,Java整數(shù)可以得到-2,147,483,648到2,147,483,647之間的值,這清楚地表明-2,147,483,648不能以正數(shù)表示。

那是一個(gè)錯(cuò)誤嗎? 好吧,期望值是正的,所以可以肯定,但是最終這實(shí)際上是一個(gè)溢出。 那么如何解決呢? 一種方法是在使用abs函數(shù)或使用位運(yùn)算符代替之前操縱Integer.MIN_VALUE。

自動(dòng)裝箱基元陷阱:

通過自動(dòng)裝箱,可以輕松地使用基本類型及其對(duì)象對(duì)應(yīng)物。 但是,在它們之間移動(dòng)可能會(huì)導(dǎo)致某些意外行為。 例如,不能使用==運(yùn)算符將Integer i1 = 6與Integer i2 = 6進(jìn)行比較,其中可以將int i3 = 6與具有==的整數(shù)進(jìn)行比較。 但是,使用equals可能也無法按預(yù)期工作。 例如Long x = 0L; 當(dāng)x.equals(0L)返回true,而當(dāng)x.equals(0)返回false。 奇怪的? 并非如此,因?yàn)閤很長,其中0(沒有L)是int。 因此,它們甚至不是相同的對(duì)象類型。 還將原始類型與集合一起使用可能會(huì)導(dǎo)致意外行為。 最后,自動(dòng)裝箱可能會(huì)導(dǎo)致過載問題。 假設(shè)我們有Integer i = 6并調(diào)用方法sum(i); 我們有兩種求和方法,例如; sum(long val)和sum(Long val)。 您認(rèn)為會(huì)叫哪一個(gè)? 還是合理的,但不希望乍一看,可能會(huì)導(dǎo)致應(yīng)用程序出現(xiàn)問題。

BigDecimal構(gòu)造函數(shù)錯(cuò)誤:

如果您尚未查看Joshua Bloch的Java Puzzlers 。 如果使用雙精度構(gòu)造函數(shù)創(chuàng)建兩個(gè)大十進(jìn)制數(shù)(x1 = new BigDecimal(2.00)和x2 = new BigDecimal(1.10)),然后使用減法(x1.subtract(x2)),則最終結(jié)果為0.8999999999。 BigDecimal的double構(gòu)造函數(shù)無法按預(yù)期工作,而需要使用字符串構(gòu)造函數(shù)(新的BigDecimal(“ 2.00”))。 這可能是一個(gè)嚴(yán)重的問題,因?yàn)锽igDecimal被廣泛用于金錢計(jì)算!

System.out.println陷阱:

println()是對(duì)CS學(xué)生更難的第一個(gè)函數(shù)。 它很容易并且經(jīng)常使用。 當(dāng)您嘗試某些邏輯或調(diào)試某些值時(shí),通常可以使用。 但是System.out是同步的,因此在訪問時(shí)會(huì)獲取一個(gè)鎖。 因此,使用println可能會(huì)使您的應(yīng)用程序在同步上下文中運(yùn)行,這實(shí)際上意味著訪問println時(shí)線程將被阻塞。 想象一下使用println的Web服務(wù)器和應(yīng)用程序日志記錄,您最終將獲得線程鎖,并且每個(gè)請(qǐng)求都在等待其他請(qǐng)求。 因此,println可以而且有用,但不適用于實(shí)際的應(yīng)用程序和日志記錄!

地圖錯(cuò)誤:

再次看一下Joshua Bloch的Java Puzzlers ,第五個(gè)難題(大小很重要)在HashMap和EnumMap之間引入了一種奇怪的行為,其中具有相同的值,一個(gè)地圖的大小為2,另一個(gè)地圖的大小為1。作為IdentityHashMap,EnumMap可能會(huì)引入此行為。

這是錯(cuò)誤嗎? 可以肯定的是,我們期望地圖實(shí)現(xiàn)中具有相同的原理,但是Bloch描述了這一點(diǎn),因?yàn)楫?dāng)時(shí)的規(guī)范尚不清楚。

CPU編號(hào)錯(cuò)誤:

除非您真的依賴硬件,否則這可能不是一個(gè)大問題。 為了獲得可用處理器數(shù),Java提供了Runtime.getRuntime()。availableProcessors()方法,該方法返回一個(gè)int數(shù)作為可用處理器數(shù)。 但是,如果嘗試一下,最終可能會(huì)得到意外的數(shù)字。 例如,在我的四核i7上,我得到8。因此,此方法不返回硬件cpus數(shù)量,也不是核心數(shù)量,而是返回執(zhí)行引擎(虛擬核心)數(shù)量。 就我而言,因?yàn)樗暮薸7支持超踩,所以實(shí)際上它就像擁有八核。

那是一個(gè)錯(cuò)誤嗎? 絕對(duì)不是,因?yàn)橛布筒僮飨到y(tǒng)的運(yùn)行方式就好像它們具有的物理CPU數(shù)量一樣,但是如果您依靠可靠的硬件,仍然要小心。

通用數(shù)組

在Java中,創(chuàng)建數(shù)組的方式如下:int [] arr = new int [5]; 因此,如果您具有T的通用類型,則希望以這種方式創(chuàng)建通用數(shù)組:T [] = new T [5]; 但根本不能。 Java不允許創(chuàng)建泛型數(shù)組,這實(shí)際上是因?yàn)榉盒褪鞘褂肊rasure在Java中實(shí)現(xiàn)的。 泛型僅在編譯器級(jí)別實(shí)現(xiàn),實(shí)際上每個(gè)類僅生成一個(gè)類文件。 因此,要?jiǎng)?chuàng)建數(shù)組,我們需要進(jìn)行如下丑陋的轉(zhuǎn)換:T [] =(T [])new Object [5]; 當(dāng)您嘗試編譯時(shí),編譯器會(huì)發(fā)出警告,提示您正在進(jìn)行不安全的轉(zhuǎn)換!

當(dāng)然,這不是錯(cuò)誤,它只是在實(shí)現(xiàn)泛型時(shí)為了簡化和兼容性而給出的實(shí)現(xiàn)問題。 但是在設(shè)計(jì)問題上發(fā)出編譯器警告可能會(huì)使第一次遇到該問題的人感到困惑。 因此,這絕對(duì)不是清單的結(jié)尾,但是Java仍然提供了漂亮的語法,類型安全性和易于實(shí)現(xiàn)的易于學(xué)習(xí)的語言。 最后,沒有語言或?qū)崿F(xiàn)是完美的!

參考: Developer Chronicles博客上來自我們JCG合作伙伴 Murat Yener的臭名昭著的Java錯(cuò)誤和陷阱 。

翻譯自: https://www.javacodegeeks.com/2013/04/infamous-java-bugs-and-pitfalls.html

總結(jié)

以上是生活随笔為你收集整理的臭名昭著的Java错误和陷阱的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91国内揄拍国内精品对白 | 欧美一区二区高清 | 成人免费看片98 | 影音av在线| 亚洲无码一区二区三区 | 在线观看黄色国产 | 中文字幕不卡一区 | 日韩女同强女同hd | 贝利弗山的秘密1985版免费观看 | 日本韩国欧美一区 | 欧美成人一区二区三区 | 青草青草视频 | 亚洲欧美一区二区三区情侣bbw | 中文字幕在线视频一区 | 国产精品呦呦 | 38在线视频 | 成人一二区 | 久久91亚洲 | 性色av一区二区三区免费 | jjzz国产| 婷婷看片 | japanese中文字幕 | 福利资源在线 | av在线免费观看网站 | 午夜亚洲aⅴ无码高潮片苍井空 | 在线毛片观看 | 男人天堂视频在线观看 | 五月天中文字幕 | 国产午夜精品理论片 | 伊人手机在线视频 | 精品一区二区三区视频在线观看 | 国产浮力影院 | 99久久精品一区二区成人 | 最新中文字幕在线视频 | 亚洲精品爱爱 | 国产精品情侣呻吟对白视频 | 国产无遮挡18禁无码网站不卡 | 黑人巨大猛烈捣出白浆 | 99热只有这里有精品 | 成人一区二区三区视频 | 成人福利视频网 | 青青草伊人网 | 精品少妇爆乳无码av无码专区 | 性xxxx视频播放免费 | 丰满白嫩尤物一区二区 | 国产精品第 | 国产成人精品一区二区三区在线观看 | 日韩第二页 | 国产专区欧美专区 | 极品探花在线观看 | 蜜桃av噜噜一区二区三区网址 | 精品视频 | 懂色av蜜臀av粉嫩av分 | 欧美综合精品 | 精品国产一区二区视频 | 日本少妇做爰全过程毛片 | av大片免费观看 | 蜜臀久久99精品久久久 | 亚洲av无码精品色午夜果冻不卡 | 天天爱综合网 | 特黄级 | 日本高清视频在线观看 | 免费成人深夜 | 亚洲一区有码 | 成人在线观看18 | 丁香色欲久久久久久综合网 | 热久久免费视频 | 一级黄色免费观看 | 奇米在线 | 九七在线视频 | 91小宝寻花一区二区三区 | 国产乱淫av公 | 中文字幕伊人 | 久热精品视频 | 欧美一区亚洲 | 日韩精品视频在线播放 | 人妻少妇被猛烈进入中文字幕 | 男女激情啪啪 | 久久99精品久久久久久噜噜 | 国产精品一区二区久久久 | 中文字字幕在线中文乱码电影 | 亚洲射图 | 国产骚b| 一区二区三区www污污污网站 | 一级毛片黄色 | 青娱乐导航 | 国产91成人 | 1区2区3区视频 | 日本成人免费观看 | 好吊色网站 | 国产无遮挡又黄又爽在线观看 | 天天玩天天操 | 欧美成人免费播放 | 色七七视频| 国产偷拍一区二区三区 | 扒下小娇妻的内裤打屁股 | 亚洲国产网 | 丰满圆润老女人hd | 亚洲综合久久久 |