Java與C#個人之比較

網上這方面的比較文章已經有不少了,不過大都是要么從很高的角度說的,要么就是從底層說的,本人就以自己這幾年的編程經歷中的感受,來談談自己的體會。

相似性:

JavaC#都是一門面向對象的語言,Java更多地借鑒了C++的優點,而摒棄了它的一些不太容易被人掌握的知識點(有些不能說是缺點),并且增加了一些自己的特點,而C#則是更多地借鑒了Java的優點,而增加了一些自己的特點。

個人猜測,在Java語言出現之前,C++被廣泛使用,而且被認為容易使用,Java如此類似于C++,致使人們更容易接受;而現在Java是最廣泛使用的,C#如此接近Java,則更容易吸引Java開發人員(僅僅是猜測)。也就是說Java站在C++的肩膀上,而C#站在了Java的肩膀上。

?

跨平臺特性

跨平臺特性的最大優點就是只要有相應的運行環境,同一個編譯好的程序就能在上面運行,而不需要重新編譯程序,它的缺點就是不能針對特定平臺,所以不能充分利用平臺特性,因而在性能上會有所降低,幸運的是現在的硬件比以前大大提高,這部分的降低在絕大部分情況下可以不用考慮。而且JavaC#都有自動垃圾回收機制,運行時環境可以自動清理不再使用的內存,減少了手動釋放內存的風險。

Java的跨平臺特性建立在可以跨越多個不同種類的操作系統平臺,比如WindowsLinuxUnix等,但是需要注意的是不是說Java能在所有的系統上都能跨平臺,必須實現在該操作系統上的Java運行時環境JRE才行,也就是說假如今天有人開發了一個前所未有的系統,這時候Java程序是不能在上面運行的——因為還沒有針對這個操作系統的Java虛擬機(JVM),好在在當今絕大部分操作系統上都有針對該系統的JVM,所以它能“一次編譯,到處運行”。

C#的跨平臺則是建立跨Windows平臺的基礎上的(有一個針對非Windows.net運行環境,不過好像還不是太好),不像以前Windows95下的程序到WindowsXP下就不能運行,或者WindowsXP下的程序到Windows95下也不能運行(這種情況居多),現在呢,只要安裝一個.net framework(也就是.net程序的運行時環境),在Windows2003下編寫的.net程序不用重新編譯就能在Windows98下運行,只要這臺安裝Windows98的機子安裝了.net程序的運行時環境。

這一個回合Java勝出。

?

語法特性

Java拋棄了指針,使用了包(package)的概念,導入包使用import語句,在Java中有幾種非面向對象的數據類型,那就是bytecharshortintlongfloatdouble這幾種數據類型,在方法中傳遞時僅僅是傳遞它們的值,為了方便一些集合類的操作(它們存儲的是對象類型),又增加了它們的包裝類ByteCharShortIntegerLongFloatDouble

Java中存在屬性的概念,這些都是通過setXXX()getXXX()來設置。

?

C#沒有完全拋棄指針(在unsafe狀態下還可以操作指針),對于類的管理采用了名稱空間(namespace)的概念,并且還使用了outref等關鍵字,便于從一個方法返回多個結果,在C#中不僅存在屬性,還有索引器等比較方便的特性。

?

生成文檔doc文檔

在利用程序中的特殊注釋生成api文檔方面,兩種語言都有不錯的表現,不過C#更勝一籌,它能利用注釋在輸入類成員時提示,便于程序員不用去看程序源碼而知道程序的大概用途,而Java這方面沒有。

?

IDE(集成開發環境)方面

JavaIDE是非常多,從龐大的Jbuilder到小巧的Jcreator,還有可以擴充的Eclipse,可以說JavaIDE的數量是非常多的。

?

C#IDE不多,除了微軟自己的VS.NET之外,好像還有BorlandC#Builder,除此之外,廣為認知好像不多。

?

性能方面

Java采用了字節碼(bytecode),而C#則采用了MSIL,它們的性能都是介于解釋型語言和生成本地機器代碼之間的,在本人的測試中,C#的性能略高于Java,可能Java的字節碼要適用多個系統多個平臺的緣故吧。

