javaast
Ⅰ java語言的未來及其是否能夠保持開源
作為一種語言,Java在過去十年中取得了其他任何語言都無法比擬的成績。而在中國市場,雖然在技術上一直能和國際上保持同步,但是應用卻總是略顯滯後。重新反思中國Java的十年發展歷程,除了贊譽與慶賀外,更有現實意義的做法是,認真考慮如何為中國Java的未來發展繼續涵養水土。
國外芳菲盡 國內始盛開
如果我們隨便在北京街頭拉住一個用手機的人問,是否知道彩信?應該所有人都會說知道;但是如果我們再問,知不知道Java技術?能夠回答上來的人就非常稀少——事實上,彩信業務正是採用了這一並不為普通人熟知的Java技術。正像很多Java技術人員一再強調的那樣——Java就在你身邊,並且無處不在。
從全球來看,有關Java的故事可謂充滿傳奇,比如那些不可思議的成功,比如失之交臂的良機,還有更多糾纏不清的官司。十年來,Java編程語言及平台已經成功地應用在網路計算及移動等各應用領域,比如行動電話、個人電腦、跨國金融系統和衛星通信等。歷史上從沒有過像Java這樣能夠如此廣泛地被應用的平台,目前全球Java經濟價值已經超過1200億美元。當初Sun公司推出Java時提出的口號是:「編寫一次,到處運行」。十年來,Java的跨平台和開放特性已經得到公認,此外,Java語言還具有面向對象、類似於C和C++的表達語法、良好的安全性等優秀特性,在許多方面成為Cobol和C++等語言的繼任者,受到全球開發人員的青睞,並已成為企業級應用的首選開發平台。就在今年7月份, IBM與Sun 剛剛宣布將兩家公司簽署的Java技術協議延長10年,目標是為全球Java團體中的將近400萬開發人員提供長期穩定性保證。BEA公司也宣布了一個一攬子計劃,開發業界首個全面支持各種主要開源框架的J2EE應用環境。這些舉措都肯定了跨平台Java兼容性的價值和必要性。
而在中國市場,Java無論在企業級應用,還是在面向大眾的服務方面都取得了不少進展,尤其在中國的電信、金融等關鍵性業務中發揮著舉足輕重的作用。目前,在中國政府有關部門的支持下,中國移動和中國聯通已經正式推出基於Java的無線增值服務,並在積極准備基於Java的3G增值服務。在Java Card方面,Sun公司與中國銀聯共同建立了Java Card聯合實驗室,從技術到方案進行全面合作。此外,很多業內公司也以Java的標准體系為基礎開發了相當多的應用軟體,比如用友公司從1998年開始在Java上進行開發。目前,用友的ERP 5正在研發中,明年即將推出。但是如果在全球范圍內進行橫向比較的話,我們只能說,中國Java似乎從來沒有吸引過足夠多的目光。
「Java的發展如同火箭升空,當初沒有人會想到它能飛這么遠」,Sun總裁兼首席運營官Jonathan Schwartz曾在Java十周年慶典上這樣說。然而,我們在歡慶之餘,應該注意的是,對照國內外Java的發展,我們似乎看到一個「國外芳菲盡,國內始盛開」的局面。就在2005 Java中國開發者大會召開前不久,Sun中國工程研究院院長宮力轉任微軟互聯網技術部(中國區)總經理,作為Java在中國最具代表性的人物之一,他的出走或許從一個側面顯露了中國Java發展之路上的一絲陰霾。
Java易得 一將難求
Sun大中華區軟體、ISV和Java業務總監黃震認為,Java入門容易,但是精通不易。這就好像會畫中國畫的人不少,業余愛好者很多,但真正能夠成為畫家的很少。而在中國的Java人才,似乎不只是精通者不夠多,真正願意學習運用Java語言的愛好者數量也不容樂觀。
小李是北京某高校計算機系研究生,對Java技術研習頗深,一度擔任該校BBS論壇Java技術討論版的版主。但他表示,他並不準備去考Java認證(即Java開發者資格認證考試),原因是他不想交那個1500元錢的認證費。
事實上,在全國范圍內像小李這樣能夠運用Java但是沒有得到認證的技術人員並不少。這種情形造成今天我們在統計國內Java開發者數量的時候總是不夠精確。數據顯示,今年全球Java開發者達到了450萬,而在中國,這個數字只有10萬不到。對此,有「中國Java之父」之稱的清華大學計算機系教授王克宏表示,如果真正把統計范圍嚴格界定在「開發者」上的話(即便把像小李那樣未取得認證的技術人員考慮進去),中國真正的Java開發者或許也僅有5萬人左右。這與中國這個擁有13億人口的大國地位以及Java的巨大市場潛力相比,是極其不相稱的。
那麼,為什麼中國的Java開發者如此之少呢?
王克宏教授是國內最早關注Java、同時也是能夠堅持至今的專家之一。他表示,從總體情況看,Java在中國並不被「學院派」看好,比如直到現在,北京大學計算機系仍然沒有系統地教授Java課程。從全國來看,500多所高等學校的計算機系也只有不到一半在開設Java 課程。
但是,在Java1995年剛剛出世的時候,它在中國的情形並非如此。王克宏教授形容當時科技人員對Java可謂「窮追不舍」,甚至在全國掀起了一個「學Java、用Java、推廣Java」的熱潮,全國性的Java 技術交流會陸陸續續也開了7屆。當時,《網路世界》報社(當時名為《國際電子報》)曾經舉辦了Java技術講座連載和一次全國性的Java大賽。從那時起,王克宏教授等人發表了一系列的技術文章來推動Java在中國的發展。
然而,就在幾年之後,當年參加Java大賽的很多人卻都遠離了Java。王克宏教授認為那些人之所以選擇放棄,大多出於三種原因,一是因為2000年的網路泡沫;二是嫌棄Java速度不夠快(當然,今天Java的開發速度和運行速度已經有了質的飛躍),三是因為總是看不到有說服力的實用案例。至今,甚至也有人偏激得認為Java不過是一種「玩具」而已。
王克宏教授表示,國內 Java與國外相比,除了人數較少之外,其差距還表現在: 能開出高檔的Java課程(如J2EE, Web Services)的培訓單位並不多, 難以滿足培訓高級Java人才的需要。其次,媒體對Java的宣傳報道力度還不夠強,這就制約了Java技術在中國的發展。
當然,在中國的Java人才數量上,也存在不同意見。Sun中國公司負責Java網上社區的高級技術社區經理蔣清野說,目前中國Java的相關社區可謂蓬勃發展,比如CSDN、Java Research、水木社區的Java版等,其中,規模最大的Java社區是Sun中國技術社區,其注冊用戶已經達到16萬;CSDN的注冊數達到80萬,其中Java用戶佔到一半。中國Java用戶協會在全國200多所大學成立了用戶分會。從具體數量上講,蔣清野認為,中國用Java進行過商業開發的人員大約在45萬左右,像中國電信行業80%的軟體都是採用Java編寫的,簡訊和手機游戲等業務全部是採用Java編寫。
據黃震透露,這次9月份的Java中國大會將會有140多位專家直接從美國來到中國,同大家進行技術交流。他認為,目前國內缺乏的正是這樣的Java技術交流學習機會,而中國的合作夥伴提出的最多的要求也正是培訓。
不管如何,無論Java人才是多是少,技術人員的用武之地還在於能夠找到足夠多的用戶。或許事實正如黃震所說——在中國,有創意的Java開發人員相對較少,同時,有創意的用戶也比較少。
應用之間 橘枳之變
和黃震的意見一樣,在王克宏教授看來,Java在中國不被「學院派」看好是一方面,另一方面的事實是Java在中國同樣也並未被「市場派」看好。現在的情況是,在Java應用的廣度與深度方面,中國內地不只是比不上歐美地區,而且比中國港澳地區也略顯不足。
我們在采訪王克宏教授的過程中,王教授一共出示了三個版本的名片,其中除了在清華大學的教授職銜之外,「清華- iT Frontier株式會社知識工程聯合實驗室」主任的頭銜更值得注意。
故事開始於《網路世界》報社(當時名為《國際電子報》)在1996年舉辦的那次全國性Java大賽。比較出人意料的情節是,就在Java在國內的發展慢慢沉寂之時,日本人卻通過那次大賽認識了王克宏等人。很快,日本iT Frontier株式會社派專人找到了王克宏教授。這家株式會社是由日本三菱商事和日本IBM在2001年將原AST等在內的五個主營信息產業的公司合並後成立的以信息系統集成為主營業務的軟體企業。雙方隨後成立了「清華- iT Frontier株式會社知識工程聯合實驗室」,由王克宏任主任,從此雙方開始了至今已經長達8年的國際合作。
王克宏教授談及Java技術在國內一些企業那裡的遭遇時頗為激動,他說:「如果我們的技術不行的話,日本人不會來找我們。但是為什麼這么好的技術在國內一些企業和用戶那裡得不到應用和重視呢?」 比如,王教授帶領下開發出的Webform(電子表單自動生成系統及其可視化開發工具)採用Java標准,便於電子表單的網路傳輸,同時解決了瀏覽器/Web伺服器應用環境下的列印問題。日本的建設省就採用了這一系統並要求所有的人員都要學習掌握。然而,這樣一個系統卻在國內的推廣使用中在一些部門和企業那裡遭到了冷遇。王把其中的主要原因歸結為渠道問題和關系問題(或者說機制問題和觀念問題)。但是,作為一個純粹的技術人員,王教授顯然並不願意把寶貴的時間浪費這些事情上。
具體在行業軟體中,王教授認為,國內用Java開發的應用軟體還不多,可以說在中國,應用推廣的局面還沒有完全打開,尤其是在能充分體現Java特色(跨平台、多線程)的領域,如金融信息管理、電子政務與電子商務、遠程教育等行業,成熟的Java應用軟體還不多見。而對於一些企業對自己研究成果的合作事宜,王克宏並不贊同,他表示:「有的企業(甚至校辦企業)都曾經找過我們洽談有關的合作事宜,但是他們提出的條件都是要一次買斷產品的知識產權。這是典型的『種樹的時候不來,等到摘桃的時候就做得很絕』。這種合作方式我們當然不會答應。」
除了中國企業和從業人員對Java的自行學習摸索外,Sun、BEA和IBM等國際公司在中國對Java的推廣也很重要。尤其是當中國的很多企業對於能從Java技術上能否及時賺到錢心裡沒底的時候,這些公司在中國的活動就具備了更大的意義。
黃震對Java在中國的發展就頗為樂觀。他表示,目前北京的軟體產業規模佔到了全國的三分之二,90%的企業都有Java部門。根據中國軟體產業協會的統計,超過三分之二的軟體企業在採用Java進行開發。比如東軟目前有超過4000人的Java開發人員;中國工商銀行的開發部門中有許多Java開發人員,開發銀行自身的系統。中國台灣的保健卡和中國香港銀行的網上銀行都是由Java開發成功的。據悉,在9月份的Java中國大會上還將評選出5個Java優秀應用企業。
此外,Sun在中國市場的JCOE(Java技術應用中心)目前已經達到了35家。Sun公司正是藉助著這個「JCOE」幫助眾多企業成功地提高了其Java技術應用水平。比如用友軟體工程、神州數碼軟體、東軟軟體、北京華勝天成和MDCL都是全球第一批通過Sun的JCOE認證的合作夥伴。
作為中國市場成功用戶的代表, 中國聯通在今年4月8日舉辦了「2005中國聯通UniJa開發商大會」。在2004年11月1日UniJa業務正式商用的半年時間內,UniJa業務的注冊用戶數已經突破14萬,應用數量也增加到近300款。美國Sun公司董事會主席兼首席執行官斯科特·麥克尼利的到會似乎表明,中國市場的潛力之大並未被忽視。
黃震在接受采訪中把十年前Java進入中國比作播種,但是種子播下了,Sun還要為把種子培育成森林做很多工作。王克宏教授也表示,Sun在中國推廣Java的力度並不夠。這樣看來,避免Java在應用上上演一出新版的「橘枳之變」還需要中外企業一起加快努力。
十年樹木 未為晚也
「當初我開始宣傳Java的時候,就有同行說王克宏是不是要搞自己的Java虛擬機。但是我們認為,集中精力做應用會更好一些」,王克宏在談及自己的聯合實驗室時表示,「我們的優勢在於,已經有過8年多的國際合作經驗;但是我們的缺點也很明顯,就是市場意識不強,制約了我們的發展。」
據了解,從1998年開始,清華- iT Frontier株式會社知識工程聯合實驗室共有77人次參加了在舊金山的Java大會,而最近的兩個項目是中標了新華社的新聞標准管理系統和國家環保總局的項目。目前前者已經在試用,後者也已接近完成。
對於將來Java的發展,王克宏主要強調了七個方面。一是工具的優化,開發工具的集成優化。比如IBM的Eclipse的集成開發環境就做得很好。二是開放源代碼。王表示,其實他並不太看重開源,但是他認為工具要開放,比如功能上的選擇、擴充開放等,但內庫系統就不用開放,要適可而止,適度開放。三是重視中國市場;四是行業軟體;五是抓住網路計算模式下的主流模式即 Web服務。六是抓住J2EE 平台的核心技術。所謂的「J2EE與 .NET之爭」,人們已經不再關心誰長誰短,而是關心誰能用它盡快賺到錢。實踐證明:能同時支持J2EE和.NET的架構更為用戶所接受和歡迎。七是抓住移動計算(移動Java)的關鍵技術。不少廠商能提供各色各樣的用Java實現的電子設備,而這些移動設備均是在J2ME平台的支持下,例如Sun公司開發出「移動信息開發平台」(MIDP, Mobile Information Development Platform),已經成功應用到手機。
而作為Sun大中華區軟體、ISV和Java業務總監,黃震對Java在中國的發展認為在質量、性能和安全性等三方面存在不足。首先,Java的標准體系在中國還沒有建立起來。只有建立起完善的標准體系,才能夠保障質量標准。因此,質量標准體系的建立非常關鍵。其次,Java的性能要求還沒有完善。最後,Java的安全研發環境還沒有建立。中國應該盡快建立起Java的安全架構。他指出,在美國有一個Java標准化組織JCP(Java Community Process),BEA和IBM都是JCP的成員。而在中國沒有JCP,因此,在中國目前沒有Java的標准,也沒有人去監控。從政府層面來看,記者也從信息產業部有關部門獲悉,目前,信息產業部下屬的中國通信標准協會正在制訂Java終端規范,審批後將作為政府標准推行。信息產業部產品司亦將作為此次Java China大會的支持單位出現。Sun公司首席執行官斯科特·麥克尼利在2005年上半年的第五次訪華期間,拜會了信息產業部、科技部、教育部、中國軟體協會以及北京市政府等部門,專門參加了關於Unija的技術交流活動,並獲得了中國政府有關部門的肯定。
用友公司作為Sun在中國市場的幾十家JCOE之一,其在Java應用上的實踐和觀點無疑很大程度上也代表了中國企業對Java的態度。用友公司NC技術總監樊冠軍表示,就Java技術本身來看,J2EE的推出是一個分水嶺,Java從此變得越來越易於使用,大家看法也發生變化,編程更穩定,幾乎不存在宕機。普遍的看法是,J2EE偏重後台,微軟的.NET偏重在前台。正是基於這一觀點,目前用友公司分成兩條開發線,一個是採用微軟架構,另一個是採用Java。用友公司共有250名Java開發人員。Java主要應用在高端行業,高端用戶很認可。此外,樊冠軍也表示,希望Java在Web界面方面將來易於使用,希望制訂出一些更好的規范。
Ⅱ Java修飾詞都有哪些
java語言定義了pulic、potected、pivate、astact、static和final這6常用修飾詞外還定義了5個不太常用的修飾詞
下面是對這11個java修飾詞的介紹:
1.pulic使用對象:類、介面、成員介紹:無論它所處在的包定義在哪,該類(介面、成員)都是可訪問的
2.pivate使用對象:成員介紹:成員只可以在定義它的類中被訪問
3.static使用對象:類、方法、欄位、初始化函數介紹:成名為static的內部類是一個頂級類,它和包含類的成員是不相關的。靜態方法是類方法,是被指向到所屬的類而不是類的實例。靜態欄位是類欄位,無論該欄位所在的類創建了多少實例,該欄位只存在一個實例被指向到所屬的類而不是類的實例。初始化函數是在裝載類時執行的,而不是在創建實例時執行的。
4.final使用對象:類、方法、欄位、變數介紹:被定義成final的類不允許出現子類,不能被覆蓋(不應用於動態查詢),欄位值不允許被修改。
5.astact使用對象:類、介面、方法介紹:類中包括沒有實現的方法,不能被實例化。如果是一個astact方法,則方法體為空,該方法的實現在子類中被定義,並且包含一個astact方法的類必須是一個astact類
6.potected使用對象:成員介紹:成員只能在定義它的包中被訪問,如果在其他包中被訪問,則實現這個方法的類必須是該成員所屬類的子類。
7.native使用對象:成員介紹:與操作平台相關,定義時並不定義其方法,方法的實現被一個外部的庫實現。
8.stictfp使用對象:類、方法介紹:stictfp修飾的類中所有的方法都隱藏了stictfp修飾詞,方法執行的所有浮點計算遵守ieee
754標准,所有取值包括中間的結果都必須表示為float或doule類型,而不能利用由本地平台浮點格式或硬體提供的額外精度或表示範圍。
9.synchonized使用對象:方法介紹:對於一個靜態的方法,在執行之前jvm把它所在的類鎖定;對於一個非靜態類的方法,執行前把某個特定對象實例鎖定。
10.volatile使用對象:欄位介紹:因為非同步線程可以訪問欄位,所以有些優化操作是一定不能作用在欄位上的。volatile有時可以代替synchonized。
11.tansient使用對象:欄位介紹:欄位不是對象持久狀態的一部分,不應該把欄位和對象一起串起。
Ⅲ java 報錯No data type for node: org.hibernate.hql.ast.tree.IdentNode
解決方法:
hql中屬性名必須和pojo中的屬性名一致(區分大小寫)。
Nodatatypefornode這個錯誤是因為你在hql欲查詢的欄位名(對象屬性名)和hbm.xml中的屬性不匹配或者找不到引起的。
Ⅳ java程序運行時總是出現Launch configuration ASTFrame references closed project...要怎麼改呀
1:單擊工具欄Run圖標右邊的下拉箭頭,選擇Run Configurations
Ⅳ java環境變數設置問題
你的IP是不是動態獲取的???如果是,那樣操作就是不對,你可以這樣操作:
像我的IP是動態獲取的;當我直接輸入:ipconfig 時,顯示:
C:\Documents and Settings\Administrator>ipconfig
'ipconfig' 不是內部或外部命令,也不是可運行的程序
或批處理文件。
C:\Documents and Settings\Administrator>
就像你的這種情況。
解決辦法:
輸入cd C:\WINDOWS\system32
C:\Documents and Settings\Administrator>cd C:\WINDOWS\system32
在輸入ipconfig
C:\WINDOWS\system32>ipconfig
Windows IP Configuration
Ethernet adapter 本地連接:
Connection-specific DNS Suffix . : astpbx.com
IP Address. . . . . . . . . . . . : 192.168.29.175
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.29.254
C:\WINDOWS\system32>
這樣就OK了,其他的命令:ping,ipconfig 等都可以使用了。
至於關於JAVA的環境設置問題:也可以給你參考下,我相信你命令的不能使用與你設置的JAVA配置環境應該是沒有關系的。
classpath=.;C:\ProgramFiles\Java\jdk1.5.0_12\lib\dt.jar;C:\ProgramFiles\Java\jdk1.5.0_12\lib\toos.jar
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
PATH=C:\Program Files\Java\jdk1.5.0_12\bin
Ⅵ java該如何入門
小白入門確實需要一個正確的學習路線,整理了一份關於Java自學的學習路線圖,希望幫助每一位想學習Java的小夥伴快速成長為Java開發工程師
第一階段:Java基礎
Java開發介紹
Java數組
Java面向對象
常用基礎類
集合
IO流
多線程
異常
網路
反射
第二階段:JavaWeb
HTML5
CSS3
JavaScript
MySQL使用
JDBC連接池
Servlet
JSP
AJAX
jQuery
Bootstrap
第三階段:Java框架
Maven
Hibernate
Spring
Spring MVC
MyBatis
WebService
SVN
Activiti
第四階段:Java + 雲數據
Linux版本
astDFS
MySQL優化
Nginx反向代理
Quartz 作業調度
Redis 高性能(Key-Value)資料庫
Shiro 安全(許可權)框架
Lucene&Solr全文檢索
Zookeeper 分布式系統
MyCAT 大數據集群
Dubbo實現分布式架構
ActiveMQ 消息隊列
分布式事務和單點登錄
分布式框架原理
基於SpringMVC的集成單元測試MockMVC
SpringBoot 快速構建JavaEE項目
按照這個學習路線跟著學習就可以了,千鋒網站上也有教學視頻,你可以根據自己的需要下載學習
Ⅶ 用eclipse 編寫JAVA代碼時,他為什麼能自動識別語法錯誤及給出正確的寫法這是JAVA編譯器的哪種特性
這是靠eclipse自帶的插件實現的,的確屬於靜態分析。動態分析我不太了解,可能會涉及到jvm,但主要是在編譯器內獲取一些動態信息,如果想對java的多態進行分析就需要動態分析,即在編譯時獲取具體調用的類的信息。但如果是問eclipse的語法糾錯,遠沒涉及那麼高級的內容。
如果你去看eclipse文件夾下的plugins文件夾,你能找到類似org.eclipse.jdt.XXX.XXX的若干jar文件,那些包就是eclipse專門用以處理java代碼分析工作的jdt插件工具包。他能抽取java代碼的AST(抽象語法樹),也就是編譯時用到的數據結構,你若學過編譯原理就知道了,反正我還沒學。如果做一些java方面的逆向工程,你甚至可以引用eclipse的jdt包,將java項目的代碼通過相應介面(你可以在網上找到jdt的api和實例代碼)傳進去,獲取代碼中的類,欄位,方法,和更細節的信息。
而jdt中也包含檢測,處理語法錯誤的包,可以發現並糾正語法錯誤。這一特點還可以用來做一些正向工程(如自修改或動生成代碼)。
哦,還有,針對你的問題還要說,這點特性不是編譯器的,而是編輯器eclipse的。注意,絕對是編輯器的特點!雖然涉及到語法問題,但在eclipse糾錯時,還沒有調用編輯器,即程序還沒有編輯。只有在運行程序前eclipse才會調用編輯器。編譯一次不容易,每次糾錯都調用編譯器的話開銷太大,糾錯的反應速度絕對不會像平時eclipse做的那麼快。
實際上eclipse可以說就是由各種插件組成的,它本身只提供一個供各種插件運行的平台,本身功能很簡單,但就是通過向jdt這樣的插件包實現各種復雜的功能。
Ⅷ java,實現Comparable介面
呵呵 ,
SET集合本來是無序的 不重復的
但是你的pojo復寫了compareTo ()方法以後,對放入set集合的對象會根據compareTo ()方法的返回值進行排序
如果ast.height-this.height 為負值
就是降序
以後每次比較
正的放後面 負的放前面
Ⅸ 用Java怎麼解析C/C++代碼生成AST抽象語法樹結構
其中一個明顯的例子是Eclipse CDT里的parser。
它是完全用Java實現的,手寫的遞歸下降parser,能把C或C++源碼parse成AST供Eclipse CDT的IDE功能使用。它支持C99語法(包括GCC擴展)、C++語法(我沒仔細看現在支持到什麼版本了)等。
它並不用於實際的編譯(這跟Eclipse JDT里的Eclipse Compiler for Java不同);實際編譯還是交給諸如GCC、xlc之類的編譯器去完成。
關於Eclipse CDT里的C與C++ parser的介紹,請參考
Ⅹ Java判斷兩個時間段是否有交集
publicclassDateKit{
/**
時間段的比較處理,如果包含了傳來的時段了,就說明時間沖突了
*@return
*/
publicstaticbooleanisContain(Date[]a,Date[]b){
longastatr=a[0].getTime();
longaend=a[1].getTime();
longbstatr=b[0].getTime();
longbend=b[1].getTime();
//a0包在了b0~b1之間
if(astatr>=bstatr&&astatr<=bend)returntrue;
//b0包在了a0~a1之間
if(astatr<=bstatr&&aend>=bstatr)returntrue;
returnfalse;
}
/**
時間段的比較處理,如果包含了傳來的時段了,就說明時間沖突了,(允許首尾相等而不包含的情況)
*@return
*/
(Date[]a,Date[]b){
longastatr=a[0].getTime();
longaend=a[1].getTime();
longbstatr=b[0].getTime();
longbend=b[1].getTime();
//a0包在了b0~b1之間
if(astatr>=bstatr&&astatr<bend)returntrue;
//b0包在了a0~a1之間
if(astatr<=bstatr&&aend>bstatr)returntrue;
//相等
if(astatr==bstatr&&aend==bend)returntrue;
returnfalse;
}
//功能工具擴展
publicstaticbooleanisContain(Stringastatr,Stringaend,Stringbstatr,Stringbend){
returnisContain(newString[]{astatr,aend},newString[]{bstatr,bend});
}
publicstaticbooleanisContain(String[]aStr,String[]bStr){
returnisContain(aStr,bStr,"yyyy-MM-ddHH:mm:ss");
}
publicstaticbooleanisContain(String[]aStr,String[]bStr,Stringpattern){
finalSimpleDateFormatSF=newSimpleDateFormat(pattern);
try{
returnisContain(newDate[]{SF.parse(aStr[0]),SF.parse(aStr[1])},newDate[]{SF.parse(bStr[0]),SF.parse(bStr[1])});
}catch(Exceptione){
e.printStackTrace();
}
returnfalse;
}
(Stringastatr,Stringaend,Stringbstatr,Stringbend){
returnisContainEnd(newString[]{astatr,aend},newString[]{bstatr,bend});
}
(String[]aStr,String[]bStr){
returnisContainEnd(aStr,bStr,"yyyy-MM-ddHH:mm:ss");
}
(String[]aStr,String[]bStr,Stringpattern){
finalSimpleDateFormatSF=newSimpleDateFormat(pattern);
try{
returnisContainEnd(newDate[]{SF.parse(aStr[0]),SF.parse(aStr[1])},newDate[]{SF.parse(bStr[0]),SF.parse(bStr[1])});
}catch(Exceptione){
e.printStackTrace();
}
returnfalse;
}
}
publicstaticvoidmain(String[]args)throwsParseException{finalSimpleDateFormatSF=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
Date[]a={SF.parse("2017-07-0611:53:00"),SF.parse("2017-07-0614:52:00")};
Date[]b={SF.parse("2017-07-0614:52:00"),SF.parse("2017-07-0616:52:00")};
System.out.println("您好,智能的電腦!請問:");
for(Datedate:a){
System.out.print(date.toString()+"~");
}
System.out.println("包含:");
for(Datedate:b){
System.out.print(date.toString()+"~");
}
System.out.println("嗎?");
booleanret=DateKit.isContain(a,b);
System.out.println("o(∩_∩)o哈哈~我猜是:"+ret);
ret=DateKit.isContainEnd(a,b);
System.out.println("o(∩_∩)o哈哈~允許首尾相等我猜是:"+ret);
}
分享~