从C ++切换到Java:关键点是什么?

时间:2010-03-22 19:56:00

标签: java c++

我是一名经验丰富的开发人员,但我的大部分OO编程经验都是使用C ++(还有一点Delphi)。我正在考虑做一些Android工作,因此是Java。

来自C ++背景,Java的哪些领域最有可能让我感到惊讶/烦恼/喜悦?

我确信这已经被问过,但我的搜索没有提出类似的问题。

当然,CW。

8 个答案:

答案 0 :(得分:8)

<强>惊讶:

  • 几乎所有东西都在堆上
  • 它可以和C ++一样快,在少数情况下甚至更快
  • 原语的自动装箱偶尔会引起头痛

烦恼:

  • 没有无符号整数类型
  • 没有任何类型的预处理程序指令
  • 没有操作员超载
  • 泛型是阉割模板

<强>喜悦:

  • 快速编译
  • 无记忆管理
  • 没有段错误
  • 大多数错误条件会导致堆栈跟踪经常查明问题
  • 枚举真的强大
  • 标准化的,支持Unicode的String类

答案 1 :(得分:7)

答案 2 :(得分:3)

请记住,在Java中,一切都是参考。它似乎很简单,但作为一名C ++开发人员,它每次都会绊倒你。

答案 3 :(得分:3)

我认为来自C ++的最大问题之一是缺少多重继承。 Java通过关注接口和对象组合来补偿(并且在许多人看来,超越)多重继承。

您将被迫对您的OO设计有不同的看法,但最终结果往往更清晰,更易于维护。

答案 4 :(得分:2)

如果您使用RAII,请在Java中忘记它。在不知道何时删除对象的情况下,这是不可能的。在编写析构函数时,请记住,在对象超出范围后,它们可以很好地执行。

答案 5 :(得分:0)

  1. 你不必关心记忆 分配和解除分配。
  2. 否 需要担心分配null 到一个对象成立后。
  3. 通过 默认是一个简单的声明 对象的值为null。 Java中的所有东西都是一个对象

答案 6 :(得分:0)

Peter Norton的Java编程指南,"Making the Transition from C/C++ to Java"章。

答案 7 :(得分:-1)

当我学习Java时,我认为用我自己的评论来更新它会很有用: -

喜悦:

  • 的Eclipse ! (与C ++ Builder相比,无论如何......)
  • 无头文件
  • 没有预处理器

惹恼:

  • 已检查的例外。当然有一个编译器标志要禁用 这些“错误”?
  • 没有RAII 。 RAII 做得多,不仅仅是 释放记忆。我的代码将会发生 充满了“终极”,我 厌恶。

随着我的学习和欣赏更多的更新......