Java

C#

访问修饰符 public

修饰类、接口、变量、方法。

对所有类可见。

修饰类、接口、变量、方法。

对所有类可见。

  internal 无。

修饰类、接口、变量、方法。

类,接口的缺省访问修饰符。

同一个程序集的对象可见。

  protected 子类可见。 子类可见。
  private 类内部可见。

变量,方法的缺省访问修饰符

类内部可见。

  default 

类、接口、变量、方法的缺省修饰符。

同一包内可见。

无。
基本类型  

基本类型,无方法可调用。

作为局部变量时,储存与栈。作为字段时,跟随于实例。

值类型,继承object,具有ToString()等方法。

作为局部变量时,储存与栈。作为字段时,跟随于实例。

   布尔值  boolean  bool
   整形  short,int,long  short,int,long
   浮点数  float,double  float,double
 可空基本类型    例如:Integer是引用类型,Integer是int的包装类。  例如: int?其实是Nullable<int>的语法糖,而Nullable<int>依然是值类型。
   布尔值  Boolean  bool?
   整形 Short,Integer,Long  short?,int?,long?
   浮点数  Float,Double  float?,double?
   高精度数值类型  BigDecimal  decimal?
 源文件组织  导入  使用包的概念,关键字import导入 使用命名空间的概念,关键字using导入
   类文件

源文件名要和Public类名保持一致,

最多存在一个Public修饰的类,

文件名后缀是.java

没有java中的限制,

文件名后缀是.cs

 枚举  枚举

关键字enum,

引用类型,

和class差不多,可以有字段和方法,

可以添加私有构造函数

关键字enum,

值类型,

默认继承int,可以继承其他值类型

 常量 常量   关键字final修饰变量,字段,定义时赋值

关键字const修饰变量,字段,定义时赋值

关键字readonly修饰,可以在构造函数中赋值

 密封  密封  关键字final修饰方法,类,表示不可继承,不可重写  关键字sealed修饰方法,类,表示不可继承,不可重写
 属性 属性

只有字段概念,

一般情况下是要定义字段XX,方法getXX()和setXX()

C#引入属性概念,简化了操作,

只需要定义XX{get;set;}

 判断类型  判断类型  Instanceof               is
 锁  锁  Synchronized      Lock 
 接口  接口

关键字 implements,

使用注解@Override

和继承类一样,使用符号:

实现类中的方法,不需要使用override关键字,

一般命名需要用大写字母I开头

抽象类

abstract

使用注解@Override

abstract,

重写方法需要使用override关键字

  分部类

partial

可以将分布在不同文件,而在相同命名空间下,相同名称并用partial标识的类合并,多用于wpf,winform框架上。

  匿名类

如Runnable hello = new Runnable() { public void run() { System.out.println("hello"); } };

简化了定义子类的步骤。

无。类似的场景基本都是用委托的

  内部类

在new的使用上,内部类要和外部类关联起来

在new的使用上,内部类和外部类用法无区别

匿名方法 匿名方法

无。

使用delegate声明匿名方法,

delegate(int x)

{

Console.WriteLine("Anonymous Method: {0}", x);

};

虚拟方法 虚拟方法

默认都是虚拟方法

virtual标识虚拟方法,子类用override重写

静态 静态类 使用关键字static

使用关键字static,

可以有静态构造函数,

传参 引用传递

在方法参数加上ref,out,使参数按引用传递

即方法内改变参数的值,也会影响到方法外的值

  不定长参数
如int...
如params int[]
 流程控制  循环

关键字for有两种用法

for(初始化; 布尔表达式; 更新)

{

//代码语句

}

for(声明语句 : 表达式) {

//代码句子

}

 分别为for和foreach

for(初始化; 布尔表达式; 更新)

{

//代码语句

}

foreach (声明语句  in 表达式)
{
//代码句子
}

 字符  字符

String,引用类型,

需要使用方法equals比较是否相等

string,引用类型,

但用法和值类型类似,可以直接用==比较是否相等,

实现原理就是微软重载了string的==运算符

 委托  委托  无。

使用关键字Delegate声明,是存有对某个方法的引用的一种引用类型。

使用+使用委托的多播。

 泛型  泛型

<T>声明泛型,

T只能是引用类型,

可以用extends和super限制T的类型,

<?> 表示通配,

实际上是假泛型。

<T>声明泛型,

T可以是引用类型也可以是值类型

使用:表示泛型约束,如T:new()表示T必须要有无参构造函数,

真正的泛型。

 注解与特性   注解与特性

使用@声明注解,如

@Service
public class AgreementFacadeClientImpl implements AgreementFacadeClient {
....
}

C#引入attribute作为特性,如

[Export(typeof(IPayModule))]
[Export(typeof(IModule))]
public class PayModule : IModule, IPayModule

{

......

}

索引器 索引器 无。 定义了索引器,就可以使用[]取值。
运算符重载 运算符重载 无。 可以对+,-,==等内置的运行符重载,string的==比较符就是运算符重载的结果。
 集合  列表  List是接口,ArrayList才是实现类  IList是接口,List是实现类
   字典  Map  Dictionary
  集合处理

流式api,

对象.stream().filter(x->x.getCount()>0).collect(Collectors.toList())

Linq

对象.Where(x=>x.Count>0).ToList()