?

企業開發方面

由于Java出現的時間長的緣故,并且還能跨平臺,采用EJB等解決方案,所以目前絕大部分網站都是基于J2EE開發的(大部分都是J2EE+MySQL+Apache+Linux,都是免費的)。

?

C#做的大型網站,它也有針對EJBNet Remoting技術,由于它限制了必須(IIS+Windows),所以大型的網站不是太多,不過隨著時間的推移,可能會有更多的網站采用asp.net技術。畢竟微軟的東西一向傻瓜化,門檻低,能夠吸引一些初級編程人員到這個行列中來。而且微軟的asp.net采用了代碼和頁面分離技術,的確能方便編程人員。

?

總結:

記得有一句話,大意是這樣的,Linux就像專業相機,拍攝出來的照片取決于你的攝影技術;而Windows就像傻瓜相機,只要會按快門就能拍照。我覺得Java就像Linux,添加一個按鈕,一個標簽都需要你指定樣式,放置到哪里也需要你指定;而C#則繼續秉承了Windows的特點,傻瓜化,便于操作,便于上手。

補充一點:好像搞Java的同等情況下比C#的高,可能是物以稀為貴吧:)。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452756.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452756.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452756.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java利用子類求正方形_Java程序設計實驗2011

(2)掌握對象的聲明和使用;(3)掌握構造方法的概念和使用;(4)掌握類及成員的訪問控制符。2、實驗任務(1)閱讀下面的程序,在main()方法里添加語句完成如下的功能:①創建一個MyV alue類的對象myV alue。②為myV alue對象中的value域賦…

當導用模塊與包的import與from的問題(模塊與包的調用)

當在views.py里寫impor models會不會報錯呢? 1、Python里面的py文件都是每一行的代碼。2、Python解釋器去找一個模塊的時候,只去sys.path的路徑里找3、django項目啟動(django項目的啟動文件是manage.py)啟動項目是將manage.py的路…

ack和seq

ACK (Acknowledgement),即確認字符,在數據通信中,接收站發給發送站的一種傳輸類控制字符。表示發來的數據已確認接收無誤。 seq是序列號,這是為了連接以后傳送數據用的,ack是對收到的數據包的確認&#xff…

MySQL中的information_schema

0.引言 近日在學習網絡安全的sql注入時,用到mysql中的information_schema數據庫,其思路是利用information_schema中的SCHEMA獲取數據庫中的table名稱。現在對相關數據庫進行總結,方便以后復習使用。 2.information_schema數據庫 informati…

linux配置防火墻,開啟端口

