java中的一些陷阱

2021-07-31 17:37:03 字數 1378 閱讀 1089

1、判斷不是否奇數: 不能i%2==1, 注意負數;應該是i%2!=0;

2. 2.0-1.1 的值, 因為計算機無法表示double的1.1,

3、long a = 24*60*60*1000*1000; //微秒

long b = 24*60*60*1000; //毫秒

a/b的值不是1000, 因為24*60*60*1000*1000是int*int*int*int*int,再把int值賦給long的a,但是int值越界。 更正:

long a =24l*60*60*1000*1000; //微秒

long b =24l*60*60*1000; //毫秒

計算long時要加l

4、 . 要用的轉義字元 \\.

5. 慎用單引號,因為char有可能轉為int

6、j=j++; j不會自增

7、注意運算子% *的優先順序,實在不清楚就加括號

public static void main(string args) 

} system.out.println(minutes);

}

先計算m%60,再計算*了,可能得不到預期的結果

8、finally不一定會執行,程式退出就不執行finally了(程式退出:system.exit(0))

9、遍歷集合用iterator, 不要用列舉element

10、response.getwriter(), response.getoutputstream()不能同時用

11. super()和this()區別:

this():當前類的無參構造方法, super():父類的無參構造方法。

12. overload與override的區別:

overload是編譯時多型,返回值可以相同也可以不相同;

override是執行時多型, 作用域要大於等於父類

13. final類的特點: 不能再被繼承, 裡面的方法不能被重寫;裡面變數都是static

14. 得到class的三種方法:1. 像 string.getclass(); 2.class.forname("");3.有些類如integer有特殊的就去得到

char型中可以儲存中文漢字, 因為char型可以儲存unicode, unicode包括漢字, 2個位元組

15. sleep()和wait()區別: sleep()不會放棄物件鎖,時間到了自動醒,接著執行;wait()會放棄物件鎖, 要等同乙個物件的notify方法才能醒。

16. include兩種實現方式區別:

<%include%> 靜態包含

動態包含

Java併發中的一些概念

併發和並行這兩個概念經常被大家所混淆。併發是指多個任務交替的進行,並行是指多個任務同時進行。所以單核cpu只能實現併發,不能實現並行。同步是指任務的執行,必須完全結束才能繼續執行後續任務。非同步是指任務開始執行後,將任務放在另外乙個執行緒中執行,本執行緒直接就可以繼續執行後續任務。比如乙個人拿著水杯...

java的一些感念

1 物件的初始化 1 非靜態物件的初始化 在建立物件時,物件所在類的所有資料成員會首先進行初始化。基本型別 int型,初始化為0。如果為物件 這些物件會按順序初始化。構造方法的作用就是初始化。2 靜態物件的初始化 程式中主類的靜態變數會在main方法執行前初始化。不僅第一次建立物件時,類中的所有靜態...

字串輸入的一些陷阱

字串的輸入是很基礎的問題,不過其中的陷阱也不少。最關鍵的規避陷阱的方法就是心裡清楚輸入緩衝 stdio 裡還有什麼?以下是十分常見的 之一,其中scanf c ch 也經常用getchar ch 來寫,它們是一樣的。它們有乙個優秀之處是,所有的符號,甚至eof都能獲取並返回。while ch n 如...