日期:2014-05-20  浏览次数:21009 次

分享+散分
本帖最后由 lcf 于 2013-07-11 15:10:59 编辑
论坛里很多新手提问如何学习Java,我觉得不如开个帖子大家分享一下你是怎么入门的,给新人做参考。

分享内容大概包括几点:
* 描述一下你自己觉得最牛逼的项目是什么样的,多个也可以
* 从开始到入门,看了哪些资料,都教会了你什么东西?
* 你走过哪些弯路,都有什么教训?

我先自己来。

我公司是做交易系统的,所以最牛逼的项目自然是交易系统了。它要求高稳定性,低延迟。总之一切都要快,要正确。涉及到很多方面的优化,最主要的是多线程管理、线程同步。然后还有JVM的预热处理(性能可比未预热高数万甚至数十万倍)。然后,交易系统是一个复杂的系统,应用了各种设计模式。

一开始主要是学校的一门数据库的课要求做一个Java项目,要有界面,然后胡乱拿Eclipse堆了一个出来。后来差不多就是研究生毕业开始找工作的时候,要面试,就看了大半本SCJP6的教材,还有一本Effective Java,基本上面试都能秒杀了。SCJP的教材很系统地讲解了Java的基础,继承、接口等得原理。现在零星看一些Java Concurrency in Practice,但发现每一页都能学到新东西。比如昨天就学了管理listener应该用CopyOnWriteArrayList,而我之前的做法是用ArrayList,然后add/remove的时候是一个临时操作,把要添加、删除的listner放进另外的List里,在notify之前处理他们。这样来防止ConcurrentModificationException

走的弯路大概是大学刚毕业不久开始尝试创业,写网站,买了一些SSH的书来看,并且很傲慢地认为大学时期做的那个数据库项目已经是Java的全部。然后看SSH的教程的时候就跟SSH本身一样云里雾里。而现在往回看,之前学的那些Swing根本无足轻重,倒是读到的SCJP6和Effective Java的那些东西现在仍然每天在用。所以给初学者的建议,就是如果你有一定的其他语言的编程基础,从SCJP之类的教程开始,不然就从编程本身开始,理解函数、循环、递归等概念(不一定要用Java),再来看Java。而学Java,千万别从Swing开始,那简直是浪费生命。

只接受最多10个认真的回复,每个20分,是否认真我来定。一人独得200分也有可能。

------解决方案--------------------
从编程本身开始,理解函数、循环、递归等概念(不一定要用Java),再来看Java。


觉得这句话说的挺好,只要基础学好了,什么开发语言,开发框架等等都是浮云。
------解决方案--------------------
1.我们公司是做保险系统的,比较成熟了,技术方面都由系统架构组负责,大部人是业务方面的。
2.本人学习java之前学过C语言,基本语法在学C的时候都接触的差不多了,记得学C的时候,老师留了个百钱买百鸡的问题,其实就是个三重循环,但是当时第一次接触到for循环,自己在那抠了好久都没写出来,想想能想的通,但是就是写不出程序来,经过了多次实验还是没出来,感觉就差一点点,后来在老师讲的时候恍然大悟了,从那时起就掌握了for循环,回想起来那段经历还是挺深刻的。
3.至于走过哪些弯路么,在学校java课程只有一学期,其它的都是自己找些教程和书看的。当时在java se的swing上面花的时间比较多,现在从事的javaee方面的工作,根本不用swing,感觉那部分知识了解就行,没必要花费那么多经历,算是走弯路了吧。
------解决方案--------------------
我就是SWING开始学习的.现在有问题了.JTABLE滚动条是有竖的.不知道为何.横的没有;
JPANEL ->JSCROLLPANE->JTABLE;
我怀疑是JTABLE的宽度变化不了.怎么拉都是总宽度不变.不知道怎么设置;

------解决方案--------------------
我记得在大一的时候基本上没什么专业课,只有两门课一门是信息系统导论还有一门叫计算机系统导论..但是当时听课的时候因为自己什么都不知道,不过当时也觉得自己听懂了.或者感觉老师讲的都没什么用.还记得当时讲的是html还有主板..PCI插槽啊什么的..现在已经记得不清楚了..大一下学期的时候我们学院开始分方向了..而我们寝室人的感情真的是太好了.所以都不舍得去不同方向..所以我们都选择了软件工程的方向.并且大一下学期就开始学C++还有数据结构了..C++当时买了一本C++ Primer当时老师讲的东西我都在课下全部预习完了..有时候听的无聊了就直接走了这样基础也越来越差了..到了大二的时候学校开设了数据库以及算法不过当时老师可能觉得我们学的比较不错吧..反正我听的是一头雾水..刚开始的时候还能看懂..后面的时候讲的图论什么的.还有八皇后问题..真的看一上午都看不懂了..在加上以前学的数据结构并不是很好..就导致了越学越烂..后来就真的不想学了..到了大二下学期以及大三的整个一学期基本都在跟同学 打dota,上课基本没去过.反正老师也不点名..大三也都什么都不怕了..除了自己到最后把作业交了就行了..感觉自己什么都没学到..现在快到大四了..感觉到了毕业后的压力.现在也不得不开始学习一些编程语言了..首先我也知道应该通过C++乐园那个网站的时候看到了关于华为以及很多公司面试和笔试的时候都会考到C++以及数据结构和算法方面的知识,所以我又搬出来当初买的那一本C++ primer来学习基础知识..一页一页的慢慢理解..后来通过学习基本语句什么条件语句啊.循环语句什么的..刚开始看的时候确实感觉真的很头疼..尤其是学到C++中函数的重载的时候那真的是各种重载啊..搞的自己头晕晕的..不过还是按照书中的重载方法一个一个的敲进IED中运行.并且记着每个重载方法的使用..等C++学完重载的时候,又重新学习了数据结构..其实最近学数据结构的时候感觉理解的还不错..首先一般的书上面都会先教你学习线性表..线性表中又会使用两种方法来实现.一个是数组实现..还有一种就是链表实现了..然后通过看书理解了两种方法实现的区别.后面紧跟着的大部分都是栈的数组实现和链表实现..然后就是队列的数组实现还有链表实现.而且队列数组实现的时候还会出现"假满的情况"所以还要考虑一种情况就是循环队列的实现..通过慢慢的学习感觉自己基础知识掌握的还行.但这也知识表面现象..后面就是树结构的学习了.不过现在还没开始..树以前在学习的时候其实也有接触,但是当时写的程序真的是太烂了..根本搞不懂指针到底是怎么来回指的..其实对于不知道指针到底是干嘛的情况应该说是对内存的分配与管理方面还不是很清楚..其实不管是学C++还是学Java的我都特别建议基础不牢的人去看一下李刚的Java程序员基础十六课..真的很不错..让我对于内存的理解更加深刻..每次写程序的时候脑子里都会出现内存中的情况..这样脑子就会很清晰..避免了内存泄露的情况..而且不容易出什么差错..每天如果遇到不懂的问题.就会上百度上面问.其实上面回答的还是挺快的..不过百度上的人确实很多.有可能也不是很精通.所以现在在CSDN上注册了一个号,以后会关注一下这里面人的问题,然后自己想想..应该会学到很多东西,加油了除了学习java方面的基础知识外,还有学习Java EE方面的知识..所以革命尚未成功,还要继续努力啊..