《Java是如何快速煮成C#的?》(一):相似的方法

來源:互聯網
上載者:User

打算每天花點時間把學習Java的過程記錄下來,這個斷斷續續的Java學習筆記是自己學習java過程中的零星總結,以作備份。同時希望與CSharp轉Java領域的朋友們共同學習。

相比而言,C#是後生,它吸收了Java的大部分精華,但兩者還是有一些細微差別,今天,我們看第一個區別:






許多系統對象方法都有相同的方法名,只是在大小寫形式上有區別。

我們通過一個最簡單的例子:

文本"1ASDF NI1221312 HK1 2222/1
1QWW NI1232133 HK1 3333/1"
兩行文本,比如第1行表示旅客1的資訊,第2行表示旅客2的資訊,後面可能還有很多旅客資訊,如何用Regex提取每個旅客的資訊?最後結果類似於String1:1ASDF NI1221312 HK1 2222/1,String2:1QWW NI1232133 HK1 3333/1

用熟悉的C#,我們這麼寫:

using System;
using System.Text;
using
 System.Text.RegularExpressions;
namespace LearnJavaFromCharp01
{
    class Program
    {
        static void Main(string[] args)
        {
            String str = "1ASDF NI1221312 HK1 2222/1" + "1QWW1 NI1232133 HK1 3333"
                + "1QWW2 NI1232133 HK1 33331" + "1QWW3 NI1232133 HK1 33331/1"
                + "1QWW4 NI1232133 HK1 33331" + "1QWW5 NI1232133 HK1 3333/1";
            String regex = "(1)(?:.|\n)*?/\\1";
            GetRegexString(str, regex);
            Console.ReadKey();
        }

      static void GetRegexString(string oldStr, String strPattern)
        {
            Regex p = new Regex(strPattern, RegexOptions.Compiled);
            MatchCollection mc = p.Matches(oldStr);
            for (int i = 0; i < mc.Count; i++)
            {
                Console.WriteLine(mc[i].Value);
            }
        }
    }
}

模仿著,Java可以這麼寫:

package com.java.learn.csharp;

import java.util.regex.Matcher;
import
 java.util.regex.Pattern;

public class LearnJavaFromCsharp {
public static void main(String[] args) {
        String str = "1ASDF NI1221312 HK1 2222/1" + "1QWW1 NI1232133 HK1 3333"
                + "1QWW2 NI1232133 HK1 33331" + "1QWW3 NI1232133 HK1 33331/1"
                + "1QWW4 NI1232133 HK1 33331" + "1QWW5 NI1232133 HK1 3333/1";
        String regex = "(1)(?:.|\n)*?/\\1";
        GetRegexString(str, regex);
    }

static void GetRegexString(String oldStr, String strPattern) {

        Pattern p= Pattern.compile(strPattern);

        Matcher m = p.matcher(oldStr);
        while (m.find())
            System.out.println(m.group());
    }

}

從這兩段代碼看,都需要添加命名空間,文法也非常類似。

Package(Java)<-->NameSpace(C#)

String(Java)<-->string(C#)

Pattern(Java)<-->Regex(C#)

Matcher(Java)<-->MatchCollection(C#)

java.util.regex(Java)<-->System.Text.RegularExpressions(C#)

 System.out.println(Java)<-->Console.WriteLine(C#)

 

注意:c#的String與string是唯一的一個可以大小寫混用的類,但其實string關鍵字是String類的一個別名,定義時,關鍵字一般使用string比較符合規範。(作者更正)。

在這個例子中的幾點感受:

1、開發環境Vs2010和Eclipse 3.6。共同點,巨耗記憶體,尤其是後者。易用性,前者明顯佔優。擴充性,後者遙遙領先。

編輯功能方面,Eclipse中Ctrl+1是所有程式員的最愛,它會自動提供幾個備選的參考命名空間,智能吧?

 

而vs2010也有類似的功能,並且還有一些值得稱讚之處,如Alt+豎選一塊代碼區,多好的一個功能啊。

2、協助文檔的實用性。MSDN絕對勝出一籌。不僅僅在中文化及時,而且樣本導向性較強。各位自己比較一下:
http://download-llnw.oracle.com/javase/6/docs/api/

http://msdn.microsoft.com/zh-cn/library/system.text.regularexpressions.regex.aspx

3、開發環境的部署和產生程式的部署方面,C#易用性超出一大截,而Java要麻煩一點,畢竟是多作業系統的嘛。當然,NetBeans IDE將易用性和功能的擴充性結合得比Eclipse要好一些,有點像vs環境了。

怎麼樣,對著學,是不是很輕鬆啊!一步一步來吧。
下一篇:
《Java是如何快速煮成C#的?》(一):相似的方法(2)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.