java与C#的简单比较
刚刚看完java视频,做了个简单图:
新知识不多,大多是与以往知识的相互碰撞,一下做了java与C#的简单比较:
|
|
Java |
C# |
|
主类名与文件名 |
必须一致 |
可以不一致 |
|
命名空间导入方式 |
import关键字 |
using关键字 |
|
常量 |
final关键字 |
Const关键字 |
|
基本数据类型 |
C#中有无符号数,Java没有。 C#中有值类型,且可自己定义值类型的结构体(struct)。 C#中int等同于System.Int32,是值类型;bool等同于System.Boolean;等。 Java中的int与Integer的对应在C#中类似int和Nullable<int>的对应,它们的后者都是前者的包装,且后者可以等于null。但Nullable<int>实际上仍然是值类型的(所以仍然很轻量级),所以从内存上讲C#中int和Object的对应更接近Java的对应一些。C#中Nullable<int>到int的转换必须显式进行,因为Nullable<int>中的值为null时会引发运行时异常。 |
|
|
初始化 |
调用基类构造函数: 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};//错误 |
|
面向对象 |
完全面向对象 |
相同 |
|
继承 |
类的单继承; 可以实现多个接口; |
相同 |
|
多态 |
支持某些形式的多态性机制 |
相同 |
|
重写 |
默认方法都可被重写,派生类和子类方法签名一样时被认为是重写。要声明不能被重写的方法需在方法前加final关键字。重写时可以在方法前添加标注(即C#中的定制特性)@Override,这样一旦此方法找不到被重写的方法时编译器会报错,以防止拼写错误。 |
被重写的方法必须添加virtual关键字声明为虚方法,派生类重写子类方法时添加override关键字。 |
|
访问修饰符 |
4类 Public:成员可以从任何代码访问; Protected:成员只能从派生类访问; Default: |
|
|
内部类 |
内部类可以直接访问外部类的实例成员 |
C#的内部类不可以直接访问外部类的实例成员;C#的内部类等同于java的静态内部类 |
|
最终类 |
final关键字定义的类不能再被派生 |
Seale关键字定义的类不能再被派生 |
|
接口 |
(1)关键字:interface; (2)接口内允许有内部类、静态字段等; |
(1)关键字:interface; (2)接口内不允许有内部类、静态字段等; |
|
内存管理 |
由运行时环境管理,使用垃圾收集器 |
由运行时环境管理,使用垃圾收集器 |
|
指针 |
支持,你只在很少使用的非安全模式下才支持。通常以引用取代指针 |
完全不支持。代之以引用 |
|
泛型 |
Java中泛型实现使用的擦除机制,为类型参数传入类型并不导致新类型出现,即传入了类型参数后在运行时仍然完全不知道类型参数的具体类型,它的目的是为了兼容非泛型(所以可以在泛型和非泛型之间隐式转换,会有编译警告但不会有编译错误,这当然其实并不安全);这同时衍生了一系列问题:不能定义泛型类型参数的数组如T[],不能通过new T()的方式实例化泛型,等。 |
C#的泛型在类型参数传入类型后会产生一个新类型(虽然CLR的优化机制会使引用类型共享同样的代码),可以在运行时得到类型参数的类型信息。可以定义泛型数组,可以添加约束使其可以new。C#的泛型可以使用值类型(不会被装箱)。 |
|
参数引用传递 |
只有值传递 |
使用关键字ref:迫使值参数通过引用传递给方法; 使用关键字out: 在参数未初始化的情况下,在一个函数中输出多个值; 使用关键字params:自动把参数转为数组; |
|
|
||
总结:所有高级语言之间都是相通的,只是一些简单语法上的不同、专业术语不同、再加上某些部分运行机制不同,其实也没有什么。做好比较,减少学习知识量,轻松学习。
java与C#的简单比较的更多相关文章
- 计算机网络(13)-----java nio手动实现简单的http服务器
java nio手动实现简单的http服务器 需求分析 最近在学习HTTP协议,还是希望动手去做一做,所以就自己实现了一个http服务器,主要功能是将http请求封装httpRequest,通过解析 ...
- 模拟java.util.Collection一些简单的用法
/* 需求:模拟java.util.Collection一些简单的用法! 注意:java虚拟机中并没有泛型类型的对象.泛型是通过编译器执行一个被称为类型擦除的前段转换来实现的. 1)用泛型的原生类型替 ...
- Rsession让Java调用R更简单
Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒. ...
- 多线程(三) java中线程的简单使用
java中,启动线程通常是通过Thread或其子类通过调用start()方法启动. 常见使用线程有两种:实现Runnable接口和继承Thread.而继承Thread亦或使用TimerTask其底层依 ...
- Java数据结构和算法 - 简单排序
Q: 冒泡排序? A: 1) 比较相邻的元素.如果第一个比第二个大,就交换它们两个; 2) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数; 3) 针 ...
- JAVA课程设计——一个简单的教务人事管理系统
大三上学期期末总结,没错,上学期,写在下学期新学期开始,哈哈哈. 上学期学习了面向对象程序设计,课程设计的题目使用JAVA语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和 ...
- java web 项目中 简单定时器实现 Timer
java web 项目中 简单定时器实现 Timer 标签: Java定时器 2016-01-14 17:28 7070人阅读 评论(0) 收藏 举报 分类: JAVA(24) 版权声明:本文为博 ...
- 使用JAVA实现的一个简单IOC注入实例
https://blog.csdn.net/echoshinian100/article/details/77977823 欲登高而望远,勿筑台于流沙 RSS订阅 原 使用JAVA实现的一个简单IOC ...
- Java通过JDBC进行简单的增删改查(以MySQL为例)
Java通过JDBC进行简单的增删改查(以MySQL为例) 目录: 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JD ...
随机推荐
- referer htttp headers 统计信息 防盗链
HTTP headers是HTTP请求和相应的核心模块,它承载了关于客户端浏览器.请求页面.服务器等相关信息.Referer是HTTP头中的一个属性,告诉服务器我是从哪个页面链接过来的,所携带的信息用 ...
- BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路
1726: [Usaco2006 Nov]Roadblocks第二短路 Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她 ...
- MyEclipse10+Jdk1.7+OSGI+MySql实现CRUD数据库
开发环境: Windows2008R2 64位置+MyEclipse10+jdk1.7.0_67+MySql5.5 软件安装:myeclipse-10.0-offline-installer-wind ...
- net core开发环境准备
net core开发环境准备 1.1 安装sdk和运行时 浏览器打开网址https://www.microsoft.com/net/download, 到.Net Core下载页面. 根据操作系统, ...
- 利用Tomcat的用户名和密码构建“永久”后门
从本案例中可以学到: (1)关于JSP的一些基础知识 (2)利用Tomcat的用户名和密码来构建后门 本文首先要感谢<黑客手册>“非安全.后生”编辑为本为提供了帮助,还要感谢网友“伤心的鱼 ...
- Python 2.7 学习笔记 字典(map)的使用
python中的字典,就是通常说的map,即 key/value集合的数据结构. 本文来介绍下在python下如何使用字典. 对于map这种数据结构能干什么,我们就不说了,这是一个常见的数据结构,我们 ...
- Jekyll学习:基本使用方法
Jekyll是一个简单的博客.静态网站生成工具.利用它可以快速的搭建一个网站.并且完全免费的在 GitHub 上发布网站 — 自定义域名. 一.环境搭建 apt-get install jekyll ...
- oschina数据库相关
数据库相关 110数据库服务器 233NoSQL数据库 18MySQL衍生版 6开源XML数据库 311数据库管理工具 117数据库调整和优化 274数据库驱动程序 41数据库建模
- 进入MFC讲坛的前言(一)
在这里,我想谈谈自己学习MFC的一些体会.我是从1997年才开始在Window下编写程序的.在这之前,我编写过一些DOS程序,包括一个简单的全屏幕编辑器和一个带函数的表达式解释器,都是一些小的程序.W ...
- BZOJ 1072 [SCOI2007]安排perm 如压力DP
意甲冠军:联系 方法:状压DP? 题解:这题事实上没啥好写的.不算非常难,推一推就能搞出来. 首先看到这个问题,对于被d整除这个条件,非常easy就想到是取余数为0,所以想到可能状态中刚開始含有取余数 ...