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


    打算每天花点时间把学习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环境了。

    怎么样,对着学,是不是很轻松啊!一步一步来吧。
    下一篇:
    《Java是如何快速煮成C#的?》(一):相似的方法(2)

  • 相关阅读:
    asp.net2.0 Theme and Skin
    Microsoft Exchange Server 2010 介绍
    Visual Studio 2010 Team System 动手实验室
    WCF中的消息契约
    Windows Workflow Foundation实验01——Windows Workflow Foundation 快速入门(练习二)
    C#中Brush、Color、String相互转换
    VS自动生成有参构造函数并自动依赖注入插件
    C#集合已修改:可能无法执行枚举操作
    Docker安装后启动不了,报“参考的对象类型不支持尝试的操作”
    windows下安装Docker超全图文教程
  • 原文地址:https://www.cnblogs.com/downmoon/p/1814146.html
Copyright © 2020-2023  润新知