日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > Java > 正文

java與c#的區別、兩者有什么不同?

2020-02-02 19:01:16
字體:
來源:轉載
供稿:網友

Java 的設計者是因為討厭C++的復雜,于是Java 非常簡潔,GC 也讓內存管理非常方便,C# 是看中了Java 的GC,和虛擬機技術,希望把微軟的幾大語言集成到.NET 上來。 因此C#從語言上來講并不簡單甚至可以算的上復雜。

兩種語言的設計思路也不一樣,Java 是編譯解釋語言,C#是編譯然后編譯運行語言。Java 沒有委托,C# 有委托。Java 傾向于用Interface 實現委托的功能,而 在C# 中,Abstract Class 比Interface 發揮了更大功能。

Java 遵循camel 命名規則,C#遵循Pascal 命名規則。但是如今越來越多的Java 人開始使用C#, 同時也把camel 命名規則帶到了C#,這可能會讓C#代碼越來越難讀。為什么當初C#為什么不遵循camel 呢? 我看不出camel 命名規則有什么不好的。

一. 類名.this 與內部類

在 java 中,經常看到類似類名.this 的用法,this 就是當前對象實例,為什么前面會出現類名呢?對此 C# 程序員會很納悶。

在 Java 中,很多地方使用到了內部類,甚至可以在在內部類中訪問外部類中的成員,這個時候,在內部類中使用 this 的時候,就會出現 this 到底是誰的問題,到底是表示內部類的當前對象實例,還是外部類的當前對象實例問題。

在 Java 中,通過在 this 的前面加上外部類的類名,表示在內部類中使用外部類的當前對象實例。

我們看下面的一個例子。

復制代碼 代碼如下:

package core.sisheng;

// 外部類定義
public class OuterClass {

    // 內部類定義
    private class InnerClass
    {
        // 內部類中沒有定義 id 成員,這里訪問外部類中的成員
        public int getId(){    return OuterClass.this.id;    }
        public void setId(int id) { OuterClass.this.id = id;}

        // 內部類中定義了 name 成員,直接訪問內部類中的成員, 默認 this 訪問當前類中的成員
        private String name;
        public String getName() { return this.name;}
        // 可以在 this 的前面加上一個內部類的名稱
        public void setName(String name) { InnerClass.this.name = name;}

        // 內部類中也可以訪問外部類中同名的成員,需要加上外部類的名稱
        public String getOuterName() { return OuterClass.this.name;}
        public void setOuterName(String name) { OuterClass.this.name = name;}

        @Override
        public String toString()
        {
            return "Id: " + this.getId() + ", Inner Name: " + this.getName() + ", Outer Name: " + this.getOuterName();
        }
    }

    // 外部類中定義的成員 id 和 name
    private int id;
    private String name;

    private InnerClass innerInstance;
    public OuterClass()
    {
        this.innerInstance = new InnerClass();
        this.innerInstance.setId(20);
        this.innerInstance.setName("Tom");
        this.innerInstance.setOuterName("Alice");
    }

    public String toString()
    {
        return this.innerInstance.toString();
    }   
}

在C#中,類區分為嵌套類和非嵌套類,前者是聲明在其他數據類型內部的類。后者是直接定義在某一個命名空間的類。C# 中很少定義嵌套類。


非內嵌類只允許使用public和internal的訪問控制,而內置類則允許使用所有的五種訪問控制符,private, protected , internal protected,public和internal。內部類也可以訪問外部類的所有方法,包括instance方法和private方法,但是需要顯式 的傳遞一個外部類的實例。

C#中的內部類能夠使用外部類定義的類型和靜態方法,但是不能直接使用外部類的實例方法,因此,不存在上面的問題。

在C#中,外部類對于內部類的作用更像是一個命名空間,只要訪問控制允許,就可以使用下面的方法創建內部類對象實例。

OuterClass.InnerClass  obj = new OuterClass.InnerClass();這個實例與外部類的任何實例沒有任何直接的關系。類似于Java中的靜態內部類。

二、類名.class 與類型

在 java 中還經常看到類名.class 的用法,這個用法相當于  C# 中的 typeof( 類名 ),用來獲取類型的類型對象實例引用。

