C#与Java区别(一)
最近学了点java,总结了一些和c#的语法区别,欢迎大家指点和补充,如下:
1、java支持跨平台,当然.net core现在也支持。
2、java中用package,c#中用namespace定义空间。
3、java方法名一般以小写字母开头,如getName(),setName()。
4、java定义字符串一般用大写开头的String,而C#一般用小写开头string,当然C#也可以用大写开头的String。
5、java中定义布尔值用boolean,而C#中用bool。
6、c#中有无符号数,java中没有,如uint。
7、c#中可以使用goto,java中不行,java可以通过定义标签名,然后使用continue或者break跳到标签处。
8、c#中有值类型,且可以自己定义值类型,如struct,java中只有基本的值类型,没有struct。
9、c#中可以有非托管代码,可以有指针,java中没有。
10、c#类中可以定义索引器,java不可以,不过可以通过put,get,set方法做到。
11、c#中可以在字符串前加@来取消转义字符,java中没有。
12、c#中可以使用??操作符当前面的表达式不为null的时候返回表达式的值,java中没有。
13、c#中有internal修饰符,java中没有。
14、两种语言都有集合ArrayList,还有通过键访问值的Java中是HashMap而c#中是HashTable。c#比Java多泛型集合List<T>与Dictionary<K,V>更容易了,无需拆箱装箱了,更安全。
15、java中继承用extends关键字,c#中用:。
16、java和c#定义接口都用interface,但实现接口java用implements,c#用:。
17、java中不可以重载运算符,java自己重载了String的+和+=,但没有重载==,在c#中==是比较值相等,而在java中==是比较引用相等,如果要在java中比较值相等,则要使用equals方法,坑爹。
18、java中字符串转大小写的方法为:toUpperCase()和toLowerCase(),这个和javascript中是一样,而c#中为ToUpper()和ToLower()。
19、java中调用方法只有值传递,而c#中可以使用ref和out来实现引用传递参数。
20、java中拼接字符串和C#中一样,用的都是StringBuilder类,但这是在jdk5.0中引入进来的,前身为StringBuffer类,StringBuffer类效率有点低,但允许采用多线程的方式执行添加或删除字符的操作。java中的StringBuilder类中没有格式化appendFormat()方法。
21、控制台输入输出,java用Scanner封装System.in,用System.out.println输出,c#中用Console.ReadLine()和Console.WriteLine()。
22、格式化输出,java中用%作为点位符,如string.format("my name is %s,i'm %d year old",name,age),
如果要按序号格式化,则这样写:string.format("my name is %1$s,i'm %2$d year old",name,age),
c#中是:string.format("my name is {0},i'm {1} year old",name,age),
当然,以#6中有更好的写法,如:$"my name is {name},i'm {age} year old",个人感觉java的太繁琐。
23、java中表示大数据值用类BigInteger和BigDecimal,而c#中用decimal,java中这两个类的对象没有重载+-*/等运算符,只能调用add()等方法来实现运算。
24、java中的枚举是引用类型,c#中的枚举是值类型。
25、java和c#中foreach区别,java如下写法:for(int element : list){},c#中foreach(int element in list){}
26、java格式化时间输出是:SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String date = formatter.format(new Date());
c#中为string date=string.Format("yyyy-MM-dd HH:mm:ss",DateTime.Now);
27、java中用final声明常量,c#中用const声明常量,但const只允许在定义时赋值,所以final更像c#中的readonly。
28、java和c#中最顶的基数都是Object。
29、java中表示时间用了Date和GregorianCalendar两个类。
30、java中字符读取和设置声明为方法,如getName()和setName(),c#中有语法糖写法,如public string Name{get;set;}
31、java中实例化另一个构造函数用法是在构造函数内调用this(name,age),c#中则在方法声明后添加,如public Student(string name,int age):this(name){}。
32、java中实例化父类构造函数用法是在构造函数内调用super(name,age),c#中则在方法声明后添加,如public Student(string name,int age):base(name){}。
33、java中用import导入包,c#中用using,c++中用#include。
34、java中重写父类的方法不用加什么关键字,直接在子类中定义实现和父类方法同名的方法即可,而c#中则在父类中用virtual关键字声明为虚方法,派生类中用override重写父类方法。
35、java用final定义一个密封不可继承类,c#中用sealed,如String类。
36、java用final定义一个不允许被重写的方法,即如果在父类的方法加final修饰,则在子类中则不允许重写该方法。
37、java中判断一个对象是否属于某类型用instanceof关键字,如if(obj instanceof Person){},而c#中用is关键字,如if(obj is Person){Person p = obj as Person;},java中没有安全转换关键字as。
38、java中Object类中获取当前类型的方法为getClass(),c#中为GetType()。
39、java重写equals方法时要重写hashCode()方法,c#重写equals方法时要重写GetHashCode()方法。
40、Java的内部类可以直接访问外部类的实例成员,C#的不行。C#的内部类等同于Java的静态内部类。
41、c#中用[特性名]定义特性,java中用@特性名。
42、c#中用lock锁定线程,java中用synchronized修饰方法。
43、c#用delegate实现委托,java中要使用接口和匿名内部类来实现,c#的更简单。
44、java中ArrayList没有泛型版本,添加和读取数据会涉及到装箱和拆箱,java中的ArrayList有泛型和非泛型版本,泛型版本对应c#中的List<T>。
未完待续,本人能力有限,欢迎拍砖和推荐,两种语言都不错,禁止互撕,都是编程,都学一下对自己也有好处。
C#与Java区别(一)的更多相关文章
- jmeter 中 Client implementation HttpClient4和java区别实践一
好吧,最近还是在折腾Jmeter,在一个post请求中,发现啃爹的竟然带有特殊字符:' 怎么办,直接将数据写入,如下: 然后在实际用post发请求时,jmeter自动给转义了,如下: xxxx=%27 ...
- eclipse Java EE 与 Java 区别
1. 综述 eclipse IDE 一般来说有三种可切换的模式 Java EE Java 调试 可直接下拉至底部看两者的比较. 2. Java Java 是带有用户界面的 基本IDE ,缺少数据库和w ...
- C++和java的区别
Java区别于C++ 表面看来两者最大的不同在于Java没有指针,或者说,Java满地都是指针.对于编程者而言Java的这种设计是安全且更易用的.说Java满地是指针的原因在于它把指针的功能隐藏了,其 ...
- java开发是否一定要使用三层结构
从开始学习java的时候,爷爷的爷爷就教导我们,要使用三层结构去开发结构明细,低耦合,高可用的项目.但是具体开发中,每新建一张表,就要新建BO,dao层,服务层,而新建这5,6个类也许仅仅只为了实现一 ...
- 白话说java gc垃圾回收
gc是java区别于其他好几门语言(c/c++)的一个代表功能(当然也有很多可以自动管理内存的语言,如所有的脚本语言,你根本不知道内存管理这回事)! 当然,之所以要把c/c++和java相比,是因为j ...
- Java字节码分析
目录 Java字节码分析 查看字节码详细内容 javap 实例分析 Java字节码分析 对于源码的效率,但从源码来看有时无法分析出准确的结果,因为不同的编译器版本可能会将相同的源码编译成不同的字节码, ...
- java中引用对比C++指针
前置知识地址:https://blog.csdn.net/wangfei8348/article/details/51383805 重点在后面的引用对比实验(测试出内存地址,我很开心哈哈哈,客观给个好 ...
- 从C++入手,探寻java的特点
java的特点 java语言建立在成熟的算法语言和坚实的面向对象理论的基础上,具有强大的应用系统设计能力,其具备的跨平台特型,其具备的跨平台特型.面向对象和可靠性.安全性等特点是它能够充分适应网络需要 ...
- Java反射原理和实际用法
背景 反射在Java中非常重要,是Java区别于其他编程语言的一大特性.Java中的AOP切面.动态代理等看起来像黑魔法一样的技术,就离不开反射.字节码等.这些技术能在不侵入原有代码的情况下,做一些增 ...
随机推荐
- WebRTC VoiceEngine使用简单Demo
Google收购的GIPS公司的音频处理技术是很牛的,现在开源了,这么好的技术应该拿来用的,这里就简单的介绍一下怎样使用VoiceEngine,欢迎大家拍砖指导. WebRTC相关的VideoEngi ...
- js控制公共模板中,不同页面中的导航选中效果-判断当前的url
用js的做法也很多.比较推荐的方法是判断当前的url,然后根据url在nav中的位置,来对nav中的某个导航增加选中样式,代码如下: <!doctype html> <html la ...
- 关于OI本地简易评测姬3.0发布的通知
本辣鸡蒟蒻的OI本地评测姬3.0出炉辣.[由wjc大蒟蒻编写,rxb神犇秒秒钟搞出编译器命令行,解决了评测姬编译一大难关并便携化,也为评测姬设计提出了宝贵的建议],目前支持pas和cpp(本辣鸡错了, ...
- Hadoop权威指南:压缩
Hadoop权威指南:压缩 [TOC] 文件压缩的两个好处: 减少储存文件所需要的磁盘空间 加速数据在网络和磁盘上的传输 压缩格式总结: 压缩格式 工具 算法 文件扩展名 是否可切分 DEFLATE ...
- Hadoop权威指南:HDFS-数据流
Hadoop权威指南:HDFS-数据流 [TOC] 剖析文件读取 客户端通过调用FileSystem对象的open()方法来打开希望读取的文件,对于HDFS来说, 这个对象是分布式文件系统的一个实例 ...
- ADO.NET 防止SQL注入
规避SQL注入 如果不规避,在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入Code值 p001' union select * from Info where '1'='1 //这样可 ...
- 第七届蓝桥杯javaB组真题解析-生日蜡烛(第二题)
题目 /* 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛. 现在算起来,他一共吹熄了236根蜡烛. 请问,他从多少岁开始过生日party的? 请填写他开始 ...
- 手动搭建apache james邮件服务器,实现邮件功能
最近一直在搞邮件这块,本来我们邮件发送是用的腾讯免费的企业邮箱,邮件功能没有问题,但是由于邮件的限制,如下: 这些限制导致我们的部分客户是收不到邮件的,哪怕付费,这样的固定频率限制也是无法解决的,可以 ...
- PHP递归遍历指定文件夹内的文件
今天早上在地铁上看了关于文件和文件夹的一章,正好最近刚搞懂linux的文件系统,觉得对文件属性的访问跟Shell命令很像,所以想晚上来实践一下. 发现php的文件夹函数好像没有提供遍历文件夹下的所有文 ...
- 8086cpu
1. 8086CPU和8088CPU内部结构基本相同,不同之处在于8088有8条外部数据总线,因此为准16位.8086有16条外部数据总线.两个CPU的软件完全兼容,程序的编制也完全相同. 2. ...