如何真正学好java

青春壹個敷衍的年華 提交于 2020-09-30 16:56:00

谈谈如何学好java

学好与“差不多的区别”

1、java是一门非常火的语言,为什么我说非常火呢,相对于今天2020年9月6号而言,java编程语言的使用量是排在前茅,但是以后咋样,我不知道,也不想知道,无所谓对吧。

区别:

  • 差不多:如果仅仅是为了一些比较入门的项目学习java
    只学会其基本语法,常用内置包的使用,以及面向对象的思想,五天可以搞定。随着一边做项目,一边开发,你会越来越会使用java,因为语言万通的,基本使用没问题,喝水一样。但是也仅仅是这样,会用
  • 真正学好java语言,在以上的基础上,有自己的理解,有更底层的认知,便是真正学好了java
    遇到问题能快速解决问题,能有效的避免代码细节上的bug,能够通过原码了解自己有兴趣的工具类等等,能快速上手自己不熟悉的工具类等等。学好

第一步:(重要)

一:了解jdk,jre,jvm之前的关系
二:记住:封装,继承,多态三大特性(刚刚开始不了解可以,但是要记住)
三:明白其java为什么跨平台,是为什么,而不是仅仅知道其跨平台
四:学会在命令行编写和编译和运行代码,各种方式(很多人觉得无所谓,但是这一步熟悉的话,会帮你在后面认知编译,jvm加载类有一定的帮助)
五:记住jvm的结构,相应区的功能,记住哪些是线程共享区,哪些是线程独享区(线程是什么现在不懂无所谓,记住些),记住类加载机制,知道什么是class文件,与源代码的区别。



第二步:(重要)

一:弄清什么是类,类的基本属性。
二:弄清楚八种数据类型(包括其范围等等),以及引用类型,什么是类型转换,,以及二进制换算,二进制运算:反码补码,进制运算,等等等等
三:深入了解各种操作语句:for循环,while循环,if循环,+ += --等等(这里很多人觉得简单,但是却是有很多细节的东西,如:&&和&&的区别、a++ ++a的区别,甚至更深程度的^的运算;

第三步(重要)

一:学会数组,二维数组,多维数组,数组扩容等等(即使为了做项目也要学会)
三:开始理解,什么是对象,什么是类,两者的区别,
四:开始理解:各种修饰符的作用,等等(static关键字的使用,以及static关键字修饰的变量存放在jvm的哪个位置)
五:学会方法的方法的调用,声明,参数等等,,,,
六:能够编写冒泡排序,选择排序,,,等等(一定要自己理解透彻)



第四步:(重要)

一:了解父类与子类,哪些修饰符修饰的方法和属性可以被继承,可以被重写
二:知道Obejc是祖宗类,结合jvm,知道父类,子类,各种修饰符修饰的属性显示初始化的顺序(很重要,很重要)
三:知道什么是抽象类,什么是接口,以及他们的使用,他们的区别以及jdk1.8之后和之前的区别
四:到了这里,要学会看原码(很重要,任何教材任何百度上的大神,都没有原码靠谱,所以一定要尝试学会看原码)
五:学会debug调试
六:知道什么是多态,很重要很重要很重要,重要的事情说三百遍
七:理解ava的装箱以及拆箱
八:理解什么是方法重载,什么是方法重写。为什么要封装






第五步(重要):

一:知道String的使用,以及什么是字符串常量池,字符串常量池在哪。
二:比较==与erquals的区别,通过原码弄懂最好
三:弄清楚数据结构,栈,数组,链表,哈希表,红黑树,队列
四:开始学习集合的使用,结合原码使用,Set集合,和map集合,
五:比较器排序和自然排序的使用以及区别,



第六步(重要)

一:开始学习反射机制
二:什么是反射机制,Class对象什么时候创建(结合原码)
三:通过反射访问属性,通过反射访问方法,通过反射创建对象,等等等
四:反射创建对象和传统创建对象的区别


第六步(重要)

一:开始学习异常
二:了解各种异常,常用的异常,Exception和error的区别,运行时异常和编译时异常的区别
三:能自定义异常
四:try catch finall的使用,已经final更为底层常见的细节等等


第七步(重要)

一:开始学习线程,明白什么是线程,什么是进程,主线程什么时候创建
二:要清晰的明白,线程没有网上说的那么难,
三:要想短时间内学懂线程:1抛开顺序运行的思维。2:什么是java线程抢占式
四:理解线程不同状态的区别。以及线程状态的如何转换,
五:结合jvm里面线程独享区,线程共享区弄明白什么是线程安全,以及锁的使用
六:能够操作三线程以上的锁,做到自己随心所欲的目的(曾经有个大神说,工作两三年的人都不一定可以随心所欲的操作三线程以上的锁,我只想说,放屁,只要前面不偷懒,喝水一样);
七:学会使用各种常用的线程池(不多说这个了,有关为什么使用线程池,以及线程池相关的细节问题,我以后有时间单独写一篇博客)





第八步(重要)

一:学习流
二:明白什么是字节流,什么是字符流
三:什么是缓冲流,什么是管道流,什么是随机流,反正常见的流能学会使用
四:字节流与字符流的转换
五:文件流的使用
六:要有个清晰的认知,什么时候使用什么流,什么时候要flush,要及时关闭流
七:尝试用原码去看一下各种流直接的实现原码,了解一下其关系(这个东西嘛,无所谓,觉得自己会用就行的也没错,我只是建议)





第九步:(重要)

一:学习一下网络编程
二:有时间的小伙伴可以去学习一下计算机网络,或者计算机组成原理(不懂线程的小伙伴可以去学习一下)
三:理解tcp网络编程和UDP网络编程的区别以及应用场景
四:将线程用在serve的创建上,最好是线程池(注意线程池的选用)
五:客户端与服务器之前的相互通信(涉及到流关闭的细节问题等等)



最后:

一:有时间的小伙伴可以去学习一下jdk1.8的特性
二:以上的类容只会少,不会多,因为时间的问题。很多东西没有考虑进去,但是都很重要
总结如下:

  • 一定要弄清楚jvm
  • 一定要学会看原码
  • 能够非常快速的上手自己不熟悉的工具类
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!