⑴ 如何優化java代碼及提高執行效率
張小喜告別996 實現高效編程 減少開發壓力 開啟Java高效編程之門(完整版高清視頻)網路網盤
鏈接:
若資源有問題歡迎追問~
⑵ java和C語言比哪個效率高
java是跨平台的,效率比一般的高級語言低,C語言幾乎直接轉換為機器語言,效率是比所有的高級語言都高。因此C寫的軟體在運行時比JAVA寫的同樣功能的代碼效果許多許多。
⑶ Java代碼執行效率問題
效率是一樣的,雖然語句不一樣,但是編譯成class文件後,都是相同的JVM指令。
新建一個Java文件Test2.java,然後把它編譯成Test2.class
public class Test2 {
public static boolean stringIsNull(String str) {
if (str == null)
return true;
return false;
}
public static boolean stringIsNull2(String str) {
if (str == null)
return true;
else
return false;
}
public static boolean stringIsNull3(String str) {
return str == null;
}
}
然後你可以通過JDK自帶的javap命令查看JVM指令,三個方法的JVM指令是一樣的
<JAVA安裝目錄>/bin/javap -c Test2
Compiled from "Test2.java"
public class Test2 extends java.lang.Object{
public Test2();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static boolean stringIsNull(java.lang.String);
Code:
0: aload_0
1: ifnonnull 6
4: iconst_1
5: ireturn
6: iconst_0
7: ireturn
public static boolean stringIsNull2(java.lang.String);
Code:
0: aload_0
1: ifnonnull 6
4: iconst_1
5: ireturn
6: iconst_0
7: ireturn
public static boolean stringIsNull3(java.lang.String);
Code:
0: aload_0
1: ifnonnull 8
4: iconst_1
5: goto 9
8: iconst_0
9: ireturn
}
⑷ Java 代碼的運行效率是由Java虛擬機決定,還是由我們的PC速度決定
運行效率分兩個部分,一個是編譯的效率,一個是執行的效率。
編譯的效率是由jvm和pc兩部分影響的,編譯後的class文件的執行速度就完全由pc決定了,這個和你的代碼中是否有循環沒有直接關系,執行所耗費的時間是按照計算機計算一個二進制基礎運算的基礎來衡量的。這裡面還有class文件解釋成機器碼的時間,這個就是按語句的多少來算了,因為java是逐行逐句解釋的。所以我們說class文件的運行時間也包含了class文件解釋成機器碼的時間。
不過java運行效率再快,也沒有c代碼快,這個不是說c代碼精煉就運行快的原因。
java代碼通過jvm編譯成class文件,這時候還不能說是編譯成機器碼了,class碼呢還是一種中間碼,還需要被解釋成機器碼,這也是為什麼java是跨平台的語言的原因。而c代碼,只需要直接一次性編譯成機器碼就可以了。這也是為什麼在某種平台下寫的c代碼不能再跨平台的原因。
希望我已經解釋清楚了。
⑸ Java效率真的很低嗎android為何要採用
java的效率很低。而且現在程序高手一般都討厭java,其實看不起java也是有道理的,不要在android上投入太大,還是多在WP7和SB3上下點功能吧。android的SDK是java開發的,這個沒有錯啊。我今天剛看了andorid的開發方式,google那幫人怎麼會想到用java。
技術先進的不一定有市場。
想當初比windows系統技術先進的多了,可現在。
市場決定一切。
純語言而言,JAVA的執行效率確實不如C++。 但這只是一方面,現今的硬體資源已經很充裕了, 犧牲一點資源消耗,從而獲得架構、安全、擴展、健壯等方面的優勢難道不更好么?更何況如果runtime做得好的話,除了資源佔用大點,效率方面基本沒什麼損失……net不就是這樣么,載入的時候慢點,運行的時候並不慢。而且android應用運行環境並不是Sun Java。
⑹ Java到底效率怎麼樣
1. 至今為止,java是大量實際得到應用的語言中,可讀性最強,最利於閱讀和理解,語法最嚴謹和規范的語言(當然,這也可以理解為語法繁瑣的另一種表述)之一,在這一點上,只有已經基本退出歷史舞台的pascal可與之相提並論。而pascal並不是面對對象的,(面對對象的特點和優勢我就不再贅述了,有興趣可以查閱相關資料)。
基於這一點,產生了很多其獨特的優勢,例如:
java是目前最佳的演算法及數據結構教學語言(這個位置以前曾經是屬於pascal的)
java是傳統的軟體開發過程(生命周期管理)的最佳實踐語言,即在傳統的 「需求-設計-代碼-測試」 這樣的一個過程中,java是最能夠最大程度貫徹和實踐軟體工程學的理論的。從建模設計工具直接生成代碼,沒有比java更出色和靠譜的了。而從代碼去逆向生成的javadoc和uml也堪稱經典。只有java能夠在執行和操作層面,將「設計-代碼」這個過程如此出色的無縫集成起來。
java的白盒測試方面的表現非常出色和易行
java在代碼評審,缺陷管理,開發規范約束,大團隊的協同開發方面,有著無可爭辯的突出優勢
其實這樣的例子有很多,就不一一舉述了
2. java有著目前為止,最豐富,最強大的IDE開發環境,這是歷史原因形成的,包括商業因素在內
3. java有著現有所有語言中,擁有最長的產品線,適用性是最廣的語言之一。從前端的app應用,到嵌入式,到web,到伺服器應用
4. java擁有所有語言中最豐富的類庫和代碼資源
5. 至今為止,在被廣泛應用的編程語言中,java依然是開發效率最高的語言。之所以使用編程語言這個詞,是為了和腳本語言,以及4GL開發工具區隔開來。這些語言和編程語言相比,其適用性都有很大局限,而且後者(4GL)和OS平台緊耦合關聯。事實上,近10多年來,腳本語言領域突飛猛進(有賴於web應用提供了廣闊的舞台),而編程語言基本上自java之後就沒有太多大的新鮮事了。
⑺ C#和Java的運行效率誰比較快
不他們是平分秋色吧
我在這里不能完全列出不同之處,僅列出比較顯著的區別:
1.指針
JAVA語言讓編程者無法找到指針來直接訪問內存無指針,並且增添了自動的內存管理功能,從而有效地防止了c/c++語言中指針操作失誤,如野指針所造成的系統崩潰。但也不是說JAVA沒有指針,虛擬機內部還是使用了指針,只是外人不得使用而已。這有利於Java程序的安全。
2.多重繼承
c++支持多重繼承,這是c++的一個特徵,它允許多父類派生一個類。盡管多重繼承功能很強,但使用復雜,而且會引起許多麻煩,編譯程序實現它也很不容易。Java不支持多重繼承,但允許一個類繼承多個介面(extends+implement),實現了c++多重繼承的功能,又避免了c++中的多重繼承實現方式帶來的諸多不便。
3.數據類型及類
Java是完全面向對象的語言,所有函數和變數部必須是類的一部分。除了基本數據類型之外,其餘的都作為類對象,包括數組。對象將數據和方法結合起來,把它們封裝在類中,這樣每個對象都可實現自己的特點和行為。而c++允許將函數和變數定義為全局的。此外,Java中取消了c/c++中的結構和聯合,消除了不必要的麻煩。
4.自動內存管理
Java程序中所有的對象都是用new操作符建立在內存堆棧上,這個操作符類似於c++的new操作符。下面的語句由一個建立了一個類Read的對象,然後調用該對象的work方法:
Read r=new Read();
r.work();
語句Read r=new Read();在堆棧結構上建立了一個Read的實例。Java自動進行無用內存回收操作,不需要程序員進行刪除。而c十十中必須由程序貝釋放內存資源,增加了程序設計者的負扔。Java中當一個對象不被再用到時,無用內存回收器將給它加上標簽以示刪除。JAVA里無用內存回收程序是以線程方式在後台運行的,利用空閑時間工作。
5.操作符重載
Java不支持操作符重載。操作符重載被認為是c十十的突出特徵,在Java中雖然類大體上可以實現這樣的功能,但操作符重載的方便性仍然丟失了不少。Java語言不支持操作符重載是為了保持Java語言盡可能簡單。
6.預處理功能
Java不支持預處理功能。c/c十十在編譯過程中都有一個預編澤階段,即眾所周知的預處理器。預處理器為開發人員提供了方便,但增加丁編譯的復雜性。JAVA虛擬機沒有預處理器,但它提供的引入語句(import)與c十十預處理器的功能類似。
7. Java不支持預設函數參數,而c十十支持
在c中,代碼組織在函數中,函數可以訪問程序的全局變數。c十十增加了類,提供了類演算法,該演算法是與類相連的函數,c十十類方法與Java類方法十分相似,然而,由於c十十仍然支持c,所以不能阻止c十十開發人員使用函數,結果函數和方法混合使用使得程序比較混亂。
Java沒有函數,作為一個比c十十更純的面向對象的語言,Java強迫開發人員把所有例行程序包括在類中,事實上,用方法實現例行程序可激勵開發人員更好地組織編碼。
8 字元串
c和c十十不支持字元串變數,在c和c十十程序中使用Null終止符代表字元串的結束,在Java中字元串是用類對象(strinR和stringBuffer)來實現的,這些類對象是Java語言的核心,用類對象實現字元串有以下幾個優點:
(1)在整個系統中建立字元串和訪問字元串元素的方法是一致的;
(2)J3陽字元串類是作為Java語言的一部分定義的,而不是作為外加的延伸部分;
(3)Java字元串執行運行時檢空,可幫助排除一些運行時發生的錯誤;
(4)可對字元串用「十」進行連接操作。
9「goto語句
「可怕」的goto語句是c和c++的「遺物」,它是該語言技術上的合法部分,引用goto語句引起了程序結構的混亂,不易理解,goto語句子要用於無條件轉移子程序和多結構分支技術。鑒於以廣理由,Java不提供goto語句,它雖然指定goto作為關鍵字,但不支持它的使用,使程序簡潔易讀。
l0.類型轉換
在c和c十十中有時出現數據類型的隱含轉換,這就涉及了自動強制類型轉換問題。例如,在c十十中可將一浮點值賦予整型變數,並去掉其尾數。Java不支持c十十中的自動強制類型轉換,如果需要,必須由程序顯式進行強制類型轉換。
11.異常
JAVA中的異常機制用於捕獲例外事件,增強系統容錯能力
try{//可能產生例外的代碼
}catch(exceptionType name){
//處理
}
⑻ java的效率高,還是c的效率高
C的運行效率明顯要比JAVA高,因為C是編譯型的,直接將源碼編譯成機器代碼;而JAVA是解釋型,源碼被編譯成二進制偽代碼,由JAVA虛擬機解釋執行。
但是,由於C是編譯型的,它的可移植性差;而JAVA是解釋執行,因此具有很好的移植性,可跨平台運行。
目前java運行速度是沒有c快,但它的internet編程方面的強大優勢,易學性,完全面向對象的特性,以及全美40%以上的公司都採用java,你說你想學什麼?
java和c的速度比較,是相對的,針對不同的應用, 又不同的結果,編一個普通的本地應用程序,一般c 要快於java, 編web應用,由於c實現的cgi程序基本是進程型,而java application server 的管理servlet採用線程方式,所以,在訪問量大的情況下,java有優勢。
但是緊緊比較速度,除非是對實時性要求高的情況下,是不夠的。由於JAVA又比較完整,規范的庫,語言定義比較嚴格,一般開發速度比較高。