在学习Android之前,我应该先学习Java吗?

27

我应该在学习Android之前先学习Java,还是可以同时进行?什么是最好的方法?


如果您进入以前的问题,您可以“勾选”最有帮助的答案。有些人会对那些不费心这样做的人感到不满。个人而言,我并不觉得这是什么大不了的事情,但是我们就是这样... - Jon Skeet
3
好的,我会尽力进行翻译。以下是需要翻译的内容:类似问题:https://dev59.com/7E7Sa4cB1Zd3GeqP1z_v和https://dev59.com/Sk7Sa4cB1Zd3GeqP0Avn在尝试Android编程之前,应该学习多少Java?是否需要深入了解Java才能进行Android开发? - Jesper
如果你问能否同时学习Android和Java,那么肯定不行。如果你问Java是否强制要求,事实上Java是Android的通用语言,但你可以使用其他编程语言,如C#(Xamarin)和C ++(Qt)。 - niceman
Java是一种面向对象的语言。因此,如果您学习了面向对象编程,您将很快掌握Java:在http://eliminatecodefear.com上参加“掌握面向对象设计”课程-这是学习实用的面向对象设计和开发以及硬件作业的最佳资源之一。 - Horse Voice
6个回答

75

我建议先学习Java核心语言,不必学习像servlets、Swing等之类的东西,而是要学习以下几个方面:

  • 核心语言
  • 集合类
  • IO
  • 字符串处理

在学习完全陌生的环境时,同时试图学习这些东西会让你更难弄清楚自己错在哪里。

需要注意的是,这并不仅适用于Android——我总是鼓励开发人员在学习“外围”技术(如本机UI或Web框架)之前先学习新平台的“核心”部分。

我之前见过一些人试图这样做——他们在不理解语言基础的情况下,就会问一些高级场景的复杂问题。有时,他们遇到的问题是由于使用的复杂API导致的,有时则是由于基本误解引起的,但对他们来说,问题看起来都是一样的。他们无法区分不理解方法参数如何传递和在跨线程UI操作中遇到困难之间的区别。在没有一个坚实的基础的情况下,每一步都很痛苦。

另外,尽管没有交互的控制台应用程序可能很无聊,但它们非常适合快速测试某些东西。通常不需要担心线程、权限、图形、资源等。另一个测试你理解情况的好方法是通过单元测试。与普通的先测试后编写的方法不同,你可以通过单元测试来预测方法的输出,直到你没有趣味的情况可测试为止。完成后,你就有了完整的记录,知道代码具体的作用——把它留着以备将来需要重新学习相关概念时使用。


2
同意 - 我是一名开发人员,已经在C#和Java中完成了大量编程。对于我正在开发的第一个Android应用程序,很容易进入并使代码后台工作。因此,现在我大部分的学习将是UI交互和手机特定的内容。但是如果没有Java知识,我会迷失方向。 - theJerm
@JonSkeet 如果我是一名专业的C#开发人员,那么我能够直接进入安卓开发领域吗? - Alex
@AliIssa:我建议你先花点时间尝试一下桌面Java,以便找到感觉。先花一周时间探索这种语言和核心API,然后再开始学习Android。 - Jon Skeet
嗨,我有一个问题,你会如何定义核心语言? - SanketDG
1
@SanketDasgupta:类、接口、字段、方法、构造函数、泛型……这些是语言规范中定义的东西,而不是某个API中定义的。 - Jon Skeet
谢谢!我得去检查泛型! - SanketDG

9

当你有一个目标时,学习就更容易了。如果你的目标是主要进行Android编程,那么专注于这方面,你会在学习过程中掌握Java。


16
下一个你可能要做的事情是用中文写一本书。不要在此之前费心学习 - 我相信你会一路摸索而学会。说真的,在一个能够轻松玩耍、写控制台应用等方便的环境中学习Java将会容易得多。当原帖作者在编写Android应用时遇到问题,如果他之前不懂这种语言,要诊断出问题将会非常困难。 - Jon Skeet
3
我认为将学习编程语言的特定用途与书写口语语言的书籍相比较有些苛刻。我最近查了一下,安卓系统使用Java语言,因此我的意思很明显是要同时学习Java和Android,而不是100%地专注于Java,然后再转向Android。 - Robert
@Robert:但是,如果你不懂语言,学习在移动环境下的平台(或者学习几乎任何高级客户端UI技术)会比在简单环境中学习语言的核心,然后再转向更难的平台版本要困难得多。我强烈建议不要试图同时学习两个重要的事情。 - Jon Skeet
我并没有期望他在完全不了解Java的情况下就开始涉足Android编程,我只是想说他不应该把重心放在Java上而忽略了Android。这只是我的个人意见和过去的经验,因为有一个具体的项目可以让我更快地掌握一门语言/平台。他没有提到自己是否有任何先前的编程经验,所以我是基于我的看法来说的。 - Robert
你说要“专注于Android” - 这意味着他应该毫无Java知识地深入Android。我认为,Android的最终目标是不必费心学习任何servlet / Swing内容的原因...但不是跳过首先在尽可能简单的上下文中学习语言核心的原因(例如控制台应用程序)。 - Jon Skeet
3
我不确定你评论的意图是为了向原帖提供有价值的信息,还是试图攻击我?如果是后者,我的立场仍然是,我的学习方式是同时学习两者,因为我很想知道如何将Java与Android结合使用。因此,根据他之前的编程知识,这种方法也可能适用于他。 - Robert

3

在开始学习Android之前,我建议至少先学习Java的基础知识。

如果没有先学习Java,就好比在学游泳之前就去学潜水一样。虽然你可能会勉强应付,但这会让学习过程变得不必要地更加困难。


2

如果你对Java一无所知,那么Android开发者网站上提供的教程很难理解。我建议先从Java基础开始学习,然后再学习Android。这将是更容易理解所有内容的最佳方式。

在Java中,你还需要专注于高效地完成任务,因为移动电池是移动应用程序中要考虑的问题。


1

如果你懂C#,现在就可以开始学习Android了


并不完全正确。你现在可以开始使用Xamarin。 - OneCricketeer

1

首选Java,如果你懂C#,那么它们非常相似,你可以按照自己的方式进行操作。否则,一定要学习Java。

学会打开文件,处理用户输入,特别是字符串,学习所有基本关键字。

如果你是新手,学习循环、分支、嵌套和决策制定。"在这种情况下,你离Android还有很长的路要走"。一本好书会比你在网上找到的免费垃圾帮助更多。我曾经走了几个月的在线路线,但却遇到了困难。后来我找到了一本好书,在两周内就转向了Android。如果你知道去哪里找,好书也是免费的;)


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