Java初学者如何自学和自己定位解决问题

OneCoder其实没有资格高谈阔论,只能说说个人的习惯和方式。自学和自我解决问题确实是一项非常非常重要的能力,远比你现在所会的知识重要的多的多,因为,你未知的永远的无穷的。

  关于API文档

  经常有朋友求各种API文档,初学者里常见的是要JDK的API文档。这个 OneCoder个人的习惯是,从来不会去下API文档,那个查找起来也不方便而且也没有代码辅助,而是直接去JDK的源码中看注释,甚至是源码。既方便,又直接,又精确,还接近本质。你下的JDK里,其实都带有源码的,而且默认还是绑定好的。这么方便,为何不看?

  比如,你用到了String类中的subString方法,想知道如何使用。你可以去看所谓的API文档,你也可以直接在你的IDE中点开String类,用ctrl+o搜索到subString方法。你可以看到他的注释:

  1.     /**
  2.          * Returns a new string that is a substring of this string. The
  3.          * substring begins at the specified <code>beginIndex</code> and
  4.          * extends to the character at index <code>endIndex - 1</code>.
  5.          * Thus the length of the substring is <code>endIndex-beginIndex</code>.
  6.          * <p>
  7.          * Examples:
  8.          * <blockquote><pre>
  9.          * "hamburger".substring(4, 8) returns "urge"
  10.          * "smiles".substring(1, 5) returns "mile"
  11.          * </pre></blockquote>
  12.          *
  13.          * @param      beginIndex   the beginning index, inclusive.
  14.          * @param      endIndex     the ending index, exclusive.
  15.          * @return     the specified substring.
  16.          * @exception  IndexOutOfBoundsException  if the
  17.          *             <code>beginIndex</code> is negative, or
  18.          *             <code>endIndex</code> is larger than the length of
  19.          *             this <code>String</code> object, or
  20.          *             <code>beginIndex</code> is larger than
  21.          *             <code>endIndex</code>.
  22.          */

  如果你了解,你会知道,所有的接口的API都是根据这个Javadoc生成的。顺便,你还可以看到它的实现,加深你的理解,何乐而不为呢?其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个Java交流群664389243,不管你是小白还是大牛欢迎入驻,大家一起交流成长。

  关于搜索引擎的使用

  解决问题好的办法,当然是去网上搜索。这里 OneCoder 必须要说的是,对于开发人员来说,百度确实不是一个好的搜索引擎,搜索出来的东西相关性和有效性都十分有限。这里, OneCoder 必须大力的推荐Google。真的不在一个层次上。你可能会说,Google总是被墙。这个, OneCoder 采用了不太通用的做法,那是常年购买了一个ssh的代理,专门用于访问google。呵呵:)其实,解决google问题的方法网上还有很多,你也可以去搜索一下。我们可以简单对比一下两个搜索引擎的搜索效果。

  以“Netty 教程”这个搜索词为例:

  同样的我原创的文章,百度排名靠前的确实被采集站恶意采集的转载文章,而非原创文章。这对于你获取原始的准确的信息是有很大影响的。

  至于相关性、信息的前沿性等方面的对比, OneCoder 由于一时找不到合适的例子,暂时不做图例。但是,随着你慢慢的使用,你会逐渐发现二者的区别。比如,在你搜索一些前沿性的课题的时候,或者一些罕见的错误的时候。Google往往能给出你有价值的参考信息。

  关于自我解决问题

  这个其实说起来比较抽象。你可能会说,这个是经常积累等等。是,这的确需要经验,但是那一点一滴经验又如何去累积呢?难道靠问别人?

  既然提到了搜索引擎,我们要会用它。好的关键字,能让我更快的接近答案。这里,我的愚见是,不要使用一些例如:怎么办?为什么?等无用的字眼,而是输入关键字。尤其是出现异常的时候,你大可以直接将异常的信息直接粘到搜索引擎中去搜索。(注意:去掉跟你自己代码有关的信息,只要通用的部分。)

  比如:我遇到一个Hibernate的异常导致的空指针问题。一时没有头绪,遂将所有跟异常信息和部分堆栈粘贴入google,结果在stackoverflow上,找到非常有价值的信息,从而解决了问题。

  关于StackOverFlow

  一个国外非常的问答社区,问题包罗万象,回答都非常的认真友好。 OneCoder已经在上面解决了无法问题。当然,不是通过直接提问,而还是Google给我搜到的答案。这里还得感谢Google。

  关于其他

  其实我用到的工具,这么简单。源码+Google。除此以外,一个善于总结的善于思考的大脑是更加必不可少的。这是所谓经验和知识的积累吧。

  解决一个问题不是关键,关键是会解决一类问题,更关键的是会独立解决没接触过的问题,这是一种非常重要的能力。我宁愿找一个0基础,但是可以自己动手学会、解决的人,也不需要一个虽然有基础,但是也于此的人。个人遇见,仅供参考。

其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个Java交流群664389243,不管你是小白还是大牛欢迎入驻,大家一起交流成长。

 


更多精彩内容