V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iMouseWu
V2EX  ›  Java

晒晒大家学习JAVA的心得,以及过程吧!

  •  
  •   iMouseWu · 2013-06-21 20:48:07 +08:00 · 7627 次点击
    这是一个创建于 4175 天前的主题,其中的信息可能已经有所发展或是发生改变。
    个人感觉,应该先把java的基础学习好!比如说一些教材可以去看上几遍,把里面涉及到的都牢记并且学着去用!因为我觉得现在公司招新人,更加注重的是你的基础!然后在此基础上做点项目来开拓下视野!。
    但是看了这篇文章以后 http://www.cnblogs.com/yangjava/p/3140926.html
    觉得java的范围真的好大呀!。。需要知道的东西太多了!所以我现在又开始迷茫了!而且最终还要写出优秀的代码!
    也许可能java本身涉及到的东西不多,(我说的是基础的东西不多),但是要全部掌握也不是件容易的事情,因为如果不应用的话基本就会忘记!
    除了基础,就像上面给的链接一样,真的需要懂这么多?
    懂了这么多,还要熟练,还要对代码优化!想想都觉得有点可怕!这得多少年以后呀!。。哎~~~~顿时觉得未来很迷茫啊!
    所以路漫漫其修远兮,我的java路在何方!熟练,精通!这条路好长!
    各位javaer说说你们的看法吧!
    63 条回复    2018-05-22 12:12:21 +08:00
    rayu
        1
    rayu  
       2013-06-21 23:21:22 +08:00   ❤️ 1
    找到兴趣点,尝试去读开源代码。
    DearMark
        2
    DearMark  
       2013-06-22 00:04:01 +08:00
    求高手现身,我也好迷茫。
    garth
        3
    garth  
       2013-06-22 00:36:35 +08:00   ❤️ 1
    程序语言不是用来学的,应用至上!
    我曾经也像楼主一样迷茫过。
    其实学习一样技能,掌握其核心的东西,熟练常用的东西,其它的就建立在大脑中索引好了,需要用时再去翻。
    高手同样是需要去查阅各类文档的!

    学Java的话,基本是学完Java SE后,再向某个方向继续深入学习,例如Java ee或Android或其它。
    polythene
        4
    polythene  
       2013-06-22 00:59:15 +08:00   ❤️ 1
    我只想说,去他×的Java,什么都搞得庞大无比,什么都搞得巨复杂,Java界难道就没有一个好的设计师么??
    Narcissu5
        5
    Narcissu5  
       2013-06-22 02:25:37 +08:00   ❤️ 1
    不要从《thinking in java》 开始,不要听所谓大神的建议,不要上csdn。从写能运行能工作的程序开始,get your hand dirty!!!
    iMouseWu
        6
    iMouseWu  
    OP
       2013-06-22 02:41:29 +08:00
    @rayu 恩恩!正在尝试中!
    iMouseWu
        7
    iMouseWu  
    OP
       2013-06-22 02:43:15 +08:00
    @DearMark 主要是java涉及的东西实在是太多了!可以用@garth 的方法试试!先学se,然后往一个方向钻!可能会好点!也需要@rayu一样,多读点源代码!
    iMouseWu
        8
    iMouseWu  
    OP
       2013-06-22 02:44:44 +08:00
    @garth 恩恩!的确是应用至上~不用的话就算看了也会忘记!
    iMouseWu
        9
    iMouseWu  
    OP
       2013-06-22 02:45:31 +08:00
    @polythene java真的好复杂呀!东西实在是太多了诶!
    iMouseWu
        10
    iMouseWu  
    OP
       2013-06-22 02:45:50 +08:00
    @Narcissu5 I GET IT! THX
    hewwcn
        11
    hewwcn  
       2013-06-22 12:26:00 +08:00
    我是从马士兵的视频开始走起的。马士兵的J2SE讲得不错。
    think in java确实不适合新手,至少要等到可以独立写个应用再看比较好。
    其实我觉得如果不涉及j2ee,其实还不算复杂,所以LZ可以试着从SE转Android再转EE
    denger
        12
    denger  
       2013-06-22 12:31:02 +08:00
    不建议直接在没有什么计算机基础的情况就学Java。建议先从 C 开始,从基本语法到 -> 结构体 -> 指针 -> IO -> 网络编程 之后再去学 Java。
    RisingV
        13
    RisingV  
       2013-06-22 13:34:38 +08:00
    @denger 完全同意,否则会连内存是什么都一点概念都没有
    akinoniku
        14
    akinoniku  
       2013-06-22 14:24:02 +08:00
    @denger 我的建议是相反,先入门,再回头看会比较好。

    因为除非特别聪明,否则在真正用到之前,你不知道自己在学什么。
    ahnujyyang
        15
    ahnujyyang  
       2013-06-22 23:48:04 +08:00
    我学java的时候是先学的基础然后学的servlet+jsp+tomcat 最后学的SSH,其他的就是去一些著名的论坛博客看大神写的文章了,靠自己理解了,写的多了,自然就懂了,用到再查是最实际的。实用才是王道啊!!!
    likuku
        16
    likuku  
       2013-06-23 03:06:33 +08:00
    先学C的话,会对学习OO风格的Java会造成困扰,建议有条件别碰C和其它任何非OO语言,直接从C++/Java开始。
    iMouseWu
        17
    iMouseWu  
    OP
       2013-06-23 04:16:05 +08:00
    @denger 确实这的确是这个好的方法!。。但是就想@likuku 所说的,非OO语言转向OO语言的时候,的确会有点小困扰!
    iMouseWu
        18
    iMouseWu  
    OP
       2013-06-23 04:17:48 +08:00
    @ahnujyyang 的确是实用才是王道!但是个人觉得,如果只会用的话,不明白机理的话,我觉得还是不利于进一步发展的!所以我觉得到一定的时候应该去追求更加底层的东西!
    iMouseWu
        19
    iMouseWu  
    OP
       2013-06-23 04:22:30 +08:00
    @RisingV 个人感觉一开始入手java的话不需要对内存.JVM的了解!因为毕竟是入门,等到了一定的时候(不一定要很熟练,就是每当一个问题抛出来的时候都会去问为什么的时候),就会自发对底层的一些的产生渴望!就想我现在,对一些方法概念确实会用,但是我就会去想为什么要这个样子,所以这个时候就需要去研究底层的东西了,研究jvm的机理,研究内存,研究源码什么的!但是也不用太深入研究,只要懂得原理就好!。。。我觉得等到一定的时候,对Java非常熟练以后,再去好好的钻研底层的东西,这样我觉得才能使代码更加的优化,效率也更加的高!
    iMouseWu
        20
    iMouseWu  
    OP
       2013-06-23 04:27:47 +08:00
    @hewwcn 看基础的java se确实不怎么复杂。但是衍生出来的很多东西,个人感觉还是蛮多的!就像上面的链接所说的25种,确实很可怕!
    denger
        21
    denger  
       2013-06-23 22:56:37 +08:00
    @RisingV
    @akinoniku
    @iMouseWu

    先学 C 的好处:
    1. C 的语法和一些概念最为纯粹,而且在各语言中基本相通。比如最基本 变量概念、for if while 以及各种数据类型等等. 而 Java 所包含的东西相对增多了,值/引用、拆装/装箱、final、static 包含后续的各种 List Map 等一堆的 Class 的更会让初学者眼花缭乱往往会加大你在前期学习过程的理解难度。

    2. 先你学完C之后(至少能独立写出比如 打印三角形、纸牌游戏之类)的程序后,然后再进一步学 Java 的话,学习时会非常轻松愉快,并且在一些知识点上结合C会有更好更深的理解。

    3. 关于 OO 上,我觉得这只是对于一个长期从事非 OO 语言的程序员突然转换成写 OO语言才会存在这个问题。对于一个写 C 只有几个月的初学者来说(因为可能连面向过程和面向对象还没弄清楚),并不会存在转换的问题。

    4. 不用在环境上折腾,什么 JDK、环境变量、JAVA_HOME JRE Eclipse 之类的. C 的话如果是在 Linux 下,只要装个 VIM 简单了解一下 GCC 就能直接 "Hello Word"。

    5. .....

    好处实在是太多了,且并不觉得先学 C 会有什么坏处。而且你以后随便个人兴趣有可能会学 Python 或 Ruby 之类,站在 C和Java 的基础上比单纯的站在 Java 的基础上起点往往会高很多。
    denger
        22
    denger  
       2013-06-23 23:19:09 +08:00   ❤️ 1
    最后再来一句:连泥嘛“函数/function”都不知道是神马就开始写“方法/method”了?连 "指针/结构体/struct" 都不知道是神马就开始搞 "对象" 了?

    kidding... :)
    likuku
        23
    likuku  
       2013-06-24 00:04:22 +08:00
    @denger
    @iMouseWu

    「3. 关于 OO 上,我觉得这只是对于一个长期从事非 OO 语言的程序员突然转换成写 OO语言才会存在这个问题。对于一个写 C 只有几个月的初学者来说(因为可能连面向过程和面向对象还没弄清楚),并不会存在转换的问题。」

    这点不赞同,假若都认真学习的话,尤其是第一门程序语言就是C,则其「惯性」不可忽视,之后没有接触更多的程序语言,一下子换成学习纯OO的Java,是会很困扰。

    即便是学校的C课程,几个月结束后,接着新开Java课程,这样都会有转换的困难。
    luikore
        24
    luikore  
       2013-06-24 01:09:19 +08:00
    父親がSEで、Javaの仕事のせいで毎日深夜にならないと帰ってこない。そのせいで母親が毎日文句を言ってるし、僕は父親に週末も遊んでもらった記憶が無い。父親がC#の仕事をしていれば定時帰宅で母親は笑顔、週末は公園で僕と遊んでくれたのに・・・。
    iMouseWu
        25
    iMouseWu  
    OP
       2013-06-24 06:29:07 +08:00
    @likuku @denger
    我觉得 “对于一个写 C 只有几个月的初学者来说(因为可能连面向过程和面向对象还没弄清楚)这句话说的很有道理!”
    其实@denger 说的也蛮有道理的!其实本人就是从C开始入门的,但是个人感觉的话因为学了一个学期的C,可能是课本过于简单,所以对C基本没有什么概念当时!就很简单的入门!然后过了1年半就开始接触Java了。一开始真心不知道要怎么调用方法!其实这也不是@likuku说的惯性!个人觉得就是对面向对象一点概念都没有导致的!所以对我来说!入门C其实对Java的作用就是知道的方法,算是对语言的一个入门吧!可能是教材的问题!也许教材适当的话,可能会有@denger说的可能哦!
    @RisingV
    @akinoniku
    yukirock
        26
    yukirock  
       2013-06-24 06:46:30 +08:00
    @luikore 做 SE 妻离子散么
    akinoniku
        27
    akinoniku  
       2013-06-24 09:37:14 +08:00
    @denger
    @iMouseWu

    我自己是学C开始的(初二,谭浩强),没看懂,很长一段时间都没敢碰编程之类的东西。。

    如果当初看的是python,估计就不一样了。。
    railgun
        28
    railgun  
       2013-06-24 09:50:42 +08:00
    我看了,我觉得那文章里的大部分东西都是要在应用中慢慢掌握的,现在只要知道有这回事就行了
    so898
        29
    so898  
       2013-06-24 10:09:11 +08:00
    常年被各路大神鄙视的Java SE程序员路过……
    当年练手的开源项目: https://github.com/so898/OnlyLZ2
    求鞭策
    davepkxxx
        30
    davepkxxx  
       2013-06-24 10:25:40 +08:00
    首先是入门书籍:《Java核心技术》《Java编程思想》
    然后是帮助你提高的书籍:《Effective Java》《重构》《大话设计模式》
    研究一些开源项目的代码:Struts、Struts2、Spring、Hibernate。
    最后就是自己动手写一些工具、框架:JSON工具、数据库连接池、Spring扩展、持久层框架、MVC框架。
    最终要的就是在工作中解决实际问题。
    davepkxxx
        31
    davepkxxx  
       2013-06-24 10:28:20 +08:00
    对了,在启动这些之前我建议你学习以下编程基础,比如数据结构,比较好的办法是买本C语言的书学习一下,推荐谭浩强的《c语言程序设计》。
    zarzen
        32
    zarzen  
       2013-06-24 10:41:59 +08:00
    我就记得、我老师说、有个android的项目你去做吧。看一下java。看了一段时间不知道在干什么,也没什么特别的,放弃。然后直接开始写了……(当然,我之前学过C++)c系列语言编程思路根本没什么特别的。
    至于ls那些说的c ,OO什么的,还推荐先学C……典型的中国大学风格。反正我是不能理解的。内存之类的跟效率有关。但是跟业务逻辑的关系有多大?一个东西在没有做出来之前就开始考虑效率,除非它是操作系统什么的。否则就是浪费时间。
    至于java,那么多坑爹的概念,让我至今对它没有好感。不是复杂了,才体现牛逼。
    Beckham007
        33
    Beckham007  
       2013-06-24 11:04:39 +08:00
    Java主要是学习思想,多读源代码吧。。。
    denger
        34
    denger  
       2013-06-24 13:18:32 +08:00
    @zarzen
    推荐先学C就叫典型的中国大学风格? C作为大多数编程语言的鼻祖至今仍无半点衰褪这并不是没有原因的。
    另外你也没看明白为什么别人推荐先学C?你以为先学C之后就会了解 Java 的原理?了解内存效率?如果这样认为末免也太小看 JVM 和那些专门搞编程语言底层的人了吧。

    说白了,之所以说 C 最好入门是因为它纯粹、简单(语言的体系简单),没有象 Java 那样大的体系结构及大量 Java Docs API、抽象以及新增的各种概念(你自己都说了:"至于java,那么多坑爹的概念"),对于一个连 if else以及基本的数据结构类型都没完全搞清楚的人来说,这些必定会给初学者造成学习的干扰,所以 LZ 在学习后出现迷茫的情况也就不奇怪了。
    hit9
        35
    hit9  
       2013-06-24 13:44:00 +08:00
    学习java啊、、我的历程就是看了下java的代码,然后就学不下去了、、
    jjx
        36
    jjx  
       2013-06-24 14:34:00 +08:00
    最佳心得: 别学java
    b824379598
        37
    b824379598  
       2013-06-24 16:18:08 +08:00
    JAVA各种框架
    框啊框 把人都框死了
    iMouseWu
        38
    iMouseWu  
    OP
       2013-06-24 16:51:10 +08:00
    @akinoniku 各种东西的入门确实很重要!教材什么的也很重要!就像我们学习的教材C就蛮简单,因为是学校老师自己写的课本!所以就单单的入门的话个人感觉还不错!但是书上涉及到的C的核心真的讲的很少!以至于我现在问我的同学你觉得C怎么样!他们都说很简单!所以我觉得可能和教材有关系,如果是入门的话!
    iMouseWu
        39
    iMouseWu  
    OP
       2013-06-24 16:52:28 +08:00
    @railgun 其实我也是这么觉得的!因为里面的东西实在是太多了!而且有些东西根本我现在就没有接触过!所以有些是要在应用中去接触!当初第一眼看了上面的25条,直接傻了!
    iMouseWu
        40
    iMouseWu  
    OP
       2013-06-24 17:01:53 +08:00
    @so898 先mark一个。最近时间紧没时间细看!等过段时间再仔细研究下!个人感觉没有什么鄙视不鄙视的!确实有很多鄙视java,把什么东西都搞的这么复杂!但是个人感觉语言这东西,其实不管什么语言你都可以去完成一件事情。就拿写一个聊天室的程序来说,你可以用java写也可以用node.js来写!只是开发效率和运行效率有差而已!所以现在为什么会有这么多的语言出现(虽然个人知道的语言不多),个人感觉就是为了完成一件事情更加的有效率和简单,而设计出来的一个东西!所以语言个人感觉只是一个工具!而我们做的就是把这个工具用好,或者用这个工具做出一个新的工具来!现在对语言的认识也不是很深入,希望可以共同进步!
    Lbcove
        41
    Lbcove  
       2013-06-24 17:04:01 +08:00
    语言只是一门语言,基础比较重要,至少C是最基本要学习的,其他相关的操作系统,数据结构,计算机网络,数据库等都是最好要掌握的基础。要从大体上认识这门语言能干什么,优势在哪,劣势在哪。学习语言也是为了开发应用,开发软件的流程,比如软件工程等就比较重要。能较好清楚自己的定位。基础好了学起来不是很费力。
    iMouseWu
        42
    iMouseWu  
    OP
       2013-06-24 17:04:54 +08:00
    @Beckham007 个人感觉还有底层!
    iMouseWu
        43
    iMouseWu  
    OP
       2013-06-24 17:19:59 +08:00
    @denger @zarzen ,C确实很牛。C也确实要比java什么简单(这里的简单并不是所说的内容简单),没有java doc api。没有各种烦人的框架!因为个人没有研究过jvm所以对内存这方面的比较也不能发表什么看法!就像@b824379598 所说的,各种框架的出现确实让人目不暇接!
    个人感觉java里面的框架就想各种新出的语言一样,只是为了让人更加简单的做事情而出现的一种事务!所以@denger 为什么会有烦人的java doc api也不奇怪了!因为什么都已经给你写好了,你只需要调用就OK了呗!(也许这就是面向对象中“封装”的精髓所在吧)所以学习框架最终还是要回到本质,也就是框架的源代码。也许哪一天自己能像@davepkxxx所说的,可以写出一个工具来,也许就是达到另外一个高度了吧!
    其实语言的纷争就没有停过C,C++,java.@Lbcove .对的至少要知道一门语言的优势和劣势在哪里。就像我上面说的,不管什么事情,什么语言都可以干,只是效率的问题罢了!
    NEVER GIVE UP
    iMouseWu
        44
    iMouseWu  
    OP
       2013-06-24 17:21:06 +08:00
    @luikore 翻译一个!
    ipconfiger
        45
    ipconfiger  
       2013-06-24 17:27:18 +08:00
    最好的学习方法就是,忘掉java吧
    iMouseWu
        46
    iMouseWu  
    OP
       2013-06-24 17:42:09 +08:00   ❤️ 1
    @ipconfiger ......其实java也还是不错的!我比较喜欢诶!
    davepkxxx
        47
    davepkxxx  
       2013-06-24 18:35:12 +08:00
    @iMouseWu 好吧,这里就多说一些吧,毕竟身为一个靠Java吃饭的人。

    《Effective Java》是一本非常优秀的书,它的作用是帮你合理规避Java中一些可能引起BUG或异味的地方,并帮你选择一条更好的道路,这些地方不少是Java设计中的不足或缺陷。

    《重构》对于Java、C/C++、C#这种为大型、复杂、安全性要求高、多人/多团队协作开发的准备的语言来说很重要,因为到了这个时候,需要有清晰的项目结构和明确的代码逻辑。

    对于设计模式,很多书都很优秀,我选《大话设计模式》其实是因为它通俗易懂,因为当时我还是个菜鸟。设计模式主要是为了解决很多实际问题,比如安全性保障、多人协作方便、提高开发效率、降低代码耦合。这些问题有些是为了帮助解决软件开发过程中遇到的问题,有些是为了弥补Java自身的不足。

    Java是开源界少有的高质量代码聚集地,原因是经过很多商业项目的检验,并且其中很多代码是由非常优秀的公司和人贡献的。那些流行开源代码库中的项目,是重构、设计模式这些概念非常精彩的范例。当然你使用的时候只用看用户手册和API就够了,不需要关心它是如何实现的,除非你遇到BUG。

    自己写框架是一个非常有趣而同时又很折磨人的事情,但是对自己水平的提高非常大。设计的时候不必拘泥于Java本身和现有的框架,参考一些其它的语言和它们的框架。
    hooluupog
        48
    hooluupog  
       2013-06-24 18:44:10 +08:00
    c入的门,java开始做项目,python/c++/Go这些自学,c++很少使用。JVM平台很好很强大。
    zarzen
        49
    zarzen  
       2013-06-24 19:46:55 +08:00
    @denger
    你觉得c简单,纯粹。
    别人也这么觉得么?

    好像我看到支持python比较简单的吧?至于你说C传承不衰什么的,你觉得是为什么呢?
    msg7086
        50
    msg7086  
       2013-06-24 19:47:42 +08:00
    @luikore Javaが複雑すぎだからよ
    zarzen
        51
    zarzen  
       2013-06-24 19:53:36 +08:00
    @iMouseWu
    网易公开课有个编程范式课,你可以看看。
    这样照着C做基础那条路子,我觉得还行。我不支持先学C是因为,c过于接近机器。不适合,入门。

    至于java,我认为它有今天,在于商业支持。商业支持带来了普及化,规范化,民工化。所以它是很好的工具。但是java的不断演化中可以看出,它感受到了自己的不足。
    denger
        52
    denger  
       2013-06-24 22:01:33 +08:00
    @zarzen 我说的是相对 Java 而言。至于别人如何觉得,我管不着,我只是表达我的想法而已,一个 从 C -> xx -> Java 的过来人的心得。

    至于什么 Python Ruby 之类在该贴感觉就有点偏题了...
    denger
        53
    denger  
       2013-06-24 22:15:16 +08:00
    @zarzen
    C "过于"接近机器? 请问您指的是它的指针还是它的内存管理上或其它?现在学习哪门语言到了一定程序不需要对内存甚至更深的原理或接近机器的进行了解或优化? 提前了解这些基础有什么不好。当然,如果你今后的志向只是每天只是写写 Demo 或 没多大访问量的程序就另说了.

    在我看来,Java 有今天, 其商业上的成功并不是关键,更大的成功来源于开源的推动。
    ipconfiger
        54
    ipconfiger  
       2013-06-24 22:53:44 +08:00
    @iMouseWu 8年前我也这么想滴,可惜啊
    iMouseWu
        55
    iMouseWu  
    OP
       2013-06-26 07:05:11 +08:00
    @all....谢谢大家的回复!
    Ricepig
        56
    Ricepig  
       2013-06-26 12:29:26 +08:00 via iPhone
    java程序员表示不知道define,free,头文件,指针为何物。大概也不知道makefile为什么能写的那么复杂。

    哈哈
    iMouseWu
        57
    iMouseWu  
    OP
       2013-06-26 18:22:43 +08:00
    @Ricepig 个人感觉C中指针是精华!。。但是我觉得在Java中引用变量其实是1级指针的另外一种体现!虽然不知道java里面是否存在多级指针的体现!但是一级指针的体现可以有!
    Ricepig
        58
    Ricepig  
       2013-06-26 18:26:25 +08:00 via iPhone
    @iMouseWu 这未免把指针看的高级了一点,事实上指针除了达成类似引用的作用,还有其它作用。指针和位操作也是c语言接近硬件的典型特性。
    java程序员就不一定要接触这些了。
    iMouseWu
        59
    iMouseWu  
    OP
       2013-06-26 18:31:59 +08:00
    @Ricepig 这个倒是!我觉得正式因为C语言接近硬件,所以它的效率会比java高,也更加难学!
    C也没有很深入了解!
    manoon
        60
    manoon  
       2013-06-26 23:02:57 +08:00 via Android
    @iMouseWu

    father works with j2se, everynight late 2 back. mother often complains. and there is no memoeries about park or pleasure ground.

    if father worked with c#,he would back home on time everyday .mother would be happy and smile every day. and of course could go out togethet for playing in syumatu.
    iMouseWu
        61
    iMouseWu  
    OP
       2013-06-27 07:34:01 +08:00   ❤️ 1
    @manoon 好吧!个人还是保持个人建议,每种语言都有每种语言的特性!都有它的优点!(虽然对语言了解的不是很多)。以前觉得vb,pb不好!但是具体哪里不好又说不上来!有空再去研究各种语言的差别吧!
    kikiki
        62
    kikiki  
       2015-01-15 01:35:14 +08:00 via iPhone
    @luikore 哈哈...
    cg679361
        63
    cg679361  
       2018-05-22 12:12:21 +08:00 via Android
    @iMouseWu 您好,我高一,C 语言 java 的书各看过半本,仍一头雾水,在各种网站上看了好多 c 语言 java 入门的帖子,感觉看了和没看一样,很幸运翻到您的帖子,你们学校老师编的 C 语言的书能给我看看吗?电子版纸质版都行,我可以出钱买,感谢感谢,希望您能给我一次编程入门的机会,谢谢,我 QQ2845718188
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3020 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:53 · PVG 22:53 · LAX 06:53 · JFK 09:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.