电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Stackoverflow上人氣最旺的10個Java問題

瀏覽:75日期:2022-09-05 17:50:37
1、 為什么兩個(1927年)時間相減得到一個奇怪的結果?

(3623個贊)

如果執行下面的程序,程序解析兩個間隔1秒的日期字符串并比較:

public static void main(String[] args) throws ParseException { SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str3 = "1927-12-31 23:54:07"; String str4 = "1927-12-31 23:54:08"; Date sDt3 = sf.parse(str3); Date sDt4 = sf.parse(str4); long ld3 = sDt3.getTime() /1000; long ld4 = sDt4.getTime() /1000; System.out.println(ld4-ld3);}

輸出是:

353

為什么 ld4-ld3 不是1(因為我希望這兩個時間差是一秒),而是353?

如果將日期字符串各加一秒:

String str3 = "1927-12-31 23:54:08"; String str4 = "1927-12-31 23:54:09";

ld4-ld3 的結果是1.

sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]Locale(Locale.getDefault()): zh_CN

解決方案

這是上海時區,在12月31日有一個變化。

查閱這個網址來了解上海在1927年時區變化的細節。基本上在1927年年底的午夜,始終會回撥5分52秒。所以“1927-12-31 23:54:08”實際上發生了兩次,看起來Java解析了后一次的時間作為當地的日期和時間導致了差異。

2、Java是“引用傳遞”還是“值傳遞”?

(2480個贊)

我一直認為Java是引用傳遞;然而,我看了一堆博客(例如這篇)聲稱不是這樣的。我認為我沒有理解它們之間的區別。

給個解釋?

解決方案

Java一直是值傳遞。不幸的是,他們決定把指針叫做引用,因此新人總是被搞暈。因為這些引用也是通過值傳遞的。

3、一個關于Java += 操作符的問題

(2223贊)

直到今天我認為這個例子:

i += j;

只是一個簡寫的:

i = i + j;

但如果這樣做:

int i = 5;long j = 8;

然而 i = i + j; 沒法編譯,而 i += j; 就可以編譯。

這意味著i += j; 實際上是i = (type of i) (i + j)的簡寫么?

解決方案

總有人問這類問題,JLS里有答案。參見 §15.26.2復合賦值運算符。摘錄:

E1 op= E2 型的復合賦值表達式等價于 E1 = (T)((E1) op (E2)),這里 T 是 E1 的類型,不同的是 E1 只計算一次。

一個例子,引自 §15.26.2

[...] 下面的代碼是正確的:

short x = 3;x += 4.6;

x的結果等于7,因為它等價于:

short x = 3;x = (short)(x + 4.6);

換句話說,你的假設是正確的。

4、HashMap 和 Hashtable 之間的不同?

(1769個贊)

Java中 HashMap 和 Hashtable的不同是什么?

非多線程應用中使用哪個更有效率?

解決方案

Java 中 HashMap 和 HashTable 有幾個不同點:

Hashtable 是同步的,然而 HashMap不是。 這使得HashMap更適合非多線程應用,因為非同步對象通常執行效率優于同步對象。Hashtable 不允許 null 值和鍵。HashMap允許有一個 null 鍵和人一個 NULL 值。HashMap的一個子類是LinkedHashMap。所以,如果想預知迭代順序(默認的插入順序),只需將HashMap轉換成一個LinkedHashMap。用Hashtable就不會這么簡單。

因為同步對你來說不是個問題,我推薦使用HashMap。如果同步成為問題,你可能還要看看ConcurrentHashMap。

5、(如何) 讀取或者把一個 InputStream 轉成一個 String

(1724個贊)

如果你有一個 java.io.InputStream 對象,如處理這個對象并生成一個字符串?

假定我有一個 InputStream 對象,它包含文本數據,我希望將它轉化成一個字符串(例如,這樣我可以將流的內容寫到一個log文件中)。

InputStream 轉化成 String 最簡單方法是什么?

解決方案

使用 Apache commons IOUtils庫來拷貝InputStream到StringWriter是一種不錯的方式,類似這樣:

StringWriter writer = new StringWriter();IOUtils.copy(inputStream, writer, encoding);String theString = writer.toString();

甚至

// NB: does not close inputStream, you can use IOUtils.closeQuietly for that// 注意:不關閉inputStream,你可以使用 IOUtils.closeQuietlyString theString = IOUtils.toString(inputStream, encoding);

或者,如果不想混合Stream和Writer,可以使用 ByteArrayOutputStream。

6、為什么Java中的密碼優先使用 char[] 而不是String?

(1574個贊)

在Swing中,密碼字段有一個getPassword()(返回 char數組)方法而不是通常的getText()(返回String)方法。同樣的,我遇到過一個建議,不要使用 String 來處理密碼。

為什么String涉及到密碼時,它就成了一個安全威脅?感覺使用char數組不太方便。

解決方案

String是不可變的。這意味著一旦創建了字符串,如果另一個進程可以進行內存轉儲,在GC發生前,(除了反射)沒有方法可以清除字符串數據。

