Java与C#语法比较
2012-04-04 18:05
411 查看
基本数据类型
Java有八种基本数据类型:boolean,byte,char,short,int,long,float,double
C#的数据类型会多一些,Java中的数据类型都是有符号的,而C#中还定义了相应的无符号数据类型:bool,(byte,sbyte),char,(short, ushort) ,( int, uint) , (long, ulong),float,double,decimal
结构
在C#中的结构使用struct关键字定义;Java 不支持
可空值类型
空值类型是在.NET 2.0发布的时候被引入的。使用泛型(Generics),任何值类型都可以被包装成空类型,从而可以有空值;Java 不支持
引用类型
所有的类类型(除了String)都是引用类型
在一个值类型转换为相应的类类型时,Java和C#都有自动装箱机制,感觉C#做的更进一步,比如,将一个int数值转为一个String:
Java :int num = 100; C# :int num = 100;
num.ToString(); //出错 num.ToString(); //自动装箱
常量
Java的常量用final来定义
C#中有两个关键字:const和readonly, readonly可以在声明时赋值也可以在构造函数中赋值,const必须在声明的同时赋值
枚举
赋初始值上有分别:
Java:enum Status {Start, Stop, Rewind, Forward};
enum Status { Start (20), Stop (40), Rewind (60) , Forward (80)};
C#: enum Status {Start, Stop, Rewind, Forward};
enum Status { Start = 20, Stop = 40, Rewind = 60, Forward = 80};
属性访问
在Java中需要暴露一个属性通常用set/get方法;
在C#提供了get 和set 访问器来做这个工作
文件和类
在Java中一个类文件只能有一个公有类,且类名必须与文件名相同;
但在C#中没有这种限制,一个文件可以有多个公有类,一个类还可以分散放在多个文件中(使用Partial 关键字)。
命名规范
Java的类方法一般用小写字母开头,而C#的类方法一般用大写字母开头。
运算符
Java和C#基本相同,只是Java多了一个位运算符
>>> 右移,左边空出的位以0填充
流程控制
Java和C#基本相同,唯一的一点区别是在做遍历时的写法:
Java: for (int i : numArray) C#: foreach (int i in numArray)
数组
Java: int[][] d; C#: int[][] d; 还有一种写法:int[,] d;
包(命名空间)
Java:package harding.compsci.graphics;
import harding.compsci.graphics.*;
C#: namespace Harding.Compsci.Graphics {}
using Harding.Compsci.Graphics;
继承和接口
Java和C#的继承与接口实现机制是一样的,两者都只能单继承,可以实现多接口
Java的继承用extends关键字,接口用implements 关键字,
C#中都是用: 如
public class MyClass : ParantClass, Interface1,Interface2 {}
public class MyClass extends ParantClass implements Interface1,Interface2 {}
Java常用包
Java.lang:基础
Java.util: 工具库
Java.net: 网络通信用协议包
Java.io: 输入输出管道
Java.awt : 基本图型工具包
Javax.swing : 高级图型工具包
Java.math : 数学括展包
Java.sql : 用来访问DB的包
.NET常用命名空间:
System:基础
System.Collections :集合相关,比如列表,队列,数组,哈希表等
System.IO : 数据流
System.Text : 包含了一些表示字符编码的类型及字符串的操作和格式化
System.Reflection :反射相关
System.Threading :多线程
System.Drawing :绘图
System.Data :数据访问
System.Net :网络通信
附:关键字区别
参考:
http://blog.renren.com/share/223803214/1026680561
Java有八种基本数据类型:boolean,byte,char,short,int,long,float,double
C#的数据类型会多一些,Java中的数据类型都是有符号的,而C#中还定义了相应的无符号数据类型:bool,(byte,sbyte),char,(short, ushort) ,( int, uint) , (long, ulong),float,double,decimal
结构
在C#中的结构使用struct关键字定义;Java 不支持
可空值类型
空值类型是在.NET 2.0发布的时候被引入的。使用泛型(Generics),任何值类型都可以被包装成空类型,从而可以有空值;Java 不支持
引用类型
所有的类类型(除了String)都是引用类型
在一个值类型转换为相应的类类型时,Java和C#都有自动装箱机制,感觉C#做的更进一步,比如,将一个int数值转为一个String:
Java :int num = 100; C# :int num = 100;
num.ToString(); //出错 num.ToString(); //自动装箱
常量
Java的常量用final来定义
C#中有两个关键字:const和readonly, readonly可以在声明时赋值也可以在构造函数中赋值,const必须在声明的同时赋值
枚举
赋初始值上有分别:
Java:enum Status {Start, Stop, Rewind, Forward};
enum Status { Start (20), Stop (40), Rewind (60) , Forward (80)};
C#: enum Status {Start, Stop, Rewind, Forward};
enum Status { Start = 20, Stop = 40, Rewind = 60, Forward = 80};
属性访问
在Java中需要暴露一个属性通常用set/get方法;
在C#提供了get 和set 访问器来做这个工作
文件和类
在Java中一个类文件只能有一个公有类,且类名必须与文件名相同;
但在C#中没有这种限制,一个文件可以有多个公有类,一个类还可以分散放在多个文件中(使用Partial 关键字)。
命名规范
Java的类方法一般用小写字母开头,而C#的类方法一般用大写字母开头。
运算符
Java和C#基本相同,只是Java多了一个位运算符
>>> 右移,左边空出的位以0填充
流程控制
Java和C#基本相同,唯一的一点区别是在做遍历时的写法:
Java: for (int i : numArray) C#: foreach (int i in numArray)
数组
Java: int[][] d; C#: int[][] d; 还有一种写法:int[,] d;
包(命名空间)
Java:package harding.compsci.graphics;
import harding.compsci.graphics.*;
C#: namespace Harding.Compsci.Graphics {}
using Harding.Compsci.Graphics;
继承和接口
Java和C#的继承与接口实现机制是一样的,两者都只能单继承,可以实现多接口
Java的继承用extends关键字,接口用implements 关键字,
C#中都是用: 如
public class MyClass : ParantClass, Interface1,Interface2 {}
public class MyClass extends ParantClass implements Interface1,Interface2 {}
Java常用包
Java.lang:基础
Java.util: 工具库
Java.net: 网络通信用协议包
Java.io: 输入输出管道
Java.awt : 基本图型工具包
Javax.swing : 高级图型工具包
Java.math : 数学括展包
Java.sql : 用来访问DB的包
.NET常用命名空间:
System:基础
System.Collections :集合相关,比如列表,队列,数组,哈希表等
System.IO : 数据流
System.Text : 包含了一些表示字符编码的类型及字符串的操作和格式化
System.Reflection :反射相关
System.Threading :多线程
System.Drawing :绘图
System.Data :数据访问
System.Net :网络通信
附:关键字区别
c# | Java | c# | Java | c# | Java | c# | Java |
abstract | abstract | extern | native | operator | N/A | throw | throw |
as | N/A | false | false | out | N/A | true | true |
base | super | finally | finally | override | N/A | try | try |
bool | boolean | fixed | N/A | params | ... | typeof | [b]N/A |
break | break | float | float | partial | N/A | uint | N/A |
byte | N/A | for | for | private | private | ulong | N/A |
case | case | foreach | for | protected | N/A | unchecked | N/A |
catch | catch | get | N/A | public | public | unsafe | N/A |
char | char | goto | goto | readonly | N/A | ushort | N/A |
checked | N/A | if | if | ref | N/A | using | import |
class | class | implicit | N/A | return | return | value | N/A |
const | const | in | N/A | sbyte | byte | virtual | N/A |
continue | continue | int | int | sealed | final | void | void |
decimal | N/A | interface | interface | set | N/A | volatile | volatile |
default | default | internal | protected | short | short | where | extends |
delegate | N/A | is | instanceof | sizeof | N/A | while | while |
do | do | lock | synchronized | stackalloc | N/A | yield | N/A |
double | double | long | long | static | static | : | extends |
else | else | namespace | package | string | N/A | : | implements |
enum | N/A | new | new | struct | N/A | N/A | strictfp |
event | N/A | null | null | switch | switch | N/A | throws |
explicit | N/A | object | N/A | this | this | N/A | transient |
http://blog.renren.com/share/223803214/1026680561
相关文章推荐
- java和C#语法比较
- [C#] C#与JAVA的一些语法比较
- [导入]对于adapter模式的类示配模式的java和c#的语法比较
- C# ,java语法比较
- C#与Java基础语法初比较
- C#与java语法简要比较
- 【JAVA与C#比较】数据类型
- VB.NET and C# 语法比较手册
- JAVA反射与C#反射之比较
- VB.Net与C# 的语法比较
- ASP.NET基础教程-C#与JAVA的比较
- Java与C#语法不同点(C#转Java随笔-持续更新)
- 【JAVA与C#比较】常量和运算符
- J2EE vs. NET, Java vs. C#:比较公正的评价
- Atitit. 委托的本质 c#.net java php的比较
- 比较java和C++的面向对象语法
- VB.NET and C# Comparison(VB.NET and C# 语法比较)
- Java和C#在面向对象上语法的区别
- C#与Java的比较(转一)
- 【JAVA与C#比较】XML操作