我已经从开放大学开始了一个模块,在那里我将通过学习和使用Java学习OO概念。 作为个人文档以及对所有人的兴趣,我决定将自己的旅程记录下来。
在开始之前,我在过去的四年左右的时间里一直专门从事C#的工作,首先是作为一名自动化测试人员,然后是一名软件工程师,因此我熟悉OO的原理和概念。 尽管我承认我的理论缺乏,因为我没有去上大学,也没有学习过我现在所学的任何CS课程。 我曾经使用过其他语言,但是Java并不是我真正接触过的语言,但是与c#如此相似,我听说它谈论了很多次,因此我至少了解了学习它时会遇到的一些差异。
这是我上这门课程时的第一个发现。
我想要我的IDE
大学使用的工具是BlueJ。 虽然我可以看到其对于学习OO和Java的人的吸引力,但Visual Studio和VS Code却是一场真正的战斗。 我的智能感应到哪里去了!感觉就像是退后一步,并且感觉与现实世界无关。
收藏很难!
好吧,我承认也许Linq把我宠坏了,但是使用集合似乎是不必要的困难。似乎需要大量的代码来创建一个新列表并遍历它。也许这只是我一个人的想法,我希望几周后我能对此一笑置之,并在评论中高谈阔论这实际上有多简单。
我的入口在哪里
当我想创建一个hello world console应用程序时遇到了这个问题。 快速搜索后,发现这只是方法
public static void main() {
...
}
这可以在任何课堂上进行。我想这可能是有利的,也可能是不利的。
始终输入
我是c#中var的大用户,几乎是任何通用的关键字,都能使编译器确定类型。但是在Java中,您必须每次都设置Type。这并不是什么大事,在某些情况下,确保变量是您所期望的类型是有益的
String name = "John Doe";
大写的String和Boolean,小写的int吗?
从我看来能够收集的类型彼此具有不同的大小写。 在C#中几乎全部为小写 C#
string Name;
int Age;
boolean IsVerified;
但是在Java中
String name;
int age;
Boolean isVerified
更多套管问题
我在使用JS和TS时就习惯了这一点,但无论如何都知道它,但是方法名和实例变量(在c#中称为属性)以小写开头
private String name;
public void setName(String name){
this.name = name;
}
...
显式获取器和设置器
令我震惊的是,我被告知必须为我要公开和操作的每个实例变量创建并公开getter和setters方法。 我非常喜欢C#的处理方式
C#
public string Name { get; set; }
Java
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name = name
}
总结一下
似乎我在抱怨Java,也许我是c#的狂热分子,但您的期望是什么,这就是我的世界,并且已经存在了几年,因此需要进行一些调整。 我希望在我深入研究Java领域时继续记录自己的学习情况,毕竟这是有原因的,因为它仍然如此受欢迎!