java与C#的简单比较
来源:互联网 发布:为什么网络ip地址冲突 编辑:程序博客网 时间:2024/06/05 04:18
刚刚看完java视频,做了个简单图:
新知识不多,大多是与以往知识的相互碰撞,一下做了java与C#的简单比较:
Java
C#
主类名与文件名
必须一致
可以不一致
命名空间导入方式
import关键字
using关键字
常量
final关键字
Const关键字
基本数据类型
C#中有无符号数,Java没有。
C#中有值类型,且可自己定义值类型的结构体(struct)。
Java中的基本类型(或叫基元类型)即为值类型,
C#中的值类型(包括所有基本类型)间接继承自Object,
C#中int等同于System.Int32,是值类型;
Java中int是基本类型,是值类型,
Java中的int与Integer的对应在C#
其他基本类型与之类似。
初始化
调用基类构造函数:
SubClass():base(){}
调用基类构造函数:
SubClass(){
super();
}
Switch语句
(1)只能处理int类型
(2)每个case块后写break语句,不然会有穿透问题
(1)还可以处理字符变量
(2)要求每一个case块或者在块的末尾提供一个break语句,或者用goto转到switch内的其他case标签。
声明数组
灵活。
Int[] x={1,2,3};//正确
Int x[]={1,2,3};//正确
Int[] x={1,2,3};//正确
Int x[]={1,2,3};//错误
面向对象
完全面向对象
相同
继承
类的单继承;
可以实现多个接口;
相同
多态
支持某些形式的多态性机制
相同
重写
默认方法都可被重写,
被重写的方法必须添加virtual关键字声明为虚方法,
访问修饰符
4类
Public:成员可以从任何代码访问;
Protected:成员只能从派生类访问;
Default:
内部类
内部类可以直接访问外部类的实例成员
C#的内部类不可以直接访问外部类的实例成员;C#的内部类等同于java的静态内部类
最终类
final关键字定义的类不能再被派生
Seale关键字定义的类不能再被派生
接口
(1)关键字:interface;
(2)接口内允许有内部类、静态字段等;
(1)关键字:interface;
(2)接口内不允许有内部类、静态字段等;
内存管理
由运行时环境管理,使用垃圾收集器
由运行时环境管理,使用垃圾收集器
指针
完全不支持。代之以引用
支持,你只在很少使用的非安全模式下才支持。通常以引用取代指针
泛型
Java中泛型实现使用的擦除机制,
Java的泛型不支持值类型(使用的话会被自动包装成引用类型)
C#的泛型在类型参数传入类型后会产生一个新类型(
参数引用传递
只有值传递
使用关键字ref:迫使值参数通过引用传递给方法;
使用关键字out: 在参数未初始化的情况下,在一个函数中输出多个值;
使用关键字params:自动把参数转为数组;
总结:所有高级语言之间都是相通的,只是一些简单语法上的不同、专业术语不同、再加上某些部分运行机制不同,其实也没有什么。做好比较,减少学习知识量,轻松学习。
- java与C#的简单比较
- C#与Java的简单比较
- java与C#的简单比较
- C#与Java的比较
- java与C#的比较
- C#与Java的比较
- JAVA与C#的比较
- C#与JAVA的比较
- C#与java的比较
- C#与Java的比较
- C#与Java的比较
- C#与Java的比较
- java与C#的比较
- C#与Java的比较
- C# 与java的比较
- C# 与 java 的比较:
- JAVA与C#比较
- Java与C# 比较
- 移动建站工具(二):分秒钟DIY一个移动网站
- 黑马程序员Java基础__函数的应用及重载
- c++中一个类所占用的空间
- 如何实现科技论文里面的算法
- poj 3266 Cow School 分数规划
- java与C#的简单比较
- response.sendRedirect("")和request.getRequestDispatcher("").forward(req,resp);
- Git详解之二:Git基础
- 九九乘法表的各种输出形式(c++)
- 黑马程序员-GUI编程总结
- pthread_join(pth, NULL);
- Monads in Scala Part Two: More Maybes
- 应用程序端口分类
- ubuntu添加开机启动项