了解C++后,学习Java需要多长时间?

23

我是一名熟练的C++开发者。我理解并使用多态、模板、STL,对流的工作原理也有扎实的掌握。就所有实际目的而言,我几乎没有进行过Java开发。我相信你们中的一些人曾经处于类似的情况,当你们需要学习Java时,你们需要多长时间成为一名熟练的Java程序员呢?

17个回答

24

我认为学习Java并不难。事实上,我曾经是一名全职C++开发人员,在某个时候开始编写Java代码。但问题是我不记得曾经学习过Java,所以我猜我是边学边做的。现在我已经全职从事Java开发很长时间了。

如果您对C++非常熟悉,您可能需要阅读一份主要区别列表(例如,所有内容都是动态绑定),然后在环境上开始练习(只需下载Eclipse)。小差异是您需要适应的主要内容。

现在Java支持泛型,其中一个主要的转换障碍已经不存在了。尽管Java不支持多重继承,但如果您习惯使用接口,这也不是什么大问题。实际上,使用接口而不是带有纯虚函数(PVFs)的抽象类可以提高可读性。

对我来说,Java是C ++的一个友好且放松的沙盒版本。我不必担心通用保护故障(GPFs),我不必担心内存泄漏,我不必担心指针的问题。然而,不要让这使您困惑,仍然有很多机会犯错误,并且有时难以检测。

只需要尝试一下。如果您有直觉,这应该不是什么问题。


4
PVF = 纯虚函数。GPF = 全局保护符号。 - Özgür
1
@Comptrol:Windows 上的一般保护错误。 - Uri

9

我走了一条不同的路线。先学Java,然后再学C和C++。在我个人的经验中,学习Java比学习C/C++(特别是C++)容易得多。

许多方面来看,Java 的设计目标是将 C++ 中未定义和过于复杂的部分删除或简化。在我看来,它实现了这个目标,因此它是一种非常易于学习和使用的语言。尤其是对于熟悉 C++ 的人来说。

实际学习所需的时间非常依赖于学习者本身。但是,我认为可以肯定地说,在 Java 上达到熟练水平所需的时间要比在 C++ 上少。


如果你要对一个主观问题的答案进行负评,至少应该留下一条评论说明原因。 - JaredPar
听听。无论问题主观与否,一个有信息量的回答都应该得到点赞或者不变。 - David Thomas

9

不应该太难。 语法和类应该很容易掌握。 有一些区别,但没有太大挑战。

最困难的部分更多地是关于学习软件包,因为这些将是不同的。 内置的Java类和函数,然后以实际方式使用Java,您需要学习J2EE或您实际使用它的任何内容。 后者可能会比语言本身花费更多时间。


包(package)是学习Java最难理解的方面之一。+1 - ojblass

6
如果您已经是一名熟练的程序员(尤其是C++),学习Java并不需要很长时间。我建议想要学习Java的人按顺序阅读以下书籍: 鉴于您的经验,您可能会发现在Head First Java中进展很快。因此,我建议您先从图书馆借阅并浏览它,然后再转向Thinking in Java。
此外,请查看Sun的Java教程

6

C++ 转 Java:1周。 Java 转 C++:1个月。


4
正如Tom Hawtin所说,关键问题在于你如何定义“能力”。
你可以很容易地掌握语言,但是需要学习习惯用语和库。而且您在工作领域(例如嵌入式或企业)和解决相同问题的不同库之间会有相当多的差异。以下是一些示例:
1. 在企业应用程序中,通常使用数据库。这里有:
- 纯JDBC - SQL映射器(iBatis),是对冗长和重复的JDBC的包装器 - ORM解决方案(Hibernate),具有自己的哲学
2. 有两个竞争平台可供选择:
- Swing(JRE的一部分) - SWT / JFace,来自Eclispe基金会,由IBM发起,具有本地UI支持。
3. Web框架太多了,无法一一列举,它们有不同的UI表示方式、配置、文件夹/包结构等。
4. DI(依赖注入)在企业应用程序中很常见,可以通过第三方框架(如Spring)或作为EJB3标准的一部分实现。但是,在嵌入式设置中从未使用过。
公正地说,这只是冰山一角。

3
回到1995年我学习Java时,大约需要半天时间来熟悉工具和基本思想,一两天时间来学习语言,一周时间来理解较为晦涩的语言部分(当时较少),一个月时间来掌握库(当时库的数量远不如现在)。
现在,我猜测工具和基本语言将需要同样的时间,对于较为晦涩的语言部分,可能需要两周到一个月的时间(取决于你接触到的内容和时间)。基本库可能需要一个月到两个月的时间(如java.langjava.util等)。剩余的类库则需要6个月到永远的时间,这取决于你需要学什么以及它们更新的频率 :-)

1

我会C++,曾经不得不使用Java并在两周内掌握了它。当然有一些惊喜,但很容易。


1
对我来说也是一样的,两周后我就可以运行了! - MissT

1

我有 C++ 的背景。学习 Java 只花了我几天时间 - 这门语言看起来真的很简单 - 至少是基础部分。我仍然向我的 Java 大师请教 - 经常使用谷歌搜索,但通常只需要探索 API 和标准库。Java 有一些烦人之处,但大多数都可以轻松快速地解决。

我曾经被推荐过《Thinking in Java》(有免费电子书),但从未坚持阅读完整本书。我在 Java 中没有编写非常复杂的代码,并且我的技能足以胜任。

话虽如此,拥有更好的语言正式知识肯定是有好处的。目前我正在考虑学习SCJP,这似乎是一种明智的学习方式,而且一旦通过,您将获得广泛认可的编程证书(我听说它并不值钱,但还是可能是一种动力...)。

你也可以尝试Java黑带 - 里面的答案经常让我惊讶。在参加了几次测试之后,我开始怀疑我的程序是如何编译通过的,这表明我可能不是最有能力的Java程序员 :)


1

你如何定义“能干”?对我来说,大多数职业(指他们为了赚钱而从事此行业)Java程序员都无法达到“能干”的水平。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接