進(jìn)來偶看一下swing.寫了一個(gè)學(xué)生管理系統(tǒng)
http://www.aygfsteel.com/Files/ronghai/homework.zip
大家可以下載了看看.
摘要: 關(guān)于 Type1IoC,Spring Type2IoC和Type3IoC 的程序?qū)嵗?希望能對(duì)大家有用 閱讀全文
摘要: 在gmail中每個(gè)內(nèi)置文件夾(視圖)都是一個(gè)標(biāo)簽.所以如果你想查看所有收件箱中的未讀郵件,你可以這樣使用 label:inbox label:unread
當(dāng)然你可以聯(lián)合使用這些內(nèi)置標(biāo)簽和你自己的標(biāo)簽形成一個(gè)有趣的查詢.但是很快你就發(fā)現(xiàn)了這些查詢是那么得長,還那么難寫.不過實(shí)際上你不需要這樣做.你可以使用l來代替label.這樣前面那個(gè)查詢可以這樣寫 l:inbox l:unread 閱讀全文
當(dāng)然你可以聯(lián)合使用這些內(nèi)置標(biāo)簽和你自己的標(biāo)簽形成一個(gè)有趣的查詢.但是很快你就發(fā)現(xiàn)了這些查詢是那么得長,還那么難寫.不過實(shí)際上你不需要這樣做.你可以使用l來代替label.這樣前面那個(gè)查詢可以這樣寫 l:inbox l:unread 閱讀全文
摘要: 通過spring的mailsender實(shí)現(xiàn)郵件的發(fā)送,同時(shí)實(shí)用gmail作為郵件發(fā)送服務(wù)器. 閱讀全文
前兩天沒有什么事做,仔細(xì)看了一下JAva的拆包,發(fā)現(xiàn)了下面的問題,不是很明白,到網(wǎng)上轉(zhuǎn)了一圈,找到了答案.給需要的朋友看看
首先看一段代碼(使用JDK 5),如下:
輸出結(jié)果想必大家也知道,是“Equal!”?,F(xiàn)在把i1和i2的值由127改為128看看會(huì)發(fā)生什么?結(jié)果輸出“Not equal!”。
注意i1和i2都是Integer類型,事實(shí)上只要這個(gè)值的范圍在“-128—127”之間,輸出結(jié)果都是“Equal!”。JDK 5引進(jìn)了很多新的特性,其中有一個(gè)就是自動(dòng)裝箱(Autoboxing)和自動(dòng)拆箱(Auto-Unboxing)。當(dāng)i1和i2值為128時(shí),在進(jìn)行 “==”時(shí),它們被裝進(jìn)兩個(gè)不同的Integer Objects,由于這是兩個(gè)不同的instances,它們引用不同的內(nèi)存地址,所以結(jié)果是“Not equal!”。 但當(dāng)這個(gè)值是127時(shí),JVM自動(dòng)將這個(gè)值轉(zhuǎn)換成基本類型int,這樣進(jìn)行“==”時(shí),JVM仍然使用的是相同的object instance, 所以輸出結(jié)果為“Equal!”了。
其實(shí)這與'=='運(yùn)算符的比較有關(guān),'=='可用來比較兩個(gè)基本型態(tài)的變量值是否相等,事實(shí)上'=='也用于判斷兩個(gè)對(duì)象變量名稱是否參考至同一個(gè)對(duì)象。
所 以'=='可以比較兩個(gè)基本型態(tài)的變量值是否相等,也可以判斷兩個(gè)對(duì)象變量的參考對(duì)象是否相同,當(dāng)您如前兩個(gè)程序的方式撰寫時(shí),編譯器不知道您實(shí)際上要比 較的是哪一種?所以對(duì)于值從-128到127之間的值,它們被裝箱為Integer對(duì)象后,會(huì)存在內(nèi)存之中被重用,所以當(dāng)值在100,使用'=='進(jìn)行比 較時(shí),i1 與 i2實(shí)際上參考至同一個(gè)對(duì)象。
如果超過了從-128到127之間的值,被裝箱后的Integer對(duì)象并不會(huì)被重用,即相當(dāng)于每次都新建一個(gè)Integer對(duì)象,所以當(dāng)值在 200,使用'=='進(jìn)行比較時(shí),i1與i2參考的是不同的對(duì)象。
“Integer i1 = 127;”在JDK1.5下可以編譯通過的,這就是自動(dòng)裝箱(Autoboxing)和自動(dòng)拆箱(Auto-Unboxing)。自動(dòng)裝箱 (Autoboxing)特性讓Java自動(dòng)包裝一個(gè)簡單數(shù)據(jù)類型(例如int)到對(duì)應(yīng)的包裝類型中(例如Integer)中。
在《JSR 201: Extending the Java Programming Language with Enumerations, Autoboxing, Enhanced for loops and Static Import》中,對(duì)這個(gè)問題,是作了這樣的規(guī)定:
If the value p being boxed is true, false, a byte, an ASCII character, or an integer or short number between -127 and 128, then let r1 and r2 be the results of any two boxing conversions of p. It is always the case that r1 == r2.
在Java中,The following is the list of primitives stored as immutable objects(不可變對(duì)象):
* boolean values true and false
* All byte values
* short values between -128 and 127
* int values between -128 and 127
* char in the range \u0000 to \u007F
首先看一段代碼(使用JDK 5),如下:
1 public class Test {
2 public static void main(String[] args) {
3 Integer i1 = 127;
4 Integer i2 = 127;
5 if (i1 == i2)
6 System.out.println("Equal!");
7 else
8 System.out.println("Not equal!");
9 }
10 }
2 public static void main(String[] args) {
3 Integer i1 = 127;
4 Integer i2 = 127;
5 if (i1 == i2)
6 System.out.println("Equal!");
7 else
8 System.out.println("Not equal!");
9 }
10 }
輸出結(jié)果想必大家也知道,是“Equal!”?,F(xiàn)在把i1和i2的值由127改為128看看會(huì)發(fā)生什么?結(jié)果輸出“Not equal!”。
注意i1和i2都是Integer類型,事實(shí)上只要這個(gè)值的范圍在“-128—127”之間,輸出結(jié)果都是“Equal!”。JDK 5引進(jìn)了很多新的特性,其中有一個(gè)就是自動(dòng)裝箱(Autoboxing)和自動(dòng)拆箱(Auto-Unboxing)。當(dāng)i1和i2值為128時(shí),在進(jìn)行 “==”時(shí),它們被裝進(jìn)兩個(gè)不同的Integer Objects,由于這是兩個(gè)不同的instances,它們引用不同的內(nèi)存地址,所以結(jié)果是“Not equal!”。 但當(dāng)這個(gè)值是127時(shí),JVM自動(dòng)將這個(gè)值轉(zhuǎn)換成基本類型int,這樣進(jìn)行“==”時(shí),JVM仍然使用的是相同的object instance, 所以輸出結(jié)果為“Equal!”了。
其實(shí)這與'=='運(yùn)算符的比較有關(guān),'=='可用來比較兩個(gè)基本型態(tài)的變量值是否相等,事實(shí)上'=='也用于判斷兩個(gè)對(duì)象變量名稱是否參考至同一個(gè)對(duì)象。
所 以'=='可以比較兩個(gè)基本型態(tài)的變量值是否相等,也可以判斷兩個(gè)對(duì)象變量的參考對(duì)象是否相同,當(dāng)您如前兩個(gè)程序的方式撰寫時(shí),編譯器不知道您實(shí)際上要比 較的是哪一種?所以對(duì)于值從-128到127之間的值,它們被裝箱為Integer對(duì)象后,會(huì)存在內(nèi)存之中被重用,所以當(dāng)值在100,使用'=='進(jìn)行比 較時(shí),i1 與 i2實(shí)際上參考至同一個(gè)對(duì)象。
如果超過了從-128到127之間的值,被裝箱后的Integer對(duì)象并不會(huì)被重用,即相當(dāng)于每次都新建一個(gè)Integer對(duì)象,所以當(dāng)值在 200,使用'=='進(jìn)行比較時(shí),i1與i2參考的是不同的對(duì)象。
“Integer i1 = 127;”在JDK1.5下可以編譯通過的,這就是自動(dòng)裝箱(Autoboxing)和自動(dòng)拆箱(Auto-Unboxing)。自動(dòng)裝箱 (Autoboxing)特性讓Java自動(dòng)包裝一個(gè)簡單數(shù)據(jù)類型(例如int)到對(duì)應(yīng)的包裝類型中(例如Integer)中。
在《JSR 201: Extending the Java Programming Language with Enumerations, Autoboxing, Enhanced for loops and Static Import》中,對(duì)這個(gè)問題,是作了這樣的規(guī)定:
If the value p being boxed is true, false, a byte, an ASCII character, or an integer or short number between -127 and 128, then let r1 and r2 be the results of any two boxing conversions of p. It is always the case that r1 == r2.
在Java中,The following is the list of primitives stored as immutable objects(不可變對(duì)象):
* boolean values true and false
* All byte values
* short values between -128 and 127
* int values between -128 and 127
* char in the range \u0000 to \u007F
摘要: 這是一個(gè)java高手的聊天記錄,出自某個(gè)特別的群,為了名譽(yù)等事情,聊天中的id都已經(jīng)被我處理過,所以請(qǐng)大家不用去找是哪個(gè)群,誰說的了
昨天晚上,閑來無事,隨手翻開<>,剛好看到接口和抽象類一章,因?yàn)槲冶救丝磿鴷r(shí),經(jīng)常愛看到哪里,嘴就要說出來,特別是有人在旁邊得時(shí)候。
于是,我便隨口一句:“什么是接口?”,片刻,我女朋友伸過來一只手,用食指和拇指捏住我得下巴,給了我一個(gè)深深得Kiss,然后頭發(fā)一甩,回眸用深沉的口吻道:“現(xiàn)在知道什么是接口了吧!”,
^&*(&($%%^@#!@. 閱讀全文
昨天晚上,閑來無事,隨手翻開<
于是,我便隨口一句:“什么是接口?”,片刻,我女朋友伸過來一只手,用食指和拇指捏住我得下巴,給了我一個(gè)深深得Kiss,然后頭發(fā)一甩,回眸用深沉的口吻道:“現(xiàn)在知道什么是接口了吧!”,
^&*(&($%%^@#!@. 閱讀全文
摘要: *本段代碼是自己的一個(gè)作業(yè),我想有些地方還可以簡單點(diǎn),但是,發(fā)現(xiàn)簡單了卻不怎么好用,所以有點(diǎn)復(fù)雜
*作業(yè)的要求是可以刪除掉任意一個(gè)文件或文件夾,而不管文件夾里面是否還有其他文件,
*有個(gè)方法是可以很快就實(shí)現(xiàn)的就是直接調(diào)要系統(tǒng)的指令,但是java要運(yùn)行在任意平臺(tái),所以我就這樣復(fù)雜點(diǎn)了
*方法使用java DeleteFile 文件名或文件夾名 [q|Q]
*后面有兩個(gè)參數(shù),第一個(gè)十文件或文件夾名,第二個(gè)是q
* q表示強(qiáng)制刪除,沒有確認(rèn) 閱讀全文
*作業(yè)的要求是可以刪除掉任意一個(gè)文件或文件夾,而不管文件夾里面是否還有其他文件,
*有個(gè)方法是可以很快就實(shí)現(xiàn)的就是直接調(diào)要系統(tǒng)的指令,但是java要運(yùn)行在任意平臺(tái),所以我就這樣復(fù)雜點(diǎn)了
*方法使用java DeleteFile 文件名或文件夾名 [q|Q]
*后面有兩個(gè)參數(shù),第一個(gè)十文件或文件夾名,第二個(gè)是q
* q表示強(qiáng)制刪除,沒有確認(rèn) 閱讀全文