java中,每個class都有一個相應的Class對象,當編寫好一個類,編譯完成后,在生成的.class文件中,就產生一個Class對象,用來表示這個類的類型信息。獲得Class實例的三種方式:

通過調用對象實例的 getClass() 方法獲取該對象的Class實例。

使用Class的靜態方法forName(),用類的名字獲取一個Class實例。Class.forName(xxx.xx.xx) 返回的是一個類, 作用是要求JVM查找并加載指定的類,也就是說JVM會執行該類的靜態代碼段。

類名.calss的方式獲取Class實例,對基本數據類型的封裝類,還可以采用.TYPE來獲取對應的基本數據類型的Class實例。

C# 中獲取類型對象實例的方式更加簡單明確一些。

通過調用數據實例的 GetType() 方法獲取,這個方法繼承自Object,所以C#中任何對象都具有GetType()方法,x.GetType(),其中x為變量名。

typeof(x)中的x,必須是具體的類名、類型名稱等,不可以是變量名稱。

通過 System.Type 的靜態方法 System.Type.GetType()。

 三、匿名類

在 java 中,匿名類的使用也比較多,比如在 Android 中,實現按鈕的監聽,經常會看到類似這樣的代碼。

復制代碼 代碼如下:

this.listener0 = new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        Intent intent = new Intent( MainActivity.this, ActivityFrameLayout.class);
        setTitle("FrameLayout");
        startActivity( intent );
    }
};

在這里,OnClickListenter 實際上是一個接口,接口能用來創建對象實例嗎?當然不能。


所以,java 在這里自動創建一個實現接口的匿名類,我們創建出來的實際上就是這個匿名類的對象實例。

這樣做的好處就是我們沒有必須再定義一個只使用一次的類,然后再通過這個類創建對象實例,簡化了程序的開發。

比如,我們有下面的一個接口。

復制代碼 代碼如下:

public interface myInterface {
    void onClick();
}

就可以通過接口創建一個實現接口的匿名類的對象實例,然后使用這個對象實例。

復制代碼 代碼如下:

myInterface instance = new myInterface(){
    @Override
    public void onClick()
    {
        System.out.println("Clicked!");
    }
};

instance.onClick();在 C# 中,我們根本就不會使用這種形式,通過委托,可以非常簡單地實現同樣的功能。

 注意,java 中是沒有委托的。

如果我們輸出一下這個實例的類型,你會看到這個匿名類的實際類型的。

復制代碼 代碼如下:

System.out.println( instance.getClass());
// class core.sisheng.Study1$1四、屬性(Property)


屬性的概念對大家來說應該是很熟悉的,類成員函數可以自由地訪問本類中的任何屬性成員。不過若要從一個類中去訪問另一個類中的屬性,那就比較麻煩了,所以很多時候我們使用Getxxx和Setxxx方法,這樣看起來顯得極不自然,比如用Java或者C++,代碼是這樣的:

復制代碼 代碼如下:

foo.setSize (getSize () + 1);
label.getFont().setBold (true);


但是,在C#中,這樣的方法被“屬性化”了。同樣的代碼,在C#就變成了:  
foo.size++;  
label.font.bold = true; 
    可以看出來,C#顯然更容易閱讀和理解。我們從這個“屬性方法”的子程序代碼中,也可以看到類似情況:

Java/C++:  

復制代碼 代碼如下:

