精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java初學者的30個常見問題

開發 后端
本文回答了30個Java入門級初學者的常見問題。 我可以用%除以一個小數嗎? a += b 和 a = a + b 的效果有區別嗎? 聲明一個數組為什么需要花費大量時間? 為什么Java庫不用隨機pivot方式的快速排序?

本文回答了30個Java入門級初學者的常見問題。 我可以用%除以一個小數嗎? a += b 和 a = a + b 的效果有區別嗎? 聲明一個數組為什么需要花費大量時間? 為什么Java庫不用隨機pivot方式的快速排序?

 

1.2 基本數據類型

Q. 為什么 -0/3 結果是 0,而 -0.0/3.0 結果是 -0.0?(注意后邊的結果0帶負號)

A. 在Java里,整數是用補碼表示的。在補碼中0只有一種表示方法。另一方面,浮點數則是用 IEEE 標準表示的, 對于0有兩種表示方法, 0 和 -0。

Q. 我可以用 % 除以一個小數嗎?

A. 當然可以。比如,如果 angle 是一個非負數,那么 angle % (2 * Math.PI) 就會把 angle 轉換到 0 到 2 π 之間。

Q. 當 a b 都是基本類型變量時,a += b 和 a = a + b 的效果有區別嗎?

A. 當 a 和 b 的類型不同時,那兩條語句的效果就可能有區別。 a += b 等同于 a = (int) (a + b),這種情況下可以是 a是int型,b是float型。但是同等情況下 a = a + b 就會編譯報錯。

 

1.3 條件語句和循環語句

Q. 為什么判斷字符串相等不能使用 == ?

A. 這反映了基礎類型(int, double, boolean)和引用類型(String)的區別。

Q. 有沒有在什么情況下,一條語句塊的花括號不能省略的?

A. 在下面的例子中,***段代碼是合法的,第二段代碼會引發編譯錯誤。從技術角度說,那一條語句是一個變量聲明,而不是語句,所以會報錯。

  1. // legal  
  2. for (int i = 0; i <= N; i++) {  
  3.    int x = 5;  
  4. }  
  5.  
  6. // illegal  
  7. for (int i = 0; i <= N; i++)  
  8.    int x = 5

