我是魔兽世界玩家,很喜欢逛NGA-一个著名的魔兽世界论坛!
情感板块里面会有一个现象,譬如有个帖子的Title是“他喜欢上了嫂子,他该怎么办?”、“他发现自己的老婆行踪可疑怎么办?”这个时候,回帖下面总会出现一个回复:“兄弟,勇敢些!”好吧,其实是看了一个视频,感到很有同感,就分享给大家。
视频的内容,就是一位老哥在IDEA里面敲代码,敲着敲着,他就破防了,开始擦起来眼泪。紧接着,他越敲越伤心,哭泣的声音越来越大。。其实,看到这个场景,我的第一感觉就是好笑,因为他的那些笑点我都GET了,笑C#语言的癫狂,笑Java语言的规范,连他在想什么我似乎都能从屏幕里面感觉出来,瞬间心领神会的感觉还是很棒的。
另外一个方面,想到了曾经的自己,想到了自己从C#到Java转换的那么平静,感觉自己还是挺棒的,曾经走完了那样一段旅程,进行了思维的转换,记住了两套语法,欣慰!当然了,这一段“搞笑”流的视频,在B站上面可以找到,请各位前去探寻!我们今天来简短探讨一下视频里面的那些“点”,主要是C#方面的内容,希望能让搞Java的哥们了解一些c#的语法特点,也让从C#转到Java的童靴有个思想装备!物体的属性,譬如苹果的重量,Apple的Weight;
public int Weight {get;set}
也就是说“在声明的后面加一个{get;set;}”就会自动产生getWeight和setWeight方法。
在Java里面,则需要自己全部书写。
public int getWeight(){
return this.Weight;
}
public void setWeight(int weight){
this.weight=weight;
}
Java的method一般都是以小写字符开头,而C#则喜欢以大写字母开头,这也是一个不同之处。如同视频里面的GetWeight、SetWeight就是典型的C#写法,java则是getWeight、setWeight。在C#里面,提供了List类型的初始化语句,就是可以直接把内容传进List的构造函数里面。
List<String> names = new List<string>()
{
"Bob","Alice","Apple"
};
相同情况下,Java则需要new之后再次添加
ArrayList<String> names=new ArrayList<>();
names.add("Bob");
names.add("Alice");
names.add("Apple");
C#的语法更加方便,更加符合人的思维,直观一些。Java则是中规中矩的“程序式”写法。从初始化方法来讲,java的<>里面省略了类型,虽然很方便,但不统一。
视频里面还出现了一个“我的Linq呢?”字幕,这是c#的一个神器,对应于Java的“stream”。
上面的names里面,我们想找以“A”开头的人名,用linq可以这样写:
var a_names=from n in names
where n.StartsWith("A")
select n;
是的,有点类似于SQL的语法,非常方便。如果是一个经常crud的程序员,感觉会更加熟悉了。List<String> a_names= names.stream()
.filter(t-> t.startsWith("A"))
.collect(Collectors.toList());
其实,从需要了解的程度来讲,无论是Linq还是Stream,都属于“高级操作”范畴,还是需要一些了解才能使用。
作为一个“整活”视频,这个Up主应该是很会搞笑的!从C#转到Java,语法是一方面,类库也是一个大问题。转换过去,就和一个人离开家乡,去一个新的地方生活一样!难怪他哭泣的样子,好像是一个刚离开家的大学生思念家人一样!