public int getSize()  
{  
return size;  
}  
public void setSize (int value)  
{  
size = value;  

C#:  

復制代碼 代碼如下:

public int Size  
{  
 get{return size;}  
 set{size = value;}  

為了區分這種屬性化的方法和類的屬性成員,在C#中把屬性成員稱作“域(field)”,而“屬性”則成為這種“屬性化的方法”專用的名詞。順便說一句,其實這樣的屬性化方法在VB和DELPHI中是經常碰到的,在VB中它也就叫屬性。另外,在C#中Get和Set必須成對出現,一種屬性不能只有Get而沒有Set(在Java和C++中就可以只有Get或者只有Set),C#中這樣做的好處在于便于維護,假如要對某種屬性進行修改,就會同時注意Get和Set方法,同時修改,不會改了這個忘了那個。

五、對象索引機制(Indexer)

C#中引入了對象索引機制。說得明白點,對象索引其實就是對象數組。這里和上一節中的屬性聯系起來講一下,屬性需要隱藏Get和Set方法,而在索引機制中,各個對象的Get或者Set方法是暴露出來的。比如下面的例子就比較清楚地說明了這一點。以上介紹C#和Java不同點

復制代碼 代碼如下:

public class Skyscraper 

 Story[] stories; 
 public Story this [int index] { 
get { 
 return stories [index]; 

set { 
 if (value != null) { 

stories [index] = value; 
 } 

 } 
... 
}


以上介紹C#和JAVA得不同點,希望對你了解C#和JAVA有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产成人精品日本亚洲专区61 | 午夜精品一区二区三区免费视频| 日韩精品免费观看视频| 日韩久久久精品| 最新中文字幕在线播放 | 日韩欧美在线视频| 在线一区免费| 一区在线视频观看| 国产欧美日韩第一页| 精品久久久三级| 欧美一级免费观看| 日韩欧美视频一区二区三区四区| 欧美日韩中文字幕在线| 亚洲成年网站在线观看| 日韩欧美国产综合| 久精品在线观看| 欧美日韩国产999| 白嫩少妇丰满一区二区| 日韩精品一区二区三区视频播放| 国产成人综合av| 中文字幕在线欧美| 区日韩二区欧美三区| 欧美日韩在线国产| 日韩国产一区| 91精品国产入口| 国产在线一区二区视频| 影音先锋一区二区资源站| 91精品视频国产| 精品熟女一区二区三区| 日本亚洲视频在线| 中文字幕在线亚洲| 日韩精品国产欧美| 国产在线精品日韩| 在线视频国产三级| 欧洲精品二区| 亚洲一区精品在线| 欧美日韩国产91| 99精品在线播放| 一区二区三区精品99久久| 欧美日韩精品免费在线观看视频| 日韩精品乱码av一区二区| 久草视频观看| 在线看的av| 99pao成人国产永久免费视频| 欧美三级日韩三级国产三级| 日韩欧美在线中字| 92久久精品| 一级日本免费的| 日韩免费电影网站| 欧美日韩精品在线观看| 中文字幕在线观看网址| 精品福利一区二区三区| 天天综合天天| 日本国产在线视频| 中文字幕在线视频日韩| 日韩不卡一二三区| 欧美日韩在线视频免费观看 | 日韩欧美国产三级| 国产伦精品免费视频| 国产日韩1区| 91一区二区| 国产综合精品在线| 亚洲 欧美综合在线网络| 日韩高清不卡| 中文字幕在线视频久| 国产69精品久久久久孕妇国产69久久 | 国产h片在线观看| 国产三级做爰在线观看| 中文在线一区二区| 亚洲人成欧美中文字幕| 不卡专区在线| 99精品一级欧美片免费播放| 91精品国产91久久久久青草| 欧美日韩成人综合| 久久蜜桃精品| 国产永久在线观看| 91精选在线| 午夜国产欧美理论在线播放| 国产1区在线| 日韩免费视频一区二区视频在线观看 | 日韩视频不卡中文| 国产欧美中文字幕| 一区二区精品区| 国产在线观看色| 欧美成人精品在线| 日韩精品在线观看视频| 国产欧美日韩成人| www中文字幕在线观看| 蜜桃视频一日韩欧美专区| 中文在线不卡| 91精品在线免费| 国产视频aaa| 亚洲最新永久观看在线| 在线国产日本| 黄色一区二区在线观看| 欧美中文字幕精品| 精品999视频| 日韩视频在线免费看| 精品三级av| 国产成人精品999| 国产中文在线播放| 中文字幕 亚洲视频| 久久激情一区| 欧美 日韩 国产在线| 不卡一二三区| 日韩精品视频免费看| 精品国产91| 欧美日韩精品区| 欧美中文字幕在线视频| 亚洲福利精品| 欧美日韩国产成人| 国产欧美一级| 国产资源在线观看| 国产拍揄自揄精品视频麻豆| 日韩国产91| 欧美乱大交xxxxx另类| 亚洲免费在线观看av| 日韩在线中文字幕| 国产成人精品免费在线| 国内精品不卡| 久久久精品日韩| 精品国产99久久久久久| 中文字幕在线视频日韩| 亚洲天堂国产视频| 欧美日韩国产高清视频| 国产高清精品二区| 日韩精品三级| 精品网站999| 在线视频亚洲| 国产偷国产偷亚洲清高网站 | 成人精品视频一区| 精品在线99| 中文字幕国产在线| 在线国产1区| 精品999视频| 中文字幕 亚洲一区| 亚洲中文字幕在线一区| 午夜精品一区二区三区免费视频| 91精品国产自产| 欧美日韩国产观看视频| 高清在线一区| 亚洲乱码中文字幕| 欧美日韩在线视频免费观看 | 一区免费在线| 国产成人精品999| 午夜福利一区二区三区| 欧美一级手机免费观看片| 久草视频观看| 欧美亚洲综合视频| 亚洲一区在线观看视频| 视频一区二区不卡| 亚洲免费观看在线观看| 成人一区二区不卡免费| 中文字幕精品www乱入免费视频| 一区二区欧美国产| 精品久久久视频| 天堂在线视频中文网| 欧美日韩视频不卡| 午夜伊人狠狠久久| 久久精品黄色片| 国产偷国产偷亚洲清高网站 | 国产亚洲污的网站| 在线视频第一页| 日韩精品三级| 久久永久免费视频| 久久精品夜夜夜夜久久| av免费网站在线| 国产亚洲人成a一在线v站| 日韩欧美99| 在线观看免费国产成人软件| 国产69精品久久久久孕妇国产69久久| 欧美日韩一二三四| 国产一区免费视频| 中文字幕国产在线| 中文字幕 日韩 欧美| 亚洲国产91精品在线观看| 欧美日韩在线观看一区| 国产aa精品| 日韩午夜一区| 久久婷婷中文字幕| 亚洲视频在线观看日本a| 日韩午夜中文字幕| 亚洲综合日韩| 亚洲第一中文字幕| 国产一二三区精品视频| 国产在线黄色片| 欧美日韩在线视频免费观看| 国内不卡的二区三区中文字幕| av不卡免费看| 精品色蜜蜜精品视频在线观看| 日韩视频在线一区二区| 99国产成 人 综合 亚洲欧美| 精品日韩欧美| 中文字幕在线导航| 综合图区亚洲白拍在线| 成片免费观看| 亚洲va中文字幕| 日韩在线观看视频一区二区| 91精品国产全国免费观看| 国产一二三视频| 在线中文字幕视频观看| 欧美二三四区| 日韩欧美在线中字| 二区视频在线观看| 亚洲综合在线中文字幕| 国产在线拍偷自揄拍精品| 精品国产欧美成人夜夜嗨| 91精品国产欧美日韩| www.狠狠干| 一区二区视频免费看| 91麻豆精品国产91久久久使用方法| 欧美三级在线看| 国产主播中文字幕| 久久99精品国产| 亚洲视频 中文字幕| 亚洲视频一二三四| 精品日韩在线观看| 日韩欧美在线第一页| 亚洲综合视频一区| 日韩免费高清一区二区| 国产黄色网页| 欧美日韩国产系列| 国产日产一区二区三区 | 日韩精品视频在线观看网址| 日韩在线视频观看| 欧美sm一区| 91精品久久久久久蜜臀| 亚洲一区激情| 日韩一级免费视频| 国产在线视频不卡| 免费视频二区| 一级一片免费视频| 日韩精品大片| 欧美日韩成人一区二区| 欧美日韩视频不卡| 日韩精品第一区| 亚洲免费中文字幕| 一本大道一区二区三区| 91精品国产丝袜白色高跟鞋| 91一区二区| 91精品啪在线观看国产60岁| 国产字幕中文| 91精品国产免费久久综合| 中文字幕欧美亚洲| 中文字幕亚洲一区在线观看| 日韩精品a在线观看91| 欧美国产一级| 国产一区激情在线| 日韩在线中文字幕| 亚洲高清精品视频| 日韩视频中文| 欧美日韩国产在线播放| 欧美日韩成人综合| 中文字幕在线观看网址| 99精品电影| 精品国产999| 国产三级第一页| 国产视频二区| 国产视频一区三区| 亚洲欧洲日韩在线| 久久久精品欧美| 视频一区二区精品的福利| 在线国产1区| 婷婷中文字幕一区三区| 五月综合激情日本mⅴ| 91精品国产高清久久久久久| 国产拍揄自揄精品视频麻豆| 国产午夜精品视频| 欧美婷婷精品激情| 精品人妻一区二区免费视频| 国产三级做爰在线观看| 欧美黄页在线免费观看| 欧美在线日韩精品| 亚洲欧美小说国产图片| 中文字幕一区二区三区精品| av中文网站| 午夜一区二区三区视频| 精品视频资源站| 国产区高清在线| 日韩一级二级三级精品视频| 中文字幕精品亚洲| 日韩精品一二三四区| 日韩在线观看视频一区| 91精品久久久久久久久久| 日韩欧美字幕| 国产高清在线观看| 国产欧美日韩中文字幕| 亚洲国产欧美日韩精品| 最新中文字幕在线| 国产一级久久久| 亚洲a级在线播放观看| aaa大片在线观看| 国产成人精品亚洲| 国产伦精品免费视频| 精品日韩一区二区三区免费视频| 精品综合久久久久| 欧美日韩中文字幕在线视频| 精品免费视频| 日本亚洲视频在线| 日韩欧美国产高清| 精品视频www| 91精品国产综合久久蜜臀 | 国产一级久久久| 精品成人久久久| 欧美日韩精品不卡| 99国内精品| 在线亚洲人成| 日韩三级在线播放| 日韩精品视频在线免费观看| 欧美日韩高清一区二区| 亚洲欧美日本国产专区一区| 国产日韩av一区二区| 日韩在线中文| 国产亚洲人成a一在线v站| 99视频在线看| 日本精品二区| 国产日韩电影| 欧美日韩性视频在线| 亚洲成av人片在线| 日韩手机在线观看视频| 91欧美日韩麻豆精品| 亚洲永久字幕| 欧美三级在线看| 日韩欧美一级视频| 久久99久久久欧美国产| 国产三级精品网站| 深夜福利一区| 国产一级粉嫩xxxx| 中文字幕在线高清| 精品在线观看一区| 午夜伊人狠狠久久| 日韩高清不卡在线| 国产欧美久久久精品免费| 欧美另类专区| 中文字幕在线播放一区| www.三级.com| 亚洲一卡二卡在线观看| 中文字幕 欧美日韩| 亚洲欧美韩国综合色| 91精品国产自产观看在线| 欧美啪啪一区| 精品国产乱码一区二区| 亚洲高清中文字幕| 中文在线第一页| 久久久水蜜桃| 日本啊v在线| 日韩欧美在线影院| 91精品国产全国免费观看| 欧美日韩综合在线免费观看| 精品一区二区在线观看视频| 在线视频一区二区三区在线播放| 国产在线一在线二| h片精品在线观看| 在线欧美一级视频| 九色蝌蚪视频在线| 国产色综合网| 日韩一级免费视频| 亚洲三级网站| 在线视频第一页| 国产三级中文字幕| 91精品在线视频观看| 91精品国产高清| 欧美日韩精品欧美日韩精品一| 国产亚洲一级| 亚洲专区一区| 色猫猫国产区一区二在线视频 | 欧美综合精品| 国产乱码午夜在线视频| 日本不卡免费高清视频| 欧美日韩视频不卡| 深夜福利亚洲| 精品欧美不卡一区二区在线观看| 一区二区不卡在线播放| 91精品日本| 99视频在线看| 欧美日韩在线第一页| 国产在线观看色| 粉嫩粉嫩芽的虎白女18在线视频| 日韩 欧美 中文| 最近中文字幕在线中文高清版| 欧美日韩国产123区| 中文字幕在线导航| 亚洲免费婷婷| 欧美婷婷久久| 欧美精选午夜久久久乱码6080| 国产乱码在线观看| 亚洲免费精品| 天堂在线视频中文网| 亚洲精品中文字幕乱码三区| 欧美日韩亚洲天堂| 97最新国自产拍视频在线完整在线看| 日韩欧美一级精品久久| 国产一区成人| 欧美日韩激情一区| 中文字幕线观看| 精品网站999www| 91精品蜜臀在线一区尤物| 久久久精品午夜少妇| 日韩欧美在线网址| 精品久久久精品|