Q. 在下面的兩段代碼里,有沒有情況,它們的效果不一樣?

  1. for (<init stmnt> <boolean expr>; <incr stmnt>) {  
  2.    <body statements>  
  3. }  
  4.  
  5. <init stmnt>;  
  6. while (<boolean expr>) {  
  7.    <body statements>  
  8.    <incr stmnt>  

A. 有的。如果在循環塊里使用 continue 語句。在for的代碼里,計數器會加一;而在while的代碼里,因為被continue略過了,計數器不加一。

 

1.4 數組

Q. 某些Java開發人員使用 int a[] 而不是 int[] a 去聲明一個數組。這兩者有什么區別?

A. 在Java中這兩種用法都是合法的,他們的作用都是一樣的。前者是在C中的定義數組的方法。后者是JAVA推薦的方法,因為它的寫法 int[] 更能表明這是一個 int 的數組。

Q. 為什么數組下標從0 開始 而不是從 1 開始?

A. 這種傳統起源于機器語言的編程方法。在機器語言中,數組下標被用來計算元素位置與***個元素之間的偏移量。如果從1開始的話,計算偏移時還需要做一次減法運算,那是種浪費。

Q. 如果我用 負數 作為數組下標會發生什么事?

A. 下標小于0 或者 大于等于數組長度,JAVA運行時會拋出 ArrayIndexOutOfBoundsException 異常,并且中止程序運行。

Q. 使用數組時還有其他需要注意的陷阱嗎?

A. 需要記住,JAVA在你創建一個數組時會去初始化它,所以聲明一個數組需要 O(N)的時間。

Q. 既然 a[] 是一個數組,為什么 System.out.println(a) 會打印出一個16進制的數,就像 @f62373 這樣,而不是打印出數組的元素?

A. 好問題。這條語句打印出的是 數組在內存中的地址,不幸的是,在絕大多數情況下,這不是你需要的。

 

1.5 輸入輸出語句

Q. 我可以從標準input中重新讀一次數據嗎?

A. 不可以,你只能讀一次。

Q. 怎樣輸入 end-of-file (eof) 符號?

A. 操作系統自動包括它了。

Q. 使用 printf() 時還有哪些用法?

A. 對于整數來說,使用 o 輸出八進制,使用 x 輸出十六進制。對于浮點數來說,使用 e 或者 g 輸出科學計數法形式。

Q. 行結束的符號是什么?

A. 不同的文件系統使用了不同的符號。在 Unix 系統上,新行的符號是 '\n' ;在 Windows 系統上,每一行都有兩個字符組成的字符串終結 "\r\n" ;在 Macs 系統上,終結符號是 "\n\r" 。如果要打印行號,可以使用 System.out.println() ,或者使用下面的語句得到當前操作系統下的行結束符:

  1. String NEWLINE = System.getProperty("line.separator"); 

Q. 下面兩種寫法,哪一種更有效率?

  1. String s;                           
  2. while (!StdIn.isEmpty()) {        while (!StdIn.isEmpty()) {  
  3.     s = StdIn.readString();           String s = StdIn.readString();  
  4.     ...                               ...  
  5. }                                 } 

A. 從效率角度說,兩者沒有區別。 但是第二種寫法更好,因為它限制了變量的作用域。

 

2.1 函數調用

Q. 當把數組當作函數調用時的參數時,我常常感到疑惑?

A. 是的。你需要牢記傳值參數(參數是基本變量類型)和傳引用參數(比如數組)之間的區別。

Q. 那為什么不把所有的參數都使用傳值的方式,包括對待數組?

A. 但數組很大時,復制數組需要大量的性能開銷。因為這個原因,絕大多數變成語言支持把數組傳入函數但不復制一個副本——MATLAB語言除外。

 

2.3 遞歸調用

Q. 有沒有只能用循環而不能用遞歸的情況?

A. 不可能,所有的循環都可以用遞歸替代,雖然大多數情況下,遞歸需要額外的內存。

Q. 有沒有只能用遞歸而不能用循環的情況?

A. 不肯能,所有的遞歸調用都可以用循環來表示。比如你可以用while的方式來實現棧。

Q. 那我應該選擇哪個,遞歸的方式 還是 循環的方式?

A. 根據代碼的可讀性和效率性之間做權衡。

Q. 我擔心使用遞歸代碼時的空間開銷和重復計算(例如用遞歸解Fibonacci)的問題。有沒有其他需要擔心的?

A. 在遞歸代碼中創建大數據類型(比如數組)時需要額外注意,隨著遞歸的推進,內存使用將會迅速增加,由于內存使用增加,操作系統管理內存的時間開銷也會增加。

 

4.2 排序與查找

Q. 為什么我們要花大篇幅來證明一個程序是正確的?

A. 為了防止錯誤的結果。二分查找就是一個例子。現在,你懂得了二分查找的原理,你就能把遞歸形式的二分查找改寫成循環形式的二分查找。Knuth 教授在 1946年就發表了二分查找的論文,但是***個正確的二分查找的程序在 1962年在出現。

Q. 在JAVA內建庫中有沒有排序和查找的函數?

A. 有的。在 java.util.Arrays 中包含了 Arrays.sort() 和 Arrays.binarySearch() 方法。對于Comparable 類型它使用了 歸并排序,對于基本數據類型,它使用了快速排序。因為基本類型是值傳遞,快速排序比歸并排序更快而且不需要額外的空間。

Q. 為什么JAVA庫不用 隨機pivot方式的快速排序?

A. 好問題。 因為某些程序員在調試代碼時,可能需要確定性的代碼實現。使用隨機pivot違背了這個原則。

 

4.3 棧和隊列

Q. 在Java庫中有對stacks 和 queues 的實現嗎?

A. Java庫中內建 java.util.Stack,但是你應該避免使用它如果你需要一個真正的棧的話。因為它是實現了額外的功能,比如訪問第N個元素。另外,它也支持從棧底部插入元素,所以它看上去更像是一個隊列。盡管實現了這些額外的功能對編程人員是一個加分,可是我們使用數據結構并不只是想使用所有功能,而是需要我們正好需要的那種結構。JAVA對于棧的實現就是一個典型的寬接口的例子。

Q. 我想使用數組來表示一個包含泛型的棧,但是以下代碼編譯報錯。為什么?

  1. private Item[] a = new Item[max];   
  2. oldfirst = first;  

A. 不錯的嘗試。不幸的是,創建一個泛型數組在 Java 1.5里不支持。你可以使用cast,比如下面的寫法:

  1. private Item[] a = (Item[]) new Object[max];   
  2. oldfirst = first;  

根本的原因是JAVA中的數組是“協變的(covariant)”,但是泛型并不是。比如, String[] 是 Object[]的一種子類型,但是 Stack<String>并不是 Stack<Object> 的一種子類型。 許多程序員認為“協變的”數組是JAVA在數據類型方面的一個缺點。但是,如果我們不考慮泛型,“協變的”數組是有用的,比如實現 Arrays.sort(Comparable[]) 方法,然后當參數是 String[]時它也可以被正常調用。

Q. 可不可以在數組上使用 foreach 方式?

A. 可以的(雖然 數組并沒有實現 Iterator 接口)。請參考下面的代碼:

  1. public static void main(String[] args) {  
  2.    for (String s : args)  
  3.       StdOut.println(s);  
  4. }  

Q. 在 linked list 上使用 iterator 是不是比循環或者遞歸更有效率?

A. 編譯器在翻譯時,可能把那種“尾遞歸”形式翻譯成等價的循環形式。所以可能并沒有可以被觀測到的性能提升。

尾部遞歸是一種編程技巧。如果在遞歸函數中,遞歸調用返回的結果總被直接返回,則稱為尾部遞歸。尾遞歸是極其重要的,不用尾遞歸,函數的堆棧耗用難以估量,需要保存很多中間函數的堆棧。比如f(n, sum) = f(n-1) + value(n) + sum; 會保存n個函數調用堆棧,而使用尾遞歸f(n, sum) = f(n-1, sum+value(n)); 這樣則只保留后一個函數堆棧即可,之前的可優化刪去。

Q. 自動裝箱機制會怎么處理下面的情況?

  1. Integer a = null;  
  2. int b = a; 

A. 它將返回一個運行時錯誤。基礎類型不允許它對應的裝箱類型里的值是null。

Q. 為什么***組打印的是 true,但是后面兩組打印的是 false?

  1. Integer a1 = 100;  
  2. Integer a2 = 100;  
  3. System.out.println(a1 == a2);   // true  
  4.  
  5. Integer b1 = new Integer(100);  
  6. Integer b2 = new Integer(100);  
  7. System.out.println(b1 == b2);   // false  
  8.  
  9. Integer c1 = 150;  
  10. Integer c2 = 150;  
  11. System.out.println(c1 == c2);   // false 

A. 第二組代碼打印 false 是因為 b1 和 b2 指向不同的 Integer 對象引用。***組和第三組依賴于自動裝箱機制。 令人意外的***組打印了 true 是因為在 -128 和 127 之間的值會自動轉換成同樣的immutable型的Integer 對象。對于超出那個范圍的數,Java會對于每一個數創建一個新的Integer對象。


本文翻譯自《Introduction to Programming in Java》一書中部分章節的 Q&A 部分。原書地址 http://introcs.cs.princeton.edu/java/home/

譯文鏈接:http://www.cnblogs.com/newyorker/archive/2013/02/19/2915108.html

責任編輯:林師授 來源: 博客園
相關推薦

2015-12-21 11:45:27

C語言常見問題錯誤

2011-08-24 09:54:05

Lua字符春交互

2011-06-23 18:33:37

SEO

2009-06-15 13:17:37

Java初學者Java概念

2020-01-14 17:31:46

數據科學誤區人工智能

2010-10-18 09:30:55

2022-10-19 23:18:27

KubernetesPod錯誤

2019-06-11 09:52:18

IPv6IPv4程序

2011-07-11 17:45:13

java

2011-07-04 14:14:54

java

2020-09-08 19:03:41

Java代碼初學者

2023-01-17 09:27:18

Python語言

2011-09-16 09:38:19

Emacs

2022-04-24 15:21:01

MarkdownHTML

2011-04-12 10:13:24

2024-08-17 12:14:06

2014-01-03 14:09:57

Git學習

2009-06-30 15:22:00

Java還是.NET

2015-09-28 11:15:03

java初學者建議

2010-09-01 09:23:53

DIV CSS
點贊
收藏

51CTO技術棧公眾號

能在线看的av| 四季av综合网站| 无遮挡动作视频在线观看免费入口| 狂野欧美一区| 视频在线一区二区| 不卡中文字幕在线观看| 狂野欧美性猛交xxxxx视频| www.亚洲免费av| 日本精品在线视频 | 久久99国内精品| xvideos成人免费中文版| 91亚洲一区二区| a在线免费观看| 懂色av一区二区三区蜜臀| 国产69精品久久久久9| 中文字幕一区二区三区人妻电影| 99只有精品| 亚洲午夜久久久久久久久电影院| 美国av一区二区三区| 伊人手机在线视频| 久久麻豆精品| 亚洲第一区在线观看| 国内外免费激情视频| 免费av网站在线观看| 成人性视频网站| 国产精品久久久久久久9999| 欧美日韩一级大片| 精品成人自拍视频| 欧美日韩国产综合草草| 国产69精品久久久久999小说| 九九在线视频| 成人午夜视频网站| 国产免费一区二区三区在线能观看| 亚洲色图综合区| 欧美精品乱码| 日韩一级视频免费观看在线| 国产男女激情视频| 丁香花电影在线观看完整版| 国产欧美日韩三区| 精品无码久久久久国产| 亚洲一区 中文字幕| 国产日韩欧美一区在线| 久久国产精品免费视频| 免费看的黄色网| 一区二区三区在线资源| 欧美色综合影院| 精品国产免费av| 黄视频在线免费看| 亚洲人成小说网站色在线| 欧美日韩一区二区三区在线观看免| 国产高清在线观看视频| 久草中文综合在线| 欧美最猛黑人xxxx黑人猛叫黄| 男人与禽猛交狂配| 欧美视频网址| 国产亚洲欧洲高清| 中国毛片在线观看| 人人网欧美视频| 日韩欧美国产一区在线观看| 亚洲欧美aaa| 欧美性理论片在线观看片免费| 精品电影在线观看| 欧美成人精品免费| 色图在线观看| 亚洲综合av网| 亚洲色欲久久久综合网东京热| 一区二区三区伦理| 一区二区视频在线看| 日韩最新中文字幕| 国产69精品久久app免费版| 97久久精品人人做人人爽50路| 99爱精品视频| 精品人妻一区二区三区含羞草| 久久成人久久鬼色| 国产精品自产拍在线观看中文| 免费黄色一级大片| 亚洲综合日韩| 日韩美女写真福利在线观看| 一级片视频在线观看| 先锋亚洲精品| 国产成人福利视频| 伊人精品一区二区三区| 久久久久国产精品一区三寸| 97激碰免费视频| 影音先锋在线国产| 米奇777在线欧美播放| 日韩美女写真福利在线观看| 日韩欧美国产另类| 极品美女销魂一区二区三区免费| 96sao精品视频在线观看| 国产理论片在线观看| 国产福利一区二区三区在线视频| 国产精品二区三区四区| 日本又骚又刺激的视频在线观看| 久久蜜桃av一区二区天堂| 日韩电影大全在线观看| 久cao在线| 亚洲男女一区二区三区| 国产精品入口芒果| 欧洲一区二区三区精品| 欧美视频一区二区三区四区| 日韩av.com| av自拍一区| 亚洲欧美在线免费观看| 午夜激情视频在线播放| 亚洲性图久久| 国产成人啪精品视频免费网| 91美女精品网站| 成人av午夜电影| 日韩精品久久久免费观看| av大大超碰在线| 国产精品免费观看| 波波电影院一区二区三区| 久久久免费看| av在线免费观看网站| 一区二区三区四区在线免费观看| 国产一区二区网| 日韩国产大片| 日韩成人久久久| 成人做爰视频网站| 亚洲毛片一区| 国产在线久久久| 天堂中文字幕在线| 国产精品久久久久久久久免费樱桃 | 欧美日本免费一区二区三区| 18深夜在线观看免费视频| 亚洲资源网你懂的| 色综合久久88| 久草视频在线免费| www.欧美.com| 美女在线免费视频| 99亚洲伊人久久精品影院| 在线成人小视频| 中文字幕高清视频| 你懂的网址国产 欧美| 国产精品爱久久久久久久| 亚洲精品国产suv一区| 中文字幕亚洲一区二区av在线| 91国视频在线| 一区二区日韩| 久久成人亚洲精品| 在线观看免费中文字幕| 中文字幕亚洲情99在线| 国产在线观看成人| 精品亚洲欧美一区| 午夜一区二区三区| 亚洲第一av| 亚洲精品在线观看视频| 动漫性做爰视频| 蜜臀av性久久久久蜜臀aⅴ| 久久精品国产一区二区三区日韩| 性欧美猛交videos| 欧美一区二区三区婷婷月色 | 2024国产精品视频| 妺妺窝人体色www看人体| 婷婷久久综合九色综合99蜜桃| 亚洲天堂av网| 久久亚洲精品石原莉奈 | 欧美 日本 国产| 欧美不卡高清| 91香蕉电影院| 美女写真理伦片在线看| 91国在线观看| 亚洲黄色小说视频| 极品少妇一区二区三区| 99久久久久国产精品免费| 麻豆视频在线免费观看| 51久久夜色精品国产麻豆| 911国产在线| 精品系列免费在线观看| 99亚洲精品视频| 高清一区二区| 欧美大肥婆大肥bbbbb| 精品人妻一区二区三区浪潮在线| 亚洲专区一二三| 又色又爽又黄18网站| 国产精品v日韩精品v欧美精品网站| 97人摸人人澡人人人超一碰| 欧美大胆的人体xxxx| 精品久久久久久久久久久久久久久| 亚洲熟女www一区二区三区| 国产精品亚洲专一区二区三区| 欧美一级中文字幕| a看欧美黄色女同性恋| 欧美精品videos性欧美| 午夜性色福利影院| 日韩欧美精品中文字幕| 少妇愉情理伦三级| 国内精品视频一区二区三区八戒| 7777在线视频| 欧美a一欧美| 国产高清在线不卡| 久热国产在线| 欧美精品一区二区三区在线播放| 欧美精品videos极品| 成人毛片老司机大片| 91精品91久久久中77777老牛| 欧美美乳视频| 亚洲一区二区三区sesese| 国产精品扒开做爽爽爽的视频| 日韩免费观看高清完整版| 精品成人免费视频| 国产色91在线| 国产ts在线观看| 久久性色av| 欧美日韩一级在线| 国产精品宾馆| 国产精品永久在线| av香蕉成人| 精品视频在线播放| 国产精品一区二区黑人巨大| 欧美日韩国产精品专区| 一级黄色片日本| 成人免费高清视频在线观看| 无码少妇一区二区三区芒果| 永久亚洲成a人片777777| 久久精彩视频| 欧美影院在线| 91成人福利在线| 成年人黄视频在线观看| 亚洲男人天堂手机在线| www.久久成人| 欧美日韩中字一区| 五月婷婷开心网| 国产日韩欧美激情| 女王人厕视频2ⅴk| 性一交一乱一区二区洋洋av| 少妇高潮流白浆| 亚洲精品**不卡在线播he| 国产精品手机播放| mm1313亚洲国产精品美女| 亚洲精品自拍第一页| 国产999久久久| 欧美亚洲日本国产| 麻豆视频在线观看| 国产精品久久久久久久久图文区 | 91久久久久| 五月天综合婷婷| 成人看的羞羞网站| 美脚丝袜一区二区三区在线观看| 一区二区在线视频观看| 国产精品视频一区国模私拍| 成人av免费电影网站| 欧美黄色免费网站| 国产高清一区二区三区视频| 伊人青青综合网站| 嫩草精品影院| 国产视频久久久久久久| 99精品人妻无码专区在线视频区| 欧美影院一区二区| 欧美brazzers| 一本一道久久a久久精品| 麻豆一区二区三区精品视频| 综合电影一区二区三区 | 亚洲国产日韩精品| 国产在线免费av| 国产视频一区不卡| 精品无码国产污污污免费网站| av成人老司机| 亚洲男人在线天堂| 99视频精品在线| 91丨porny丨九色| 国产a视频精品免费观看| 女教师高潮黄又色视频| 国产寡妇亲子伦一区二区| 欧洲美女亚洲激情| 韩国女主播成人在线| 中文字幕色网站| 国产一区二区三区观看| 亚洲av毛片在线观看| 国产一二精品视频| 亚洲AV无码久久精品国产一区| 国产精品99精品久久免费| 女同性αv亚洲女同志| 国产成人小视频| 国产精品99精品无码视亚| 成人午夜私人影院| 中文字幕日韩三级片| 99精品视频中文字幕| 91精品小视频| 国产日韩成人精品| 亚洲а∨天堂久久精品2021| 欧美激情一区三区| 国产日韩欧美在线观看视频| 国产精品白丝在线| 国产97免费视频| 亚洲成人免费视| 无码人妻精品一区二区三区不卡 | 日日骚av一区二区| 国产欧美综合在线观看第十页| 国产激情第一页| 国产农村妇女毛片精品久久麻豆| 日韩视频中文字幕在线观看| 亚洲一区二区在线观看视频| av黄色在线播放| 777亚洲妇女| 色综合成人av| 久久精品国产2020观看福利| 国产一二三区在线观看| 97超级碰碰碰| 91成人短视频在线观看| 久久av免费一区| 在线观看日韩| 天天操天天爽天天射| 国产成人免费高清| jizz18女人高潮| 亚洲18女电影在线观看| 国产精品亚洲lv粉色| 亚洲欧美精品在线| 爱看av在线| 91在线观看欧美日韩| 狠狠色狠狠色综合婷婷tag| r级无码视频在线观看| 紧缚奴在线一区二区三区| 人妻精品久久久久中文字幕| 亚洲综合在线视频| 国产在成人精品线拍偷自揄拍| 亚洲免费小视频| av免费不卡国产观看| 91久久在线视频| 日韩av自拍| 北条麻妃在线一区| 99国产精品99久久久久久| 欧美黄色免费看| 91精品国产综合久久久久久久久久| 免费在线看v| 浅井舞香一区二区| 精品亚洲自拍| 成人黄色av片| 成人综合婷婷国产精品久久蜜臀 | 国产精品电影一区二区| 日本黄色中文字幕| 亚洲欧洲自拍偷拍| 三级在线观看视频| 九九九九九九精品| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产又粗又猛大又黄又爽| √…a在线天堂一区| 在线免费观看av片| 中文国产成人精品| 成人黄色在线| 一区二区日本伦理| 男女激情视频一区| 国产在视频线精品视频| 欧美日韩在线一区二区| 伊人在线视频| 成人在线精品视频| 欧美一区国产在线| 少妇熟女视频一区二区三区| 亚洲男人的天堂av| 午夜精品久久久久久久99老熟妇 | 在线天堂新版最新版在线8| 国内一区在线| 欧美资源在线| 激情五月深爱五月| 91精品国产品国语在线不卡| 中文字幕有码在线观看| 99国精产品一二二线| 亚洲精品婷婷| 少妇精品一区二区三区| 日本道精品一区二区三区| 在线观看a视频| 91免费综合在线| 91久久中文| 亚洲综合网在线观看| 欧美日韩一区二区电影| 成a人片在线观看| 好吊色欧美一区二区三区| 另类激情亚洲| 免费黄色激情视频| 日韩欧美国产1| 中国色在线日|韩| 日本一区二区在线| 国产酒店精品激情| 免费看日韩毛片| 中文一区二区视频| 91在线一区| 人人爽人人av| 玉米视频成人免费看| 天堂成人在线| 成人有码在线视频| 亚洲视频1区| 日本一级片免费| 亚洲国产一区二区三区四区| 欧美精选视频一区二区| 潘金莲一级淫片aaaaaa播放1| av电影天堂一区二区在线| 中文字幕一区二区三区四区视频| 欧美成人精品在线视频| 国产精选一区| 伊人影院在线观看视频| 91国产成人在线| 日本动漫同人动漫在线观看| 日韩av一区二区三区美女毛片| 国产91富婆露脸刺激对白| 最近中文在线观看| 久久理论片午夜琪琪电影网| 久久视频在线| 好吊日免费视频| 精品国产成人系列|