Java与C#语法异同

[align=center]Java与C#语法异同[/align]
[b]一.值类型[/b]
1.基本数据类型
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#多了一个decimal,这个decimal类型属于C#的值类型,但不是基本类型,它其实是一个结构类型,java中没有结构的概念。
2.结构
在C#中的结构使用struct关键字定义,与类的区别如下;
 类和结构都是创建对象的模板。
 都可以包含字段和方法。
 都需要用new实例化。
 类中可以初始化非常量字段值,但是结构中不可以初始化非常量字段值。
 结构是值类型,使用结构可以提高性能,类是引用类型。
 结构不支持继承
在java和C#中String都属于类类型,但是String和其它类类型不同的是String属于值传递而不是引用传递。
3. 可空值类型
空值类型是在.NET 2.0发布的时候被引入的。使用泛型(Generics),任何值类型都可以被包装成空类型,从而可以有空值。
声明一个boolean,必须赋给true或false值,  声明一个可空boolean,则还可以赋为null值, 如 bool b = null;
C#引入空值类型是为了更好的对关系数据库进行操作,在表中遇到未写内容的列是很常见的,而.net中的LINQ语言的实现目标就是在程序中直接操纵数据库。

[b]二.引用类型[/b]
所有的类类型(除了String)都是引用类型
在一个值类型转换为相应的类类型时,java和C#都有自动装箱机制,感觉C#做的更进一步,比如,我们要将一个int数值转为一个String:
Java :int num = 100; C# :int num = 100;
num.ToString(); //出错 num.ToString(); //自动装箱
Integer n = num; //自动装箱
n.toString();

按照封装原则,一个类的属性应该是私有的,在java中需要暴露一个属性通常用set/get方法,在C#中也一样,不过C#还提供了一个单独的语法来做这个工作:
Public class MyClass{
private string name;
public string Name {
get { return name; }
set { name = value}
}
}
在Java中一个类文件只能有一个公有类,且类名必须与文件名相同, 但在C#中没有这种限制,一个文件可以有多个公有类,一个类还可以分散放在多个文件中。
Java的类方法一般用小写字母开头,而C#的类方法一般用大写字母开头。

[b]三.常量[/b]
Java的常量用final来定义
C#中有两个关键字:const和readonly, readonly可以在声明时赋值也可以在构造器中赋值,const必须在声明的同时赋值;readonly可以是实例域也可以是静态域,const只能是静态域。

[b]四.枚举[/b]
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};

[b]五.运算符[/b]
Java和C#基本相同,只是Java多了一个位运算符
>>> 右移,左边空出的位以0填充

[b]六.流程控制[/b]
Java和C#基本相同,唯一的一点区别是在做遍历时的写法:
Java: for (int i : numArray) C#: foreach (int i in numArray)

[b]七.数组[/b]
Java: int[][] d; C#: int[][] d; 还有一种写法:int[,] d;

[b]八.包(C#叫命名空间)[/b]
Java:package harding.compsci.graphics;
import harding.compsci.graphics.*;
C#: namespace Harding.Compsci.Graphics {}
using Harding.Compsci.Graphics;

Java常用包:
java.lang : 这个基础的基础
java.util : 工具库
java.net : 网络通信用协议包
java.io:  输入输出管道
java.awt : 基本图型工具包
javax.swing : 高级图型工具包
java.math : 数学括展包
java.sql : 用来访问DB的包
.net常用命名空间(这里没用C#是因为.net平台的几种语言都是共用的一个framework):
System.Collections :集合相关,比如列表,队列,数组,哈希表等
System.IO : 数据流
System.Text : 包含了一些表示字符编码的类型及字符串的操作和格式化
System.Reflection :反射相关
System.Threading :多线程
System.Drawing :绘图
System.Data :数据访问
System.Net :网络通信

[b]九.继承和接口[/b]
Java和C#的继承与接口实现机制是一样的,两者都只能单继承,可以实现多接口
Java的继承用extends关键字,接口用implements 关键字,
C#中都是用: 如
public class MyClass : ParantClass, Interface1,Interface2 {}
public class MyClass extends ParantClass implements Interface1,Interface2 {}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值