C#和JAVA语法区别

< > <= >= instanceof(Java特有)
解释,当你拿到一个对象的引用时(例如参数),你可能需要判断这个引用真正指向的类。所以你需要从该类继承树的最底层开始,使用instanceof操作符判断,第一个结果为true的类即为引用真正指向的类。

在 Java 中,包是类、接口或其它包的集合,包主要用来将类组织起来成为组,从而对
类进行管理。

没有像VS里的#region,#endregion一样的代码段区域

java中声明”属性”:
//声明两个私有字段
private String name;

private int age;

//分别实现set和get方法
public void setName(String name)
{
this.name= name;
}

public String getName()
{
return this.name;
}

public void setAge(int age)
{
this.age= age;
}

C#

private string name;

private int age;

//方法一:声明访问器
public string Name
{
set { this.name = value; }
get { return this.name; }
}

public int Age
{
set { this.age = value; }
get { return this.age; }
}

java中定义和访问均要用get和set方法,可以不成对出现。

c#中是真正的属性,定义时get和set必须同时出现,房问时用.号即可。不用get,set

C#中,不用任何范围修饰符时,默认的是protect,因而不能在类外被访问.

因为JAVA规定,在一个文件中只能有一个public类,而且这个类的名称必须与文件名一模一样,这是一个区别

对于for循环,java和C#的用法是一样的,但是foreach语句在java中的形式是不同的,

public static void main(String[] args){
int[] array1={1,2,3,4,5};
for(int item:array1){
System.out.println(item)
}

}

public void Main(string[] args)
{
foreach(int item in array1){
Cosole.WriteLine(item);
}
}

C#中的==与java的==是不一样的,java的==只能比较对象的引用
比如:“1”==1.ToString(),这在C#和java中的结果就不一样了

C#还新增了四种整型,分别是sbyte,ushort,uint,ulong

Java和C#一样,都是强类型(即类型明确)语言,所以当遇到不同数据类型同时操作时,就需要进行数据类型转换。

在C#中方法名一般用pascal帕斯卡命名法,即每个单词首字母都大写,而在java中,方法名一般用camel骆驼命名法,即第一个单词首字母小写,后面的单词首字母都大写。

可以看出,访问修饰符的概念java和C#差不多,只不过C#中不仅包括以下三种修饰符,还包括更多的修饰符比如internal等。另外,有一个概念的区别需要我们注意,java中的包(即jar包),在C#中一般称为程序集(即dll)。

在java中类实现接口使用implements关键字,实现继承使用extends,而在.net中是用符号”:”来实现的

Package这个是java独有的,而import有点类似于.net中的using。

java与.net不同的是,在java中引用父类用super,而在C#中则使用base。

C#中的访问修饰符与Java中的基本对应,但多出了一个internal。internal:成员只能从同一程序集的内部访问。

由于C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词

JAVA的接口可以定义变量
interface abc
{
int num=1;
}

java多了一个>>>操作符(被移位二进制最高位无论是0或者是1,空缺位都用0补)

继承的不同。java继承类通过extends,实现接口通过implements,接口继承接口通过extends C# 都是通过":"

接口的不同

java中接口可以定义变量,C# 不可以,C# 只能是属性,方法,索引器。

数组定义的区别
int myInt[][]=new int[5][10]; JAVA
int[,] myInt=new int[5,10]; C#

 三大特性-封装

  封装:为了隐藏内部的实现细节,达到对数据安全性的保护和代码重用的效果的一种手段。

  封装无处不在,看似简单却可无限延伸。并没有一个明确的关键字来表示封装。既然是思想,是手段,所有在java中和c#中是没有语法区别的。仅仅是他们在借助访问修饰符来达到封装的效果时,两种语言的访问修饰符是不一样的。

  Java中:

  private:私有的,仅内部可以访问

  dufault:默认的,同一包的内部可以访问。

  protected:受保护的,同一包中或者是不同包的子类中可以访问。

  public:公共的,任何地方可以访问。

  特点:有明确的大小统属关系:private < default < protected < public

  C#中(引入程序集的概念。命名空间类似于java中的包,但它是逻辑分组不同于java中的包是物理分组,程序集类似于一个项目):

  private:私有的,仅内部可以访问。

  intenal:内部的,同一程序集的内部可以访问,同default。

  protected:受保护的,子类中可以访问,和java中protected是不同的,此处范围要小些,同程序集的非子类不能访问。

  proteted intenal:是intenal和protected访问范围的并集。

  public:公共的,任何地方可以访问。

  特点:没有明确的大小统属关系,intenal和protected的访问范围大小是分不清的。

Java中:使用extends表示使用继承

  重写的要求:a、方法名、返回值类型、参数相同;b、访问修饰符访问范围要大于或等于父类方法访问修饰符;

  访问父类成员:使用super关键字,可使用super(参数);在构造方法中指定调用父类一个构造方法。

三大特性-继承
  C#中:使用:表示使用继承

  重写的要求:a、方法名、返回值类型、参数、访问修饰符相同;b、父类方法被virtual修饰,子类方法被override修饰

  访问父类成功:使用base关键字,在构造方法后使用:base(参数);指定调用父类构造方法,base不能使用在静态环境中,不能调用父类静态成员。

  覆盖:使用new关键字。在c#中引入覆盖的内容,对父类的非virtual方法,也就是不可重写的方法,使用覆盖,可以覆盖掉父类的方法。对覆盖我的看法是为了弥补必须被virtual修饰的方法才能重写这个限制可能带来的问题,但是能不用就不用,覆盖意义不大,或者说是我还没有真切体会到覆盖的实际作用和使用场合,有高人可以评论解惑。

  判断是否重写成功的依据:使用父类的引用指向子类的对象,如果该方法调用的是父类方法说明重写不成功,如果调用到子类方法,说明重写成功。

