前言
java version:8
C# version:6
语言特性
[同]函数作为参数
C#:委托,delegate
Java:函数式接口
相同点:实现机制相同,都可以使用lambda
[同]数目可变的参数
C#
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
java
public static void print(String... args){
for(String temp:args)
System.out.println(temp);
}
相同点:语法糖,实质传入都是数组
思路
工具类
C#:工具方法都在类本身,比如string类包含很多操作字符串的方法.比如截取,替换.
JAVA:工具类通常在以复数结尾的类当中,比如String专注于字符串本身的存储,字符串常用的工具都在Strings类中.
发展背景
C#:闭源语言(不成熟的.net core暂且不提),只有一家开发,因此语言特性,库的开发没有那么多掣肘.库的风格非常统一.另外由于都是自家的产品,IDE和语言可以紧密结合,非常好用.Visual Stuido能被称为宇宙第一IDE也有这方面的便利.C#开发,最好的库基本是微软出的.由此学习成本也低.最为方便的是文档特别统一齐全.大大方便了开发.
JAVA:典型的开源,只要开心,就可以扯出一个分支来.连JDK都可以有一个纯开源的openJDK,可见有多不靠谱.在特性上,JAVA加入新特性,难免面临人多嘴杂的局面.因此语言特性上落后若干年.相比于C#一开始就有委托(可讲函数作为参数),java一直坚守纯面向对象.直到java8才加入函数接口.另一个典型例子是JAVA8新加入的LocalDateTime,大大解放了时间的使用,而之前的时间类型真是让人苦不堪言.java的基本库也是典型的人多嘴杂,同样功能的类能有好几个.但是开源也有开源的好处.可以及时随着市场的变化而演进.java的设计者估计也不会预料到java会成为用途最广泛的后端语言,这和java本身开源的特性是分不开的.众多IT英雄都来给java添砖加瓦.反观C#,虽然在语言特性上一骑绝尘,但是生态上实在差劲.
变量命名习惯
基本都用驼峰式,在类级别以上,首字母大写.对于变量,首字母小写.
但是在方法,属性级别,C#是首字母大写,JAVA是首字母小写.
C#
JAVA
命名空间
MyExample
myexample
类级
MyExample
MyExample
方法,属性级
MyExample
myExample
变量级
myExample
myExample