程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Java進擊C#——語法之基礎,

Java進擊C#——語法之基礎,

編輯:關於.NET

Java進擊C#——語法之基礎,


本章簡言

上一章講到關於項目工程開發常用的知識點,有了前面倆章的介紹之後。本章正式開始介紹關於C#的基礎語法。我們都很清楚C#也是面向對象的計算機語言。而且他跟JAVA的相似度高達80%。所以很多語法點基本上是一樣子。學過JAVA的人,現在開始學習C#的話。面臨最大的問題是環境的不熟悉。如開發環境。同時有一點希望讀者們心裡要明白。如果以為看了筆者的博文就可以說學會了,那我只能說你天真了。筆者的博文只能算是一種協助而以。加速你對C#的認識和了解。並且筆者不會更深入的講解C#,一切以入門上手為主。當然不可否認的是筆者寫的知識也不一定是正確的。

基礎語法之數據類型

數據類型。也就是所謂的變量。這是基礎中的基礎。讓我們看一下C#有哪一些常用的數據類型。

C#:

int intValue = 1;//跟JAVA一樣子。只是C#這邊有把int分為int32,int16,int64。其中int64好像就是long類型
long longValue = 2l;//跟JAVA一樣子。
float floatValue = 1f;//跟JAVA一樣子。
double doubleValue = 2d;//跟JAVA一樣子。
string stringValue = "aomi";//C#裡面字符串類型有倆種:string,String(注意頭字母大寫)。常用是string類型寫法。String是string對應的對象類型。而且JAVA只有String類型。
char charValue = 'c';//跟JAVA一樣子。
bool boolValue = false;//跟JAVA的boolean一樣子。只是這裡少了ean。同時C#本身也有bool對應的Boolean對象類型。
decimal decimalValue = 3.4m;//C#獨有的。也是浮點數。一般用於錢相關的業務。跟float,double用法是一樣子。只是這個是以M為結尾。
int? intMark = null;//可以為空的數據類型。C#獨有的。在JAVA筆者沒有見過
var varInt = 1;//有一點像弱化類型一樣子。主要是編譯器會根據上下文來判斷當前變量的類型。
var varString = "aomi"//同上

 上面是開發時候常用數據類型的定義。我們可以看出來。只有要記住幾個不同點就可以學會這邊的知識點了。

1.decimal類型不同:只要明白他跟double的用法是相似的(如果要深入的話,是不一樣子)。

2.string類型不同:JAVA頭字母是大寫。而C#卻是小寫。同時注意的是string類型的比較。C#用的是==和Equals方法,倆種比較方式都是比較值的(當然,非字符串是比較引用)。但JAVA卻不一樣子。這個你們懂的。

3.bool類型不同:少了ean。用法是一樣子。

4.var的關鍵字:有一點像弱化類型一樣子。主要是編譯器會根據上下文來判斷當前變量的類型。

5.數據類型?:可為空的數據類型。INT類型一般默認值為0,不可能為null。也不可能等於null。當加了?那就是不一樣子。

清楚了數據類型的定義之後,就要了解一下數據類型之後轉化。C#這邊筆者最常用的就三種方式的轉化。如下

C#:

int parseVlaue = Int32.Parse("123");
int convertVlaue = Convert.ToInt32("123");
int value = (int) 4.5d;

上面的代碼是三種常用的類型轉化的方式。關於用Parse方法相信JAVA也常看到。如Integer.parseInt。筆者不多說。中間那種方式才是C#中最常用的方法。也是JAVA中筆者沒有看到的。Convert類是一個用於轉化的工具類。裡面包含了很多種轉化方法。如何學習呢?寫一下Convert.這個時候開發工具就是提示各種方法出來。這不是可以學習了嗎?或是按快捷鍵Ctrl+J。提示窗體如下

上面的轉化都是顯性轉化,關於隱性的轉化。筆者就不多提。還有一點值得注意:1.C#有一個一般對象都會有的方法ToString。有時候這個方法會幫你轉化對應的字符串。

基礎語法之判斷和循環語句

數據類型結束之後,便是對應的判斷和循環語句了。讓我們選看一下關於判斷語句的用法吧。

C#:

var ifIntValue = 123;
if(ifIntValue > 100)
{
     //邏輯代碼
}
else if(ifIntValue < 10)
{
    //邏輯代碼
}
else
{
    //邏輯代碼
}

string  aomi =  "aomi";
switch(aomi)
{
   case "aomi":
      //邏輯代碼
        break;
   default:
         //邏輯代碼
        break;               
}            

顯然判斷語句沒有什麼差別。如果硬要說的話。筆者到是發現一個奇怪的結果:上面default:裡面的break;C#這邊不能刪。刪了會出錯。JAVA卻可以。