使用上方便很多

lambda lambda

()->{},

入参类型为函数式接口,

实质上lambda表达式会在编译阶段被转换为匿名内部类

()=>{},

入参类型为委托delegate

  方法引用
类::实例方法
类::静态方法
对象::实例方法

类.方法

扩展方法 扩展方法
无。要实现类似功能,要编写Util类。
 扩展方法是定义在静态类的静态方法,入参中的this代表使用的对象,是单继承的一种补充。
命名规范 命名规范

接口命名和类命名一样,如Module。

私有字段小写字母开头,如test。

方法命名是小写字母开头,如getSomeThing()

接口命名开头要加大写字母I,如IModule。

私有字段开头要加_,如_test。

方法命名都是单词首字母大写,如GetSomeThing()

源地址:https://www.cnblogs.com/caizl/p/9338343.html

Java和C#语法对比(转)的更多相关文章

  1. Java, C#, Swift语法对比速查表

    原文:Java, C#, Swift语法对比速查表   Java 8 C# 6 Swift 变量 类型 变量名; 类型 变量名; var 变量名 : 类型; 变量(类型推断) N/A var 变量名= ...

  2. Go vs Java vs C# 语法对比

    目录 1. 说明 2. 对比 2.1 关键字(keywords) 2.1.1 Go 2.1.2 Java 2.1.3 C# 2.1.4 小结 2.2 基本数据类型 2.2.1 Go 基本数据类型 2. ...

  3. Java和C#语法对比

    Java 有静态导入,既可以导入静态方法和字段. .NET没有 Java里package和文件夹对应关系是强制的,要改都改.而C#中namespace和文件夹可以不对应,C# 更喜欢在一个projec ...

  4. 十分钟让你明白Objective-C的语法(和Java、C++的对比)

    很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头 疼,Objective-C的代码在语法上和Java, C++有着很大的区别, ...

  5. 十分钟让你明白Objective-C的语法(和Java、C++的对比)

    很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有 ...

  6. 在Web开发方面Java跟PHp八大对比

    在Web开发方面Java跟PHp八大对比 <本文摘自百度经验,用来简单对比一下这两种语言> 一. 语言比较 PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点.语法和c语言比 ...

  7. OJ题目JAVA与C运行效率对比

    [JAVA]深深跪了,OJ题目JAVA与C运行效率对比(附带清华北大OJ内存计算的对比) 看了园友的评论之后,我也好奇清橙OJ是怎么计算内存占用的.重新测试的情况附在原文后边. ----------- ...

  8. 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)

    2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不 ...

  9. Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。

    Python3 与 C# 面向对象之-继承与多态   文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...

随机推荐

  1. selenium模拟不同浏览器的方式

    from selenium import webdriver # 使用Firefox手机浏览器 user_agent = "Mozilla/5.0 (iPad; CPU OS 12_1 li ...

  2. TaskManager任务管理工具类

    TaskManager任务管理工具类 public class TaskManager { public static AbstractTask newTask(TaskContext taskIns ...

  3. 图分析Rapids cuGraph

    图分析Rapids cuGraph 英伟达(Nvidia)建立的新的开源库可能是推进分析和使图形数据库更快的秘密要素. 在Nvidia GPU上进行并行处理. Nvidia很久以前就不再只是" ...

  4. TVM安装常用问题

    TVM安装常用问题 如何添加新的硬件后端 如果硬件后端支持LLVM,则可以通过设置正确的目标三元组来直接生成代码target. 如果目标硬件是GPU,请尝试使用cuda,opencl或vulkan后端 ...

  5. 编译ONNX模型Compile ONNX Models

    编译ONNX模型Compile ONNX Models 本文是一篇介绍如何使用Relay部署ONNX模型的说明. 首先,必须安装ONNX包. 一个快速的解决方案是安装protobuf编译器,然后 pi ...

  6. Kettle通过Http post请求webservice接口以及结果解析处理

    kettle中有两种方式请求webservice服务,一个是Web服务查询,但是这个有缺陷,无法处理复杂的需求,遇到这种情况就需要用Http post来处理了. 网上也有很多关于Http post请求 ...

  7. 重磅!GitHub官方开源新命令行工具

    近日,GitHub 发布命令列工具 (Beta) 测试版,官方表示,GitHub CLI提供了一种更简单.更无缝的方法来使用Github.这个命令行工具叫做GitHub CLI,别名gh. 现在,你就 ...

  8. [Linux]经典面试题 - 系统管理 - 备份策略

    [Linux]经典面试题 - 系统管理 - 备份策略 目录 [Linux]经典面试题 - 系统管理 - 备份策略 一.备份目录 1.1 系统目录 1.2 服务目录 二.备份策略 2.1 完整备份 2. ...

  9. C#构造函数中:this()的作用

    通俗来说,可以说是构造函数的继承 (1) :this()用来继承无参时的构造函数,例如下面代码 static void Main(string[] args) { AA aA = new AA(&qu ...

  10. vivo商城促销系统架构设计与实践-概览篇

    一.前言 随着商城业务渠道不断扩展,促销玩法不断增多,原商城v2.0架构已经无法满足不断增加的活动玩法,需要进行促销系统的独立建设,与商城解耦,提供纯粹的商城营销活动玩法支撑能力. 我们将分系列来介绍 ...