java和C#在用法上的区别整理

原创 2017年01月03日 20:22:21

最近在学习Java,在学习的过程中发现真的是太像了,所以就边学边整理整理学习过程中发现的Java区别于C#的地方,有什么地方漏下的,欢迎留言补充纠正,谢谢。

 

在入门时最常用的标准输出流:

C#中使用Console.WriteLine()

Java中使用System.out.println()

 

变量命名:

C#中使用字母或者下划线开头

Java中除了字母和下划线,还可以使用美元符号($)开头

 

数字表示:

Java中数字表示可以用下划线来帮助阅读,例如:2_000_000(这是Java7中新增的功能)

 

常量定义:

C#中使用const关键字来定义常量

Java中使用final关键字来修饰常量

 

注释(这块儿跟语言无关,与编译器有关):

除了正常的“//和“/**/以外,

VS中可以使用“///来为代码添加可读性更强,格式更规范的注释(在编程的时候VS还能够根据注释中的内容给出语法提示)

Eclipse中可以使用下面的结构添加注释,以便于生成Javadoc(“@后面的标签有很多,编译器有提示):

/**

 *@author someone

 …

*/

 

判断类对象所属的类:

C#中可以使用Object对象的GetType().Name来获取类名称,也可以使用is运算符来判断对象是否是某个类的实例。

Java中使用Object对象的getClass().getName()来获取类名称,也可以使用instanceof关键字来判断对象是否是类的实例,例如:

SomeClassa = new SomeClass();

boolean b = a instanceofSomeClass;      //这里instanceof前后都是空格连接这里比较特殊

 

数组:

C#Java中一维数组的用法基本相同。

对于多维数组的区别:

C#中可以有两种定义方式:

1       int[][][] arr= new int[10][][];      //这样定义只有第一维数字可以指定

arr[0] = newint[10][];                //指定第二维

arr[0][0] = newint[10];                   //第三维

Arr[0][0][0] = 100;

2       int[,,] arr =new int[10, 10, 10];

arr[0, 0, 0] = 100;

Java中多维数组的定义:

int[][][]arr = new int[10][10][10];

arr[0][0][0]= 100;

 

标号:

C#中如果不使用goto语句,只能通过逻辑判断来跳出多层循环,或者使用return语句来跳出方法体。

Java中可以使用标号来跳出或者继续执行某一层循环,标号实际上就是用来命名循环的一个名称,使用“标号名:来定义,后面接循环体。在breakcontinue后面可以接上标号名来表示跳出标号名对应的循环或者继续执行指定的循环。

 

继承:

C#中使用冒号来表示类的继承关系,例如:class Child:Base

Java中使用extends关键字来表示,例如:class Child extends Base

C#中使用base关键字来代指基类对象,调用基类成员和方法。Java中使用super关键字来代指基类。

 

访问修饰符:

C#中使用publicprotectedprivateinternal来对方法和变量的可访问范围进行控制,控制范围如下:

· public:同一程序集内或者引用该程序集的任何代码都可访问。

· protected:类、结构或该类的子类内的代码可以访问。

· private:只有类或结构内的代码可以访问。

· internal:同一程序集中的代码可以访问,其他程序集不可以。

Java中使用publicprotectedprivate和默认(不使用修饰符)来进行控制,控制范围如下:

· public:同一个包中或者引用该包的任何代码都可以访问。

· protected:同一个包种的任何类或结构或者包外的子类可以访问。

· private:只有类或结构内的代码可以访问。

· 默认:同一个包种的任何代码可以访问,包外代码不能访问。

 

final关键字:

Javafinal关键字除了用来修饰常量,还可以用来修饰方法和类。

C#中使用const关键字来修饰的函数不允许修改数据成员,也不允许调用非const的函数。

Java中使用final关键字来修饰的函数不能被子类覆盖。

C#中使用sealed关键字来定义不能被继承的类。

Java中使用final关键字来定义不能被继承的类。

 

类的组织结构:

C#中使用“命名空间”的概念来组织多个功能相同的类、结构体等,使用using关键字来引入其他的命名空间。

Java中使用“包”来组织多个类,使用import关键字来引入包中的类,可以在import引入的包路径的最后使用通配符“*来引入包中所有的public类,例如import java.util.*。包路径之间不是简单地包含关系,例如我们导入java.util.*,但是并不包括java.util.jar.*中的内容。

 

接口:

C#中继承接口和类一样,只需要用冒号将类名和接口隔开即可,如果继承多个接口,用逗号分开。C#中接口只能够包含方法,属性(getset),委托,事件以及索引器(方括号重载)。