Java C# .net 和 C C++ 跨平台的区别

1、windows系统WP8上主要支持 VB, C#, c/c++,

2、苹果系统ios上支持 object-c, c/c++

3、android系统上支持 java, c/c++
2、
C# .net Java的跨平台是指它们在“编译系统”生成的中间文件的字节码(byte code)文件不需要重新编译,就可以直接被“运行系统”使用;

C/C++的跨平台是指不要重新写代码,需要重新编译成“运行系统”对应的机器码(binary code)后,才能够被“运行系统”使用;

3、
ava, C#的跨平台受“虚拟机”的限制,如:

1、.net环境只在windows上有,linux(Android)和unix(ios)都不支持;

2、Java手机平台主要是Android支持,windows(WP8)和mac(ios系统)都不支持;

3、.net ,和Java虚拟机在xp系统上默认是没安装的;

4、xp系统不支持.net的高版本,如.net 4.5

c/c++不受虚拟机的限制,只要能够编译成“运行系统”的“机器码”即可,这也是为什么现在大量的跨平台应用开发采用c/c++的原因;

时间: 2024-10-27 12:16:04

C#和JAVA语法区别的相关文章

groovy与java语法区别

groovy与java语法区别 Groovy试图对Java开发人员尽可能地兼容.在设计Groovy时,遵循最不意外的原则,尤其是对于那些来自Java背景的开发人员. 这里我们列出了Java和Groovy之间的所有主要区别. 1.额外的关键字 Groovy中比Java多一些关键字,不要将它们用于变量名称等. as def in trait 2.数组初始化 在Groovy中,{...}块保留用于闭包.这意味着您无法使用以下语法创建数组字面量: // java初始化 int[] array = { 1

C、C++、Java、go的语法区别

首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别. main 函数C.C++//自由浮动的函数int main( int argc, char* argv[]){    printf( "Hello, world" );}Java// 每个函数都必须是一个类的一部分;当java <class>运行时一个特定类的主函数会被调用,java类文件名需要与main函数所在类的名字相同// (因此你可以让每个类都有一个main函数,这在写单元测试是很有用)class

C++与Java的语法区别

C++与Java的语法区别 首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别. main 函数C++//自由浮动的函数int main( int argc, char* argv[]){    printf( "Hello, world" );}Java// 每个函数都必须是一个类的一部分;当java <class>运行是一个特定类的主函数会被调用// (因此你可以让每个类都有一个main函数,这在写单元测试是很有用)class HelloWorld{   

java语法糖

语法糖 Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用了.这些语法糖虽然不会提供实质性的功能改进,但是它们或能提高性能.或能提升语法的严谨性.或能减少编码出错的机会.Java提供给了用户大量的语法糖,比如泛型.自动装箱.自动拆箱.foreach循环.变长参数.内部类.枚举类.断言(assert)等 断言(as

Java语法糖设计

语法糖 Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用了.这些语法糖虽然不会提供实质性的功能改进,但是它们或能提高性能.或能提升语法的严谨性.或能减少编码出错的机会.Java提供给了用户大量的语法糖,比如泛型.自动装箱.自动拆箱.foreach循环.变长参数.内部类.枚举类.断言(assert)等 断言(as

从Android到iOS开发——(1)、objective-c与java语法对比

从Android到iOS开发--(1).objective-c与java语法 对比 从6月开始,因为有iOS项目要做,就开始了iOS开发之旅,截止今天,已经做了2个项目,给我的感受是iOS开发整体要比Android简单,但是开发细节上两者却又同样的烦恼.那么要想开发iOS,那么到底选择objective-c or swift,我的建议是前者,后者可以在swift2.0和xcode7 以后大家去学习会比较好些.好了,不废话了,下面咱们来看下objective-c和java语法上的比较,希望能让ja

JavaScript与Java的区别

关于java和javascript的关系,我曾在一个论坛上看过这样一句话,java和javascript的关系,就好比雷锋和雷峰塔的关系,实在是经典! 因为名字的关系,总是有人误以为Javascript是Java的一个子集,或者必然会存在一些关系.但非常让大家失望,这两种编程语言除了名字开头相同之外,没有其它内在的关系! 什么是Javascript? 我在上一篇Javascript简介中已经介绍了什么是Javascript,它是运行在浏览器中的一种脚本语言,在web页面中,Javascript可

python语法区别

python语法区别: 大小写敏感 (动态语言:python)变量不用声明 p.s: 静态语言(Java)必须声明变量 语句末尾可以不打分号 可以直接进行数学计算 复制.粘贴功能失效,粘贴到别的地方的代码需要重新检查缩进是否正确 整数没有大小限制 浮点数也没有大小限制,但超出一定范围直接表示为inf(无限大) 原文地址:https://www.cnblogs.com/musecho/p/11666538.html

eclipse使用与java语法规则

eclipse的使用 1.运行点击"三角图标"或右键Run As运行2.3. java语法规范 1.括号要成对出现2.每句代码应该有分号结束3.java语法区分大小写4.一个文件只能写一个带有public的class声明,还必须和文件名一致.一个文件中不可以有多个带有public的修饰符号5.名称写的时候不要包含关键字和非法字符(字母和下划线开头可以,也可以用数字结尾)6.java代码的语法全部都是半角符号7.学会规范的写代码. 写代码的好习惯: 1.常按保存,写完一句或几句就按一次C