使用數組操作完之后,可以顯式地清除數據:可以給數組賦任何值,密碼也不會存在系統中,甚至垃圾回收之前也是如此。

所以,是的,這是一個安全問題 – 但是即使使用了char數組,僅僅縮小了了攻擊者有機會獲得密碼的窗口,它值針對制定的攻擊類型。

7、遍歷HashMap的最佳方法

(1504個贊)

遍歷HashMap中元素的最佳方法是什么?

解決方案

這樣遍歷entrySet:

public static void printMap(Map mp) { Iterator it = mp.entrySet().iterator(); while (it.hasNext()) {Map.Entry pair = (Map.Entry)it.next();System.out.println(pair.getKey() + " = " + pair.getValue());it.remove(); // avoids a ConcurrentModificationException }}

更多請查閱Map。

8、(如何)從數組創建ArrayList

(1468個贊)

我有一個數組,初始化如下:

Element[] array = {new Element(1), new Element(2), new Element(3)};

我希望將這個數組轉化成一個ArrayList類的對象。

解決方案

new ArrayList<Element>(Arrays.asList(array))9、產生一個Java的內存泄露

(1478個贊)

我有過一個面試,被問到如何產生一個Java內存泄露。不用說,我感到相當傻,甚至如何產生一個的線索都沒有。

那么怎么才能產生一個內存泄露呢?

解決方案

在純Java中,有一個很好的方式可以產生真正的內存泄露(通過執行代碼使對象不可訪問但仍存在于內存中):

應用產生一個長時間運行的線程(或者使用一個線程池加速泄露)。線程通過一個(可選的自定義)類加載器加載一個類。該類分配大內存(例如,new byte[1000000]),賦值給一個強引用存儲在靜態字段中,再將它自身的引用存儲到ThreadLocal中。分配額外的內存是可選的(泄露類實例就夠了),但是這樣將加速泄露工作。線程清除所有自定義類的或者類加載器載入的引用。重復上面步驟。

這樣是有效的,因為ThreadLocal持有對象的引用,對象持有類的引用,接著類持有類加載器的引用。反過來,類加載器持有所有已加載類的引用。這會使泄露變得更加嚴重,因為很多JVM實現的類和類加載都直接從持久帶(permgen)分配內存,因而不會被GC回收。

10、使用Java在一個區間內產生隨機整數數

(1422個贊)

我試著使用Java生成一個隨機整數,但是隨機被指定在一個范圍里。例如,整數范圍是5~10,就是說5是最小的隨機值,10是最大的。5到10之間的書也可以是生成的隨機數。

解決方案

標準的解決方式(Java1.7 之前)如下:

import java.util.Random;public static int randInt(int min, int max) { Random rand; int randomNum = rand.nextInt((max - min) + 1) + min; return randomNum;}

請查看相關的JavaDoc。在實踐中,java.util.Random 類總是優于 java.lang.Math.random()。

特別是當標準庫里有一個直接的API來完成這個工作,就沒有必要重復制造輪子了。

原文鏈接: nolsit 翻譯: ImportNew

標簽: Java
相關文章:
主站蜘蛛池模板: 大倾角皮带机-皮带输送机-螺旋输送机-矿用皮带输送机价格厂家-河南坤威机械 | 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | 智能家居全屋智能系统多少钱一套-小米全套价格、装修方案 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 谷梁科技| 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 解放卡车|出口|济南重汽|报价大全|山东三维商贸有限公司 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 桂林腻子粉_内墙外墙抗裂砂浆腻子粉推荐广西鑫达涂料厂家供应 | 不锈钢电动球阀_气动高压闸阀_旋塞疏水调节阀_全立阀门-来自温州工业阀门巨头企业 | 河南正规膏药生产厂家-膏药贴牌-膏药代加工-修康药业集团官网 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 隔爆型防爆端子分线箱_防爆空气开关箱|依客思 | 天津暖气片厂家_钢制散热器_天津铜铝复合暖气片_维尼罗散热器 | 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 学考网学历中心| 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 标准品网_标准品信息网_【中检计量】 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 滑石粉,滑石粉厂家,超细滑石粉-莱州圣凯滑石有限公司 | 淘趣英语网 - 在线英语学习,零基础英语学习网站 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 不锈钢/气体/液体玻璃转子流量计(防腐,选型,规格)-常州天晟热工仪表有限公司【官网】 | 磁棒电感生产厂家-电感器厂家-电感定制-贴片功率电感供应商-棒形电感生产厂家-苏州谷景电子有限公司 | 广东燎了网络科技有限公司官网-网站建设-珠海网络推广-高端营销型外贸网站建设-珠海专业h5建站公司「了了网」 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 泰安办公家具-泰安派格办公用品有限公司 | 风淋室生产厂家报价_传递窗|送风口|臭氧机|FFU-山东盛之源净化设备 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 掺铥光纤放大器-C/L波段光纤放大器-小信号光纤放大器-合肥脉锐光电技术有限公司 | 短信群发平台_群发短信软件_短信营销-讯鸽科技 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 |