Java中使用implements关键字来继承接口,继承多个接口的话,接口名之间用逗号分隔,接口继承接口的时候使用extends关键字。Java中接口可以包含方法和变量,变量必须声明为共有、静态或者final的,或者不使用限定符。

 

try…catch…

C#中完整的try…catch…结构包含trycatchfinally,一个catch只能捕获一种异常。

Java中完整的try…catch…结构也由trycatchfinally组成,一个catch可以捕获多种异常(使用管道字符分隔异常类),例如:

try{}catch(ExceptionType1 | ExceptionType2 e) {} finally {}

 

函数可能引发的异常:

C#中可以通过添加注释来写明可能抛出的异常(///这类注释)。

Java中可以再函数参数列表之后添加throws关键字,后面加上可能引发的异常类型(多个异常类型用逗号隔开),开指出函数可能引发的异常,例如:

publicvoid fun(int a, int b) throws ExceptionType1, ExceptionType2… {}

 

线程:

C#中使用Thread类来实例化一个线程,例如:

Thread t = new Thread(newThreadStart(SomeThreadFun));   //SomeThreadFun是一个方法名,也可以是类的成员函数

t.Start();

Java中也使用Thread类来实例化一个线程,Thread类的构造方法传入一个类的实例,类必须实现Runnable接口,例如:

publicThreadClass extends Runnable {

public void run(){   //Runnable就需要实现这一个方法

    //do something

}

}

ThreadClassa = new ThreadClass();

Threadt = new Thread(a);

t.start();

版权声明:本文为博主原创文章,未经博主允许不得转载。

c#学习笔记之五 C与C#在几种主要数据结构在上区别 数组和枚举

C和C#在设计思想上的 区别。c是扁平化的,什么东西都放在那儿可以直接用。而C#是面向对象的,所有的东西都是归成类的。我喜欢扁平化。我 还是超喜欢C语言,但是现在要在.NET上编程,只有学C#了。...
  • CGGUANG
  • CGGUANG
  • 2016年11月06日 15:27
  • 720

c#之is和as的区别用法

一、类型转换 ********************************************************************************************...
  • u012859921
  • u012859921
  • 2015年09月18日 10:20
  • 923

C#和Java的区别

最开始时微软公司将Java当做一种能解决C和C++中存在的问题的语言,并不在意,并继续维持和培训着其C和C++技术和编程人员。接下来不幸的是,正当微软尽力在Visual J++基础上拓展Java功能,...
  • juelingfeng
  • juelingfeng
  • 2014年08月07日 13:19
  • 2726

C#和Java区别

C#和Java的一些重要区别。一、功能比较二、语言规范的比较2.1、简单数据类型简单数据类型(Primitive)在C#中称为值类型,C#预定义的简单数据类型比Java多。例如,C#有unit,即无符...
  • clpig0125
  • clpig0125
  • 2016年03月01日 18:14
  • 601

at in on 在时间/地点上分别有什么用法

[以下资料收集自互联网] at, in和on表示时间时的区别 【in】我是“大姐”,因为我后面所接的都是较长时间。具体用法有:     1. 表示在较长的时间里(如周/月份/季节/年份/世纪等)...
  • lxqluo
  • lxqluo
  • 2011年12月14日 14:36
  • 19346

C#中Cookie,Session,Application的用法与区别?

1.Application 储存在服务端,没有时间限制,服务器关闭即销毁(前提是自己没写销毁方法)  2.Session 储存在服务端,客户端(浏览器)关闭即销毁(若长时间不使用 且 浏览器未关闭的情...
  • lvdou2518
  • lvdou2518
  • 2014年01月24日 19:33
  • 2078

C#中equals和==的区别和用法

Equals: 下面的语句中,x、y 和 z 表示不为 null 的对象引用。 * 除涉及浮点型的情况外,x.Equals(x) 都返回 true。 * x.Equals(y) 返回与 ...
  • jkpi888
  • jkpi888
  • 2013年11月20日 12:15
  • 2933

C#和JAVA的相同点和不同点

      C#(C-Sharp)是Microsoft的新编程语言,被誉为“C/C++家族中第一种面向组件的语言”。然而,不管它自己宣称的是什么,许多人认为C#更像是Java的一种克隆,或者是Micr...
  • rosekisser
  • rosekisser
  • 2008年05月16日 13:02
  • 3319

C#与Java的语法差异

关于C#与Java的语法差异
  • swt369
  • swt369
  • 2017年10月14日 23:56
  • 132

C#中的switch与java中的不同

 java中的switch(变量)中,变量只能为char,int而C#中的switch(变量)中,变量除了char,int还可以是string...
  • mcy478643968
  • mcy478643968
  • 2008年12月24日 10:43
  • 535
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java和C#在用法上的区别整理
举报原因:
原因补充:

(最多只允许输入30个字)