java和c#的区别

news/2024/7/8 5:11:45

原文链接:https://www.cnblogs.com/maijin/p/7919385.html
#相同点:
他们都是面向对象的语言,也就是说,它们都能实现面向对象的思想(封装,继承,多态)
#区别:

  1. c#中的命名空间是namespace类似于Java中的package(包),在Java中导入包用import而c#中用using。
  2. c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写,它有四种写法如下:
    static void Main(string args[]){}
    static int Main(string args[]){}
    static void Main(){}
    static void Main(){}
    而Java中只有一种形式:static void main(String [] args){}
  3. 数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写,还有布尔型,Java中是boolean,c#中是bool。
  4. 变量的命名:Java中可以用$符号,而c#中不可以使用。
  5. 注释:Java比c#少一种"///"的文档注释。
  6. 输出:c#有三种方式输出:
    Cosole.WriteLine();
    Cosole.WriteLine(要输出的值);
    Cosole.WriteLine(“格式字符串”,变量列表);
    前两种的用法与Java中的system.out.println()方法的用法相同,第三种方式是根据占位符输出的,比Java更方便了。
  7. 控制流语句:c#跟Java类似,还有c#中的switch如果case后面有内容必须要有break;Java可以没有break;
  8. 数组:两种语言的声明都是用new关键字的。都可以在创建数组的同时初始化如:
    int a[]={1,2,3,5,5};
    但是c#比Java多两种初始化如:
    int a[]=new int[3]{1,2,3};
    int a[]=new int[]{1,2,3};
  9. 方法中传递的参数:两种语言都使用值传递与引用传递。
    C#的引用传递的关键字是ref与out,ref侧重于修改,out侧重于输出。而Java中都以传值方式;
  10. 访问修饰符:C#中的访问修饰符与Java中的基本对应,但多出了一个internal。简而言之,C#有5种类型的可访问性,如下所示:
    public:成员可以从任何代码访问。
    protected:成员只能从派生类访问。
    internal:成员只能从同一程序集的内部访问。
    protected:成员只能从同一程序集内的派生类访问。
    private:成员只能在当前类的内部访问。
  11. 由于C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词密封。
  12. 集合:两种语言都有集合ArrayList,还有通过键访问值的Java中是HashMap而c#中是HashTable。c#比Java多泛型集合List<T>Dictionary<K, V>更容易了,无需拆箱装箱了,更安全了。
  13. 继承:Java中用关键字extends,c#只用":"就行了.调用父类的构造方法Java用super关键字,而c#用base关键字。
  14. 多态:抽象类和抽象方法两种语言都用abstract关键字。Java中另外一个类如果继承了它,实现直接重写此方法就可以了;而c#必须加上关键字override实现。C#还比Java多一种虚方法来实现多态。
  15. 接口:都用关键字interface定义,Java实现用关键字implements;c#用":"实现。在C#中,接口内的所有方法默认都是公用方法。在Java中,方法声明可以带有public修饰符(即使这并非必要),但在C#中,显式为接口的方法指定public修饰符是非法的。
  16. C#中的is操作符与Java中的instanceof操作符一样,两者都可以用来测试某个对象的实例是否属于特定的类型。在Java中没有与C#中的as操作符等价的操作符。as操作符与is操作符非常相似,但它更富有"进取心":如果类型正确的话,as操作符会尝试把被测试的对象引用转换成目标类型;否则,它把变量引用设置成null。
  17. 枚举器即enum类型(java无),把它作为一个变量值的类型使用,从而把变量可能的取值范围限制为枚举器中出现的值。
  18. 结构(Struct)与类很相似,而结构是一种值类型,它存储在栈中或者是嵌入式的,结构可以实现接口,可以象类一样拥有成员,但结构不支持继承。
  19. c#保留了指针。Unsafe。(C#使用指针不安全,最后这条有待考证)

http://www.niftyadmin.cn/n/3656300.html

相关文章

科学计算器c#正式版发布

通过这段时间的一些测试&#xff0c;科学计算器的一些Bug已经修正&#xff0c;以下是Bug修正列表1. 修正运算结果错误&#xff0c;当运算结束后&#xff0c;数栈中存在多于一个元素2. 修正actg运算符之前不能放, - , * , / , sin, cos等二目运算符3. 修正阶乘运算函数值范围太小…

基于WinXP sp2配置biztalk2004遇到的问题及解决

运行ConfigFramework后&#xff0c;一切顺利&#xff0c;但在设置即将完成的时候报错&#xff0c;错误如下Failed to enable the Single Sign-On (SSO) Service (error code 0x80070005)查了一下微软网站&#xff0c;得到以下解决方案。&#xff08;查看原文&#xff09;使用组…

Eclipse出现java was started but returned exit code 1报错并退出

#java问题笔记&#xff0c;编译器eclipse&#xff1a; ##1、问题描述 eclipse之前一直用的很正常&#xff0c;今天打开突然提示如下问题&#xff1a; ##2、解决方法&#xff1a; .1 在eclipse.ini中添加如下代码&#xff1a; -vm C:\Program Files\Java\jdk1.7.0_80\bin\jav…

VS2005 ASP.NET本地化学习笔记感受

还记得在VS2003中&#xff0c;本地化特别是全局本地化文件&#xff0c;并没有预想当中的方便。VS2003默认的本地化策略是页面级资源文件&#xff0c;但由于这种文件在 VS2003中资源管理器中的布局是跟着aspx文件的&#xff0c;使得维护很不方便&#xff0c;如果你要改一个资源&…

Linux查找进程所在目录

Linux在启动一个进程时&#xff0c;系统会在/proc下创建一个以PID命名的文件夹&#xff1a; 执行命令ll /proc/PID cwd符号链接的是进程运行目录;exe符号连接就是执行程序的绝对路径;cmdline就是程序运行时输入的命令行命令;environ记录了进程运行时的环境变量;fd目录下是进程…

java.lang.UnsupportedClassVersionError: ***** Unsupported major.minor version 52.0

##1.首先解释一下&#xff1a; stanford parser和jdk版本对应关系 J2SE 8 52, J2SE 7 51, J2SE 6.0 50, J2SE 5.0 49, JDK 1.4 48, JDK 1.3 47, JDK 1.2 46, JDK 1.1 45Unsupported major.minor version 52.0: 看到Unsupported你是不是会想到jdk高版本能兼容低版本&a…

使用ASP.NET 2.0 Profile存储用户信息[翻译]

作者: Stephen Walther原文地址&#xff1a;http://msdn.microsoft.com/asp.net/default.aspx?pull/library/en-us/dnvs05/html/UserProfiles.asp译者&#xff1a;Tony Qu (来自BluePrint翻译团队)概要&#xff1a;许多ASP.NET应用程序需要跨访问的用户属性跟踪功能&#xff0…

mysql 主从备份

#一、下载 略 #二、主服务器配置 添加mysql用户 groupadd mysql useradd -r -g mysql mysql 环境变量配置&#xff08;可省略&#xff09; 创建目录连接 ln -sv /usr/local/mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql 设置环境变量 /etc/profile export PATH$PATH:…