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

注: OneCoder 即本人苦逼Coder 

今天群里(Java Coder群:91513074)的朋友,问我该如何看帮助文档,或者说在遇到问题的时候如何解决。希望我能介绍一下我的方法。

这个 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生成的。顺便,你还可以看到它的实现,加深你的理解,何乐而不为呢?
 
关于搜索引擎的使用
解决问题最好的办法,当然是去网上搜索。这里 OneCoder 必须要说的是,对于开发人员来说,百度确实不是一个好的搜索引擎,搜索出来的东西相关性和有效性都十分有限。这里, OneCoder 必须大力的推荐Google。真的不在一个层次上。你可能会说,Google总是被墙。这个, OneCoder 采用了不太通用的做法,那就是常年购买了一个ssh的代理,专门用于访问google。呵呵:)其实,解决google问题的方法网上还有很多,你也可以去搜索一下。我们可以简单对比一下两个搜索引擎的搜索效果。
 
以“Netty 教程”这个搜索词为例:

 
同样的 OneCoder 原创的文章,百度排名靠前的确实被采集站恶意采集的转载文章,而非原创文章。这对于你获取原始的准确的信息是有很大影响的。
 
至于相关性、信息的前沿性等方面的对比, OneCoder 由于一时找不到合适的例子,暂时不做图例。但是,随着你慢慢的使用,你会逐渐发现二者的区别。比如,在你搜索一些前沿性的课题的时候,或者一些罕见的错误的时候。Google往往能给出你有价值的参考信息。
关于自我解决问题
这个其实说起来比较抽象。你可能会说,这个是经常积累等等。是,这的确需要经验,但是那一点一滴经验又如何去累积呢?难道靠问别人?
 
既然提到了搜索引擎,我们就要会用它。好的关键字,能让我更快的接近答案。这里, OneCoder 的愚见是,不要使用一些例如:怎么办?为什么?等无用的字眼,而是输入关键字。尤其是出现异常的时候,你大可以直接将异常的信息直接粘到搜索引擎中去搜索。(注意:去掉跟你自己代码有关的信息,只要通用的部分。)
比如:今天 OneCoder 遇到一个Hibernate的异常导致的空指针问题。一时没有头绪,遂将所有跟异常信息和部分堆栈粘贴入google,结果就在stackoverflow上,找到非常有价值的信息,从而解决了问题。
关于StackOverFlow
一个国外非常著名的问答社区,问题包罗万象,回答都非常的认真友好。 OneCoder已经在上面解决了无法问题。当然,不是通过直接提问,而还是Google给我搜到的答案。这里还得感谢Google。
关于其他
其实 OneCoder 用到的工具,就这么简单。源码+Google。除此以外,一个善于总结的善于思考的大脑是更加必不可少的。这就是所谓经验和知识的积累吧。
 
解决一个问题不是关键,关键是会解决一类问题,更关键的是会独立解决没接触过的问题,这是一种非常重要的能力。我宁愿找一个0基础,但是可以自己动手学会、解决的人,也不需要一个虽然有基础,但是也仅限于此的人。个人遇见,仅供参考。
 
如非特别注明,本站内容均为OneCoder原创,转载请务必注明作者和原始出处。
本文地址: http://www.coderli.com/archives/java-study-resolve-problem-by-itself/

最后,给老婆的小站:8无聊(http://8wuliao.net)打个广告。看名字,就知道这里不无聊:)

你可能感兴趣的:(java,初学)