邀月

          從.net中走來的Java愛好者
          posts - 22, comments - 10, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

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

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

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

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

          文本"1ASDF NI1221312 HK1 2222/1
          1QWW NI1232133 HK1 3333/1"
          兩 行文本,比如第1行表示旅客1的信息,第2行表示旅客2的信息,后面可能還有很多旅客信息,如何用正則表達式提取每個旅客的信息?最后結果類似于 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環境了。

          怎么樣,對著學,是不是很輕松啊!一步一步來吧。



          邀月注:本文版權由邀月和博客園(BlogJava)共同所有,轉載請注明出處。
          助人等于自助!   3w@live.cn
          主站蜘蛛池模板: 涿鹿县| 响水县| 塔城市| 启东市| 泰来县| 遂平县| 吴桥县| 镇坪县| 丹寨县| 溧水县| 铜鼓县| 江安县| 肃南| 乌恰县| 遵化市| 潞城市| 隆林| 中宁县| 和平县| 内江市| 安福县| 陈巴尔虎旗| 息烽县| 桓台县| 尚志市| 河曲县| 汶川县| 文水县| 五华县| 阜城县| 冷水江市| 棋牌| 绥宁县| 宜良县| 游戏| 昌图县| 九江市| 宜章县| 柯坪县| 林甸县| 白城市|