java学习:放弃的理由很多,但坚持的结果只有一个(附学习规划表)!
作为一名作家,可以每天跑十公里以上并坚持二十多年,每年都去参加马拉松比赛,这样的人不成功才怪。
任何人的成功都绝不是偶然的。那些在成功路上沉得住气,能坚持到底的人,最终才能走到目的地。而那些一遇困难便放弃或者在困难面前立马投降的人,毫无疑问,只能沦落为一个失败者或走进人群中就找不见的普通得不能再普通的人。
我想大部分年轻人都是有上进心的,都是渴望做一个成功者,想要改变目前的局面,我们只能是珍惜现在,把握现在,狠狠地逼自己一把,从现在开始,学会坚持,学会忍耐寂寞,拿起书本,日复一日的坚持学下去,那么终有一日你定会成功,不鸣则已一鸣惊人,相信我,更要相信你自己。
时间紧迫,我们开始学习吧,立刻马上!
推荐给同学们学习java的筑基神器:[高淇老师主讲Java300集]
系统的java学习规划表
一、面向对象编程(基础)
- 面向过程和面向对象区别
- 类和对象的概述
- 类的属性和方法
- 创建对象内存分析
- 构造方法(Construtor)及其重载
- 对象类型的参数传递
- this关键字详解
- static关键字详解
- 局部代码块、构造代码块和静态代码块
- package和import详解
- JavaDoc生成API文档
学习目标
- 了解面向对象和面向过程编程思想及其区别
- 理解类和对象的概念,以及两者之间的关系
- 掌握类的成员变量和成员方法
- 掌握成员变量和局部变量区别
- 掌握对象的创建过程和内存分析
- 掌握构造方法的语法、特点及构造方法重载
- 掌握基本数据类型传递和引用数据类型传递的区别
- 理解this的本质
- 理解static修饰属性和方法的作用
- 了解局部代码块、构造代码块的执行和作用
- 掌握静态代码块的的执行和作用
- 了解包的概念及好处,了解导包的概念
- 了解使用JavaDoc生成API文档
二、面向对象编程(进阶)
- 面向对象的三大特性
- 面向对象之--封装(Encapsulation)
- 访问权限修饰符
- 面向对象之--继承(Inheritance)
- Object类
- 方法重写Override
- super关键字详解
- 重写equals()和toString()
- 继承中对象创建的内存分析
- 组合
- 面向对象之--多态(Polymorphism)
- 向上转型
- 向下转型
- instanceof运算符
- 编译时和运行时详解
- final修饰符
- 抽象类和抽象方法(abstract)
- 接口的定义和实现
- JDK8的接口新特性
- 接口应用:内部比较器Comparable
- 内部类详解
- Java的内存管理与垃圾回收
学习目标
-
理解封装的好处和JavaBean的规范
-
掌握四种访问权限
-
理解继承的思想和好处
-
掌握重写的意义和规范,区分重写和重载
-
掌握super关键字的使用,以及super和this的区别
-
掌握继承体系下对象的创建过程和内存分析
-
了解继承和组合所表述的关系,合理的使用继承和组合
-
掌握多态的原理、发生多态的条件和多态的使用场合
-
掌握向下转型和向上转型,以及instanceof运算符的使用
-
掌握final关键字的使用和Object类中的常见方法
-
掌握抽象类和抽象方法的特点和使用
-
掌握接口的定义和实现,以及接口和抽象类的区别
-
了解面向接口编程思想,掌握比较器的运用
-
了解内部类的定义和特点
-
了解Java的内存管理和垃圾回收机制
三、异常机制
- 异常的概述
- 异常的执行过程分析
- try-catch-finally捕捉异常
- throw出现异常
- throws声明异常
- 异常继承体系
- 运行时异常和编译异常
- 自定义异常
学习目标
- 了解异常的结构体系和分类(Error和Exception)
- 了解Error错误类,以及常见的Error错误
- 掌握使用try-catch-finally处理异常并理解其执行过程
- 掌握使用throw抛出异常
- 掌握使用throws声明异常
- 掌握Exception体系
- 了解自定义异常类的定义和使用\
四、Java常用类
- Wrapper包装类
- 自动装箱和自动拆箱
- 包装类的源码分析
- String类的使用与内存原理
- String类的源码分析
- StringBuffer
- StringBuilder
- 字符串处理类性能分析
- Date类
- System类
- DateFormat类
- Calendar类
- Math类
- BigInteger类和BigDecimal类
- Random类
学习目标
- 掌握Java的八种基本数据类型的包装类
- 理解Integer类的源码
- 掌握String类的使用
- 掌握Stringbuffer和StringBuilder的常用方法
- 掌握Stringbuffer和Stringbuilder的区别和联系
- 理解String和StringBuffer的源码
- 掌握Date、DateFormat的使用
- 了解Calendar类
- 了解Math、Random类基本用法
- 了解BigInteger类和BigDecimal类的基本用法
- 了解枚举的特点和使用
- 掌握File类的使用
五、数据结构和算法
- 数据结构的概述
- 线性表
- 顺序表
- 链表
- 栈和队列
- 树
- 二叉树
- 二叉查找树
- 二叉平衡树
- 红黑树
- 图
- 冒泡排序
- 选择排序
- 递归
- 折半查找
学习目标
- 理解什么是数据结构及其分类
- 理解线性表的概念
- 掌握顺序表和链表的特点和优缺点
- 了解栈和队列
- 理解树和二叉树的概念
- 理解二叉查找树、二叉平衡树和红黑树的概念
- 了解图掌握冒泡排序
- 掌握选择排序
- 掌握递归的思想和使用
- 掌握折半查找
六、IO流
- IO流的概念
- IO流的分类及其原理分析
- 文件流FileInputStream、FileOutputStream
- 缓冲流BufferedInputStream、BufferedOutputStream
- 数据流DataInputStream、DataOutputStream
- 对象流ObjectInputStream、ObjectOutputStream
- 序列化和反序列化
- 转换流InputStreamReader、OutputStreamWriter
- 打印流PrintWriter和PrintStream
- 数组流ByteArrayOutputStream、ByteArrayInputStream
- 使用IO流复制文件夹
学习目标
- 了解IO流的概念以及分类
- 掌握文件流和缓冲流
- 理解数据流和对象流
- 掌握对象序列化和反序列化的实现和原理
- 了解其它IO流
- 掌握通过IO流实现文件夹的复制
七、多线程
- 进程和线程
- 线程的创建与启动
- 创建线程的三种方式对比
- 线程的生命周期
- 线程控制
- 多线程的安全问题与解决办法
- 线程的同步:同步代码块
- 线程的同步:同步方法
- 线程的同步:Lock锁
- 线程的死锁问题
- 线程通信
- Condition
- 线程的完整生命周期
- 线程池ThreadPoolExecutor
- ForkJoin框架
- ThreadLocal类
学习目标
- 理解进程和线程的概念及其区别
- 掌握多线程3种创建方式
- 了解多线程的控制方法
- 掌握多线程的生命周期
- 掌握同步的三种实现方式
- 了解死锁的概念
- 理解线程通信
- 掌握线程池
- 了解ForkJoin框架
- 理解ThreadLocal类
八、网络编程
- 计算机网络基础知识
- 网络通信协议
- OSI参考模型
- TCP/IP参考模型
- 数据的封装与拆封原理解析
- TCP协议
- UDP协议
- IP地址和端口号
- URL和Socket
- 使用TCP编程实现登录功能
- 使用UDP编程实现客服系统
- 使用TCP编程实现上传文件
学习目标
- 了解网络编程基础知识
- 了解OSI的七层参考模型
- 掌握数据的封装金额拆分原理
- 理解TCP/IP协议栈
- 掌握IP地址和端口号
- 理解TCP协议和UDP协议
- 能够使用TCP编程实现用户登录功能
- 能够使用UDP编程实现在线客服功能
- 能够使用TCP编程实现上传文件功能
1 、无论多高水平的程序员,在什么样的企业,你必须是一个代码规范的程序员,否则你将与人格格不入,甚至被上司开掉都是有可能的。
2 、不要盲目模仿代码,先想想我要做的是什么,最终是什么结果,可能用到我学过的哪些知识点,缕清思路,找到可能遇到的问题,确定实现顺序和初步的方案,写一连串的注释标明每步要做什么,然后再试着动手。
3 、明确重点不要面面俱到,这是学习很忌讳的,多数Java开发中我们只会用到20%不到的Java最重要的常用技术而解决80% 的企业开发遇到的问题,所以你不要什么技术点都用同样的时间去学习和实践。
4 、先思、再查、三问、后动手。我认为这是学习Java以及任何计算机编程语言比较好的方式,所谓先思就是遇到问题要让自己认真思考,想其中是什么问题,如何解决,为什么解决不了,最好确定初步思路,在最终想不通时,再查找资料(任何载体手段你都可以用);查也没有解决问题就去问,问老师,问同学,问Java先行者给你思路给你启示帮你解决问题,弄明白了别马上动手吧。
5 、找一个能促进你的人和真正帮助你的人。学习本是枯燥的,一个人总是孤独,你最好有个伙伴,他能够刺激你上进,对比着学。
6 、代码量,代码量,这个一定要保证,大量的敲代码,熟能生巧,JavaSE少于5万行代码,你还想做程序员,别做梦了。