文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>从C#角度理解Java(一):相似的方法

从C#角度理解Java(一):相似的方法

时间:2010-08-31  来源:邀月

相比而言,C#是后生,它吸收了Java的大部分精华,但两者还是有一些细微差别,这里是邀月的一些断断续续的Java学习笔记。希望与CSharp转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";
            GetRegexStruing(str, regex);
            Console.ReadKey();
        }
      static void GetRegexStruing(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";
        GetRegexStruing(str, regex);
    }
static void GetRegexStruing(String oldStr, String strPattern) {

        Pattern p= Pattern.compile(strPattern);

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

}

从这两段代码看,都需要添加命名空间,语法也非常类似。只是c#的String与string是唯一的一个可以大小写混用的类,不过建议还是用string才比较符合规范。

在这个例子中的几点感受:

1、开发环境Vs2010和Eclipse 3.6。共同点,巨耗内存,尤其是后者。

编辑功能方面,Eclipse提供的命名空间智能提示是vs2010无法比拟的。在vs2010中,我引用Regex,而没有导入它的命名空间,它就赖在那儿跟我死磕了。而在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要麻烦一点,毕竟是多操作系统的嘛。

怎么样,对着学,是不是很轻松啊!一步一步来吧。

排行榜 更多 +
毒药轮盘手机版下载

毒药轮盘手机版下载

休闲益智 下载
剑侠情缘零b服手游下载

剑侠情缘零b服手游下载

角色扮演 下载
惊魂动物园游戏手机版下载

惊魂动物园游戏手机版下载

冒险解谜 下载