linux配置防火墻,開啟端口 Centos7,配置防火墻,開啟端口  1.查看已開放的端口(默認不開放任何端口)    firewall-cmd --list-ports  2.開啟80端口    firewall-cmd --zonepublic(作用域) --add-port80/tcp(端口和訪問類型) --permanent(永久…

使用Intel編譯器系列合集

好的帖子:http://topic.csdn.net/u/20080327/16/071b45df-3795-4bf1-9c4d-da4eb5aaa739.html參考手冊:http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011Update/compiler_c/index.htm 說明:本系列文章為個…

【前端】這可能是你看過最全的css居中解決方案了~

1.水平居中&#xff1a;行內元素解決方案 適用元素&#xff1a;文字&#xff0c;鏈接&#xff0c;及其其它inline或者inline-*類型元素&#xff08;inline-block&#xff0c;inline-table&#xff0c;inline-flex&#xff09; html部分代碼:<div>文字元素</div><…

java手機一款三國游戲_JAVA熱游—富甲三國之雄霸天下原創心得

因為工作忙碌的關系&#xff0c;很長時間都沒有來關注手機游戲論壇&#xff0c;這款富甲三國.雄霸天下&#xff0c;我也是前天才拿到手。游戲比想象中的簡單&#xff0c;個人僅用了兩個小時時間&#xff0c;就將三個人物全部通關。游戲的開始畫面制作得比較精美&#xff0c;而且…

Python多線程--互斥鎖、死鎖

1、互斥鎖 為解決資源搶奪問題&#xff0c;使用mutex Threading.Lock()創建鎖&#xff0c;使用mutex.acquire()鎖定&#xff0c;使用mutex.release()釋放鎖。 代碼一&#xff1a; import threading import time# 定義一個全局變量 g_num 0def test1(num):global g_num# 上鎖…

freemind 要下載java_Freemind

動手編輯先按Ctrln&#xff0c;新建一個文件。這時出現了一個根節點。用光標單擊它&#xff0c;改成“我學FreeMind”&#xff0c;然后在節點之外任一地方點擊鼠標(或按Enter)完成編輯。然后&#xff0c;按Insert鍵&#xff0c;輸入“下載安裝”&#xff0c;按Enter鍵&#xff…

本地連不上遠程mysql數據庫(2)

Host is not allowed to connect to this MySQL server解決方法 今天在ubuntu上面裝完MySQL&#xff0c;卻發現在本地登錄可以&#xff0c;但是遠程登錄卻報錯Host is not allowed to connect to this MySQL server,找了半天試了網上的一些方法都沒有解決&#xff0c;最終在一篇…

理解EnterCriticalSection 臨界區

通俗解釋就像上廁所&#xff1a; 門鎖了&#xff0c;就等著&#xff0c;等到別人出來了&#xff0c;進去鎖上&#xff0c;然后該干什么干什么&#xff0c;干完了&#xff0c;把門打開 門沒鎖&#xff0c;就進去&#xff0c;鎖上&#xff0c;然后該干什么干什么&#xff0c;干…

Python多線程--UDP聊天器

import socket import threadingdef recv_msg(udp_socket):"""接收數據并顯示"""# 接收數據while True:recv_data udp_socket.recvfrom(1024)print(recv_data)def send_msg(udp_socket, dest_ip, dest_port):"""發送數據"&…

mvc:default-servlet-handler/作用

<mvc:default-servlet-handler/>使用默認的servlet來相應靜態文件&#xff0c;因為在web.xml中使用了DispatcherServlet截獲所有的請求url&#xff0c;而引入<scprit type"text/javascript" src"js/jquery-1.11.0.mim.js"/>的時候&#xff0c;…

java中如何做模糊查詢_到底Java里的模糊查詢語句該怎么寫

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓現在String sql"select * from car where carName like %?%";可以查詢出結果了&#xff0c;但問題又來了&#xff0c;只能查詢出一條結果&#xff0c;代碼如下carDao.java頁面public ArrayList queryAppoint(String car…

vector 、map 、iterator 之學習筆記

由于本人要接手一項C方面 的工作。由于不會C,不過做過JAVA 以及一些web方面的開發&#xff0c;加之時間比較短。所以需要速成&#xff0c;于是學習筆記也基本都是用代碼代替。 //范例資源文件 /****************************************************************************…

redis的密碼驗證,及哨兵的相關配置

背景我們知道&#xff0c;redis默認是不配置密碼的&#xff0c;這就造成只要有redis的IPPort就可以無需驗證&#xff0c;登陸redis。如果恰巧你的redis是開放在公網上的&#xff0c;很容易就被******&#xff0c;獲取你的系統權限&#xff0c;經常被黑去當成了礦機。redis的安全…

tag的使用

tag True while tag:print("level")choice input("level>>>").strip() #作用是暫停 不會一直死循環if choice "quit":break #終止當前循環進入到上一層if choice "quit_all": tag False #不用一層層退出 直接退出整個…

pyecharts對于經緯度_一文帶你掌握Pyecharts地理數據可視化的方法

本文主要介紹了Pyecharts地理數據可視化&#xff0c;分享給大家&#xff0c;具體如下&#xff1a;一、Pyecharts簡介和安裝1. 簡介Echarts 是一個由百度開源的數據可視化&#xff0c;憑借著良好的交互性&#xff0c;精巧的圖表設計&#xff0c;得到了眾多開發者的認可。而 Pyth…