Java和其他語言的對比
一、Java的優點:
(1)可移植性好
(2)垃圾收集
(3)支援多執行緒
(4)沒有麻煩的指標
(5)支援分散式開發
(6)面向物件
(7)安全、簡單
Java與C#對比的好處:
(1)c#中有static constructor(靜態建構函式),而java中包含靜態塊。
詳細介紹一下:在java中使用“{}”稱為程式碼塊,根據程式碼塊的定義位置及宣告的關鍵字不同,程式碼塊可以分成以下四部分:
a.普通塊;b.構造塊;c.靜態塊;d.同步塊;
a.普通塊:一個方法中出現的"{}",如:
public static void main(String args[]){
//普通程式碼塊
{
.....
}
}
b.構造塊:直接在類中定義的程式碼塊,構造塊優於構造方法先執行,如:
class Demo{
//構造塊
{
......
}
public Demo(){//構造方法
}
}
c.靜態塊:關鍵字 static宣告的程式碼塊,用來靜態屬性初始化,靜態塊用於主方法執行,靜態塊優於構造塊執行,並且只執行一次,如:
public class CodeDemo{
static{
//靜態塊
}
public static void main(String args[]){
}
}
d.同步塊:介紹一下,java同步的實現有兩種:d1.同步程式碼塊塊(就是我們要講的同步塊);d2.同步方法
d1.同步程式碼塊:使用synchronized關鍵字進行同步程式碼塊的宣告,但是在使用此操作時必須明確的指出到底要鎖定的是哪個物件,一般都是以當前物件為主:synchronized(物件this或者類.class){//需要同步的程式碼,一般是將this鎖定},保證在synchronized(this)控制的這一段程式碼中只有一個執行緒在執行,不會有多個執行緒同時執行。如:
for(int i=0;i<50;i++){
synchronized(this){
if(this.ticket>0)
{
try{
Thread.sleep(10000);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
d2.同步方法:
public void run(){
for(int i=0;i<50;i++)
{
this.sale();//呼叫的同步方法
}
}
public synchronized void sale(){
if(this.ticket>0){
try{}
catch(){}//同上
}
}
(2)java中的main函式時必須是public static void main(String args[]){},否則JVM拒絕運;在C#中,main函式可以是private型別,protected也可以,可以沒有引數,返回值int型別。
(3)java在繼承、多型方面比C#強,java預設多型,而C#要求加上virtual(在父類上)和override(在子類上),而且C#要求不能改變原來的訪問修飾符。
(4)c#中防止一個類被繼承,要用到關鍵字sealed,而定義一個變數要用const;java則統一使用final.
(5)c#中要比較兩個引用變數是否指向同一個物件,不能用java中的==,而要用object裡的ReferenceEquals方法。如下:
a1==a2;object.RefereceEquals(a1,a2)。
(6)C#中沒有原始型別的包裝類,但是C#提供了自動裝箱,拆箱需要強制轉換。而java在jdk1.5以後就完全是自動拆裝箱了。
java和C#還有很多區別,我只是列舉了其中的一小部分,僅供大家參考。
轉載地址https://blog.csdn.net/waeceo/article/details/47372881