了解完了判斷語句之後,讓我們了解一下循環語句吧。同樣子以帶代碼來看

int j = 0;

while(j<10) { //邏輯代碼 } do { } while(j<10); for(int i=0;i<10;i++) { //邏輯代碼 } string[] values = { "aa", "bb" }; foreach(string v in values)//相當於JAVA的for(變量類型 變量名 : 數組變量); { //邏輯代碼 }

我們可以看到最後一個的不同點:JAVA是用for(變量類型  變量名  : 數組變量);而且C#是foreach(變量類型  變量名   in 數組變量)。特別注意的是這裡:和 in 的細微差別。另外循環裡面的break和continue的用法是不是一樣子。

基礎語法之數組和集合

數組的概念大家都知道。實例化的形式不管是JAVA還是C#都是一樣子。實例化常用方式筆者認為有三種:

1.實例化不帶初始值。

 int [] array = new  int[4];

2.實例化帶有初始值。

int [] list = new int[4]{1,2,3,4};

上面這段代碼在C#裡面是通得過的。可是JAVA卻不行。必須把[4]裡面數值4去掉JAVA才能通過了。即是把[4]修改成[]。但是C#裡面去不去數值4都可以通過。

3.匿名實例化數組。倆邊通得過。到是這一點讓筆者沒有想到的。

String[] values = { "aa", "bb" };

集合類可以說是編程中最常用的一個部分。C#集合類可以說都是在System.Collections命名空間下。那們大部分是實現於三個接口類:IList接口、ICollection接口、 IEnumerable接口、IDictionary接口。筆者喜歡把集合類分為倆種:一是集合;一種是字典。 

IEnumerable接口:大白話講這個接口就是跟foreach有關系。迭代集合時候需要實現的接口。筆者一直不知道如何去說明這個接口。類似於JAVA的Iterator接口。

ICollection接口:獲得集合類的數量和復制一個數組類型。

IList接口:類似於JAVA的List接口的功能。

IDictionary接口:類似於JAVA的Map接口的功能。

那麼C#這邊常用的實例化用法如下

IList strList = new ArrayList();
ArrayList strList = new ArrayList();

ArrayList類算是集合類常用的一個類。對於獲得集合裡面的一個元素的話。C#這邊略有一點不同。

IList strList = new ArrayList();
object obj = strList[0];

strList[0]代碼就是相當於JAVA的strList.get(0)。那麼刪除呢?

IList strList = new ArrayList();
strList.RemoveAt(0);

上面是刪除中的一種。還是有一種就是傳一個集合對應的值進行刪除。最後看一下增加。

int aaa = 1;
IList strList = new ArrayList();
strList.Add(aaa);

上面筆者說喜歡把集合類分為倆種,上面是集合部分。接下來讓我們看一下字典部分。字典相信大家都知道 一個KEY就有對應的一個VALUE。即是鍵值對。

IDictionary dic = new Hashtable();
dic.Add("aomi", 123);

上面就是實例化一個字典並增加對應的數據。一看就明白如何增加數據了。

IDictionary接口裡面有倆種很重要的屬性成員:Keys和Values。分別用於存放鍵的集合和值的集合。所以我們可以根據這倆個屬性成員做很多事情。

IDictionary dic = new Hashtable();
foreach(object keyObj in dic.Keys)
{
     Console.WriteLine(dic[keyObj]);
}

跟上面的集合的獲得方式有一點像了。dic[keyObj]相當於dic.get(key)。當然我們也可以直接把Values做迭代。筆者就不多說了。至於刪除就是調用Remove方法傳入對應的鍵參數。

上面的知識是很早以前常用的一些寫法。現在版本的變化。對應的很多常用的知識也代替了。不過寫法都不會變。

ArrayList類被List<T>類取代。

Hashtable類被Dictionary<TKey,TValue>類取代。

上面和T、TKey、TValue都是泛型。下面就是對應的實例化。

IList strList = new List<object>();
IDictionary dic = new Dictionary<object,object>();

集合類除了上面講到的之外。還有Queue類、SortedList類、 Stack類等。筆者這裡就不多介紹了。有心的朋友可以去找一下資料。

注意:在我們應用中常常會講到線程安全的集合類:

1.ConcurrentQueue 

2.QueueConcurrentStack

3.ConcurrentBag

4.ConcurrentDictionary

5.BlockingCollection

本章總結

本章主要是對C#基礎語法進行講解。筆者相信對於有經驗的JAVA開發人員來講很簡單的。同時我們也可以看到JAVA和C#之間的語法點差不多。更多只是在寫法的不同而以。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved