关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

答好友困惑:Java零基础如何入门,不知道怎么学,迷茫ING

guanshanw 2023-09-17 17:05 26 浏览 0 评论


前几天,我在知乎上看到一个提问,说是: 对于完全没有经验零基础自身的数学底子也很弱学习Java应该怎么学习呢 ?

提出问题的是一位高中生,就顺藤摸瓜加了我好友,让我给指点指点。给初学者一些信心是我该做的;给初学者一些指导,是我力所能及的;给初学者一些劝退,也是我要做的,毕竟很多人可能最后发现自己并不适合写程序。

期间这位老弟和我聊了很多,我都零零散散给了解答。直到前几天,他抛给我很多困惑,都是在初学的时候会面临到的,所以我就抽时间做了一次详细的解答,主要涉及到 Java从入门到进阶需要经历哪些如何学习Java入门还没开始实践就有一堆烦恼,该怎么办?

本文将以问答的方式,给出一些简单的见解,因为Java内容挺多的,可能会有遗漏,我已经让群里的小伙伴们做过一次筛选,读者朋友们看到了,也可以给我更多的补充噢。

知友:哥,我前两天也想了一些编程的问题向您请教请教吧,希望能得到你的帮助

第一个呢就是Java学习路线是什么,Java各个阶段需要学的知识点有什么,课程大纲,就是和课本上似的都有目录包含了所有的哪些知识点Java,从基础到入门再到精通应该如何学?先学什么知识点学什么?包含了什么知识体系Java里,辛苦你能不能和我仔细说说呢

答:

Java现在主要的领域是作为后端在应用,尤其是他的微服务领域,很多国内外知名的大厂都是使用Java作为后端,甚至有大V认为,在微服务领域Java无人能及。

所以,我们学习Java的目标就是把自己培养成微服务的人才。虽然,Android开发,部分前端也是用Java,但是结合你的实际情况,我还是建议往微服务领域走了,也就是Java后端。

Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装、继承、多态。

关于基础知识学习

学习基础知识,就是让你对Java语言有一个初步的了解,其实,任何语言的基础知识都是大同小异,包含基本的数据类型以及基本的面向对象知识,面向对象是重中之重,只有有了面向对象的知识,在后续的开发中才会有更好的成长。

基础知识包括(主要参考《Java核心技术卷》即可):

  1. 基本程序结构:基本变量类型、运算符、字符串、流程控制、数组
  2. 类与对象:类的定义和使用、静态属性和方法、继承、包管理、枚举、反射
  3. 接口和抽象类:接口的定义及实现、抽象类的定义及实现
  4. 泛型:泛型类、泛型方法
  5. 集合:集合接口、列表、Map、树、排序和查找
  6. 异常与调试:内置异常、声明异常、自定义异常、捕获异常、日志
  7. 多线程:多线程概念、使用线程、同步

关于Spring等学习

有了一定的基础知识,接下来就直奔主题,在这领域里,Spring就是需要学习的利器,下面是编写Spring相关,需要掌握的知识,可能不止,也可能有遗漏,后续可以再补充

  1. Maven:Maven与包管理、POM文件、生命周期等
  2. Spring Core:依赖注入与控制反转、Spring概述、Spring容器与生命周期、自动装配、注解装配、切面编程(AOP)
  3. HTTP协议
  4. JSON知识
  5. Servlet概念
  6. Spring MVC概念:配置Spring MVC、参数传递、实现REST、权限控制等
  7. RPC框架
  8. RESTFul

关于Spring的学习资料,推荐《Spring实战》,之前群里有人中奖,我赠送过一本

关于应用中间件的学习

这一部分,就是Java开发中常见的“中间件”,这些中间件涵盖了各个领域,包括持久化、缓存、队列、反向代理等,这些是完善一个程序的重中之重,前面属于基础框架,这个就是给框架里填充必要的东西,让程序健壮稳定。

主要包括但不限于

  1. MySQL:关系型数据库概念,数据库的CRUD操作
  2. MyBatis:OR映射概念,配置,映射,基本Java库,和Spring集成
  3. Redis缓存:缓存概念、Redis的使用
  4. NoSQL:NoSQL概念,Mongodb的使用
  5. 队列:队列概念,RabbitMQ、Kafka
  6. 反向代理:反向代理概念,Nginx的配置和使用
  7. Linux:远程连接Linux,Linux的常用命令

其他补充

其他的一些补充,主要是在于非技术相关,但是在往后的项目使用中,是肯定需要用到的。

  1. 开发工具:IDEA、Eclipse
  2. 版本控制工具:Git、SVN
  3. Docker容器:环境部署

大体上就分为上面的三个部分,但是每个部分都有很多小的部分,基础知识最容易,也是重中之重,因为后面所有的代码编写,没有基础知识,一些都执行不了。

问了这么多,写了这么多,还是不能停留在理论,最好的方式就是实践。

知友:第二个就是学习方法没有找到,不知怎么学,什么方法学起来很容易还不会忘记也不会不想学,我现在真的很迷茫,想学但是不知道该怎么学,特别是在你说的多实践敲代码问题上也就是第三点敲代码

我现在的顾虑就是不知道该怎么去灵活的敲代码,还有怎么才能做到编写代码很准确速度提上来呢现在吧脑子里还没有学究一想编写代码就无所适从,不知该怎么敲,心里就是觉得敲代码很困难,无法下手去敲,更别说多去实践了

还有就是在敲代码问题上如何才能按照给出的题意或者产品开发旨意编写出代码来呢?问这个就是我现在感觉这个很困难,之前在学校刚学c的时候根据课本源代码敲都敲错了,更别说布置的根据意思敲我直接不会,一想到这个我真的怕了所以才问自己适不适合,辛苦你了哥希望能给我仔细跟我说说

答:这几个连在一起回答。

Java开发也好,C语言也罢,还是其他的语言学习,都是需要实践的;这个你就把自己当成一名技术工人,泥瓦工也是经过千锤百炼才能造房子,包装工也是经历过千万次的包装才能做到得心应手。语言组织也是如此,作文就是一字一句积累起来的。

毕竟编程是一门技术活,不是靠单纯的体力活动能胜任的,所以,这个无他,唯有熟能生巧,才能达到写代码的地步。但是写代码这个要求太低了,还远远不够。

我经常和群友说,编程到最后并不是写代码,写代码是最最容易的事情。在写代码之前,还有需求分析,技术选型(选数据库,选中间件等),架构设计,流程设计,算法选择,这些都完成了,那你把这些转换成代码就是水到渠成的事情。

这里只是给出一个最终的目标,针对初学者,一开始不能好高骛远,也不能被困难所吓倒。我上面给了学习路线,你看明白了吗?所以,你现在心里有数,有没有被吓到,如果没有,那么请你仔细阅读《Java核心技术卷1》,把上面的基础知识都先掌握,出现的代码都在编译器上实践,一行一行编写,理解他。如果已经被打到了,那后面就没有什么事了,好好选择一个更好的出路即可。

等基础知识都慢慢地学会,然后再去找一些小Demo,比如说实现一个计算器,就能检验你的学习成果。写代码是一个循序渐进的过程,基础先学会,逐渐就有成就感,那后面的困难就迎刃而解,否则等到后面学习算法,项目时间,困难重重。

知友:再说个开发以外的吧,根据之前我也找到了自己的缺点应该在编程上会有障碍吧,我做事呢不考虑后果严重性,缺乏独立思考能力,反应速度慢了思考就慢,所以就不知该怎么做了,自己不会去独立思考,只有等着别人叫着做什么就做什么自己不敢眼事,也不会储存记忆,注意力不集中,认为小问题就不去想去揣摩,想要改变应该怎么改变呢?哥

我确实没怎么写过代码,之前没接触过也就跟着课本上照着写,我也忧虑不会编写,即使学了我就怕还不会敲代码不清楚怎么敲,就是从心里感觉到敲代码很困难

答:

写程序除了有技术能力之外,心境也是一大重点。下面,选择我之前学习《 左耳听风专栏 》的文章一些片段来给你解答。

这里先聊一下学习的方式,人的学习分为「被动学习」和「主动学习」两个层次。

  • 被动学习:如听讲、阅读、视听、演示,学习内容的平均留存率为 5%、10%、20% 和 30%。
  • 主动学习:如通过讨论、实践、教授给他人,会将原来被动学习的内容留存率从 5% 提升到 50%、75% 和 90%。

我们可以看到,你听别人讲,或是自己看书,或是让别人演示给你,这些都不能让你真正获得学习能力,因为你是在被别人灌输,在听别人说。

只有你开始自己思考,开始自己总结和归纳,开始找人交流讨论,开始践行,并开始对外输出,你才会掌握到真正的学习能力。

学习不仅仅是为了知道,而更是为了思考和理解。在学习的过程中,我们不是为了知道某个事的表面是什么,而是要通过表象去探索其内在的本质和原理。真正的学习,从来都不是很轻松的,而是那种你知道得越多,你的问题就会越多,你的问题越多,你就会思考得越多,你思考得越多,你就会越觉得自己知道得少,于是你就会想要了解更多。如此循环,是这么一种螺旋上升上下求索的状态。

在学习的过程中,我们要不断地问自己,这个技术出现的初衷是什么?是要解决什么样的问题?为什么那个问题要用这种方法解?为什么不能用别的方法解?为什么不能简单一些?……

这些问题都会驱使你像一个侦探一样去探索背后的事实和真相,并在不断的思考中一点一点地理解整个事情的内在本质、逻辑和原理。一旦理解和掌握了这些本质的东西,你就会发现,整个复杂多变的世界在变得越来越简单。你就好像找到了所有问题的最终答案似的,一通百通了。

学习是为了改变自己的思考方式,改变自己的思维方式,改变自己与生俱来的那些垃圾和低效的算法。总之,学习让我们改变自己,行动和践行,反思和改善,从而获得成长。

文末福利:

关注作者:私信 【 Java 】 白嫖Java初学者/零基础 全套学习资料!


觉得本文对你有帮助,请关注+转发,谢谢!

相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: