文章目录

  • 一 写在前头
  • 二 什么是Java
  • 三 什么是面向对象
  • 四 什么是抽象
  • 五 什么是封装
  • 六 什么是继承
  • 七 什么是多态
  • 七 Java能做什么
  • 八 Java延申的方向
  • 九 Java学习路线
  • 十 附一张Java技能扩展图

一 写在前头

  越来越多的人问我:Java该怎么学?过来人回过头来自然有很多话说,这里先说说我自己。

  2014年毕业,目前就职北京领驭框架软件,做过业务设计,做过混合开发,做过WEB开发,也做过服务框架设计。当下在参与在中信的凌云项目,主要从事核心业务框架开发并提供技术支持。

  自己的水平一般般,应付现有的工作应该是够了。一路走来,从懵懂无知到略有心得,支撑自己的是对所从事行业的一份热爱,更多应该是耐心和坚持。我始终相信“厚积薄发”,如果你想从事程序设计行业,那么请“慎重”!

二 什么是Java

  不管从事什么工作,首先你得知道你要做什么。很多人跟我聊天的时候,表达过想学习Java的想法,但是如果沿着这个话题略微聊下去,我发现大多数人并不清楚什么是Java,它能做些什么。

  这是一个很致命的问题,如果你并不清楚自己所学习的东西,在你未来的生活工作中所能发挥的作用,那么你很难坚持下去。

  无论如何,首先是你对Java有需求,然后才是讨论如何学习的问题。反之,为了学习某种技能而工作,我相信你很难会有足够的热情。举个很简单的例子,因为我想做游戏设计,所以我自学了Unity(当然Java也能做游戏设计,飞机大战什么的我是写过的)。

  Java是一门面向对象语言(Object-Oriented Language,OOL),如果你是学习过其他编程语言,或许上手会轻松很多。但如果从面向过程的设计经验转变到面向对象,反而会更加晦涩难懂。不论怎么说,Java始终是一门编程语言,只要是编程语言,那么就离不开语法,所有的编程语言其语法结构都大同小异,无非是数据类型、流程控制、字符串数组集合等等。

  面向对象则多了些新颖的东西,教材上的抽象、封装、多态和继承什么的我不想多说它们的定义,并非是这些东西在任何书籍或者网络上都能搜索到,而是实实在在的难懂,且高谈阔论毫无意义,下面我说点简单易懂的。

三 什么是面向对象

  学习Java之前,首先知道要什么是面向对象(Object Oriented,OO),说的高深点是一种软件开发方法,什么面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design),面向对象的编程(OOP,Object Oriented Programming)。说的直白点,就是对某一类事物的描述,还记得生物课上说过的“界门纲目科属种”?

  对象(Object)就是现实生活中的一个物件,死的活的、有的没的都算,这一类物件就是某种类型(Class)。所谓的面向对象就是把这些物件按某些特征进行分类,带翅膀会飞的叫鸟,长鳍带鳞片水里游的叫鱼。

  举个简单例子,男人女人都是人,老人小孩也是人。从不同的维度来说我有不同的类型,按年龄分我是个青年人,按性别分我是个男人,按品行来说我应该算一个好人(??存疑)。那么人就是一个类型(Java里对人的定义就是一个类Class),有鼻子有眼,有性别,有年龄,这些就是人的特性(Java里叫属性Field,也叫类成员),直立行走,会打架会骂人,这些就是人的行为(Java里叫方法Method),把人的属性和行为放到一起就是类了,所以说类就是一种类型。

  那么对象是什么?拿上面人的例子来说,你我他都是人,却有了各自不同的属性,你20岁女,我30岁男,但我们都能走路,都会打架骂人,都是哺乳胎生,都会思考人生,我们就是具体的人了,也就是传说中的一个类实例化出来的对象。

四 什么是抽象

  再说上面人的例子,什么叫人?人有哪些特性,有哪些行为,从分析这些问题到最后得出结论的过程就叫抽象,就是把实实在在的一类物件按属性和行为进行归类,这就是抽象。

五 什么是封装

  人不是会走路嘛,那么是怎么走路的?双脚站地,迈开步子,胳膊甩起来,这就是走路,把走路这件事情描述清楚,这就是封装。

六 什么是继承

  继续说人,人都有鼻子有眼,直立行走哺乳动物,那么这就是人最原本的定义了(Java里叫基类),好的我再把人分为男人、女人,男的有JJ,女的会生孩子,这是男人女人的区别,那么男/女人就是从人这个类型派生(派生、衍生、继承都一样,叫法不同而已)出来的,那么男/女人就是继承自人的,男人光有JJ是不够的,既然是从人继承过来的,按字面意义理解,自然而然的就有了人的属性(有鼻子有眼)和行为(走路撒尿啥的),这就是继承。

  所以说派生和继承是相对的,那么对于男人这个类型来说,人就是它的父类,它是人的子类。你可以说男人是人,但人不一定是男人。

七 什么是多态

  上面提到了人,人都会撒尿,那么男人站着尿,女人蹲着尿,尿尿的行为就变得不一样了,这就是多态(对同一行为的不同实现,Java里管这个叫方法的重写,重载不算多态)。

七 Java能做什么

  其实这个问题应该紧接着要学习Java的初衷说起,你之所以要学习Java,必然是因为Java能解决你的某些需求,而非我学习了Java所以只能解决这些问题,这个因果关系一定不要弄反了。

  Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序,甚至是游戏。但是一定不要忘了一件事,世界上那么多程序开发语言,有很多语言都能做到这些事情,那我们为什么要学习Java来解决这些问题呢?

  这又涉及到了Java与其他语言的区别了,Java的运行是基于虚拟机的,所以实现了跨平台特性,这就是传说中的一次编译,到处运行。其实现的原理在于虚拟机(JVM),比如说在Windows系统中,Java有一个针对Windows设计的虚拟机来执行Java代码,在Linux下,又有一个针对Linux设计的虚拟机来执行Java,所以Java具备了跨平台的特性(既然能跨平台,自然就具备了高度的可移植性,对这些概念的理解不需要死记硬背,了解其原理自然通透),这个特性优于其他语言,但也正是因为Java运行依赖虚拟机,所以执行效率又不如C、C++这些语言。

  Java语法简单,自带内存管理机制(垃圾回收,GC),无需程序员自行管理,这就使得代码编写变得简单,但是对内存的消耗也因此变得不可控,执行效率低及内存的不可控性,导致Java在游戏开发领域肯定敌不过C/C++等。

  Java对UI窗体设计的支持比较弱,所以天生敌不过C#。而服务端设计又不需要窗体设计,所以C#又敌不过Java了。

  Java开源(并非全部,自己百度),对Socket、Http的支持API丰富,学习成本低,面向对象的语言特性使得开发和维护变得更加轻松,有效的降低了设计成本,这就让企业更加的青睐。

  谷歌自从选择了Java作为安卓开发的首选,对其的推广更是不留余力,这也使得Java的学习风潮更甚。

  跨平台、开源及以上诸多特性,注定了Java更适合做服务端开发。说的更狭窄点,如果你选择Java,那么可以做Android开发设计APP,可以做WEB服务端开发网站搭建,可以做嵌入式开发冰箱燃气热水器的智能化,可以做分布式核心系统开发等等。

八 Java延申的方向

  选择不同的Java应用领域,那么其发展的方向也是不一样的,如果你选择用Java开发安卓应用,那么你需要更多的了解Android SDK,了解UI设计,了解网络协议、报文传输等,反而对服务端设计的认知深度没那么大的要求。

  如果你选择做WEB服务端,那么则需要对Http协议、数据库操作、Servlet/JSP等技术需要更深入的了解。

  如果你选择做分布式系统设计,那么你不仅要知道高可用高并发,系统间通信及还有性能优化等知识,对Java本身的了解也需要到达一定的深度,多线程并发,内存管理,Socket通信,IO/NIO传输等等。

  针对不同的使用场景,你可能需要学习不同的技能来配合Java,单单一门语言是应对不了所有需求的,尤其当下IT行业对程序员的全栈(就是啥都会)特质要求越来越高。

九 Java学习路线

  核心中的核心自然是Java本身,但无需过多了解,会用即可是最初的目标。

  针对所从事的业务方向,学习其他相关技能,把知识网构建起来,比如说我目前的工作,分布式系统核心框架设计,那么我需要充分的了解数据库知识,并发设计,性能调优等,所以更加针对性的需要我去了解Java对数据库的支持,对通讯的支持,越深越好。

  综上,就是一个横向和纵向的发展过程,横着来就是要学习其他技能搭配Java来解决问题,竖着来就是把这些技能用的越熟越深越好,最后一个合理的技能体系应该是一个“^”形状,顶尖的是Java,尖尖越高表明你的Java水平越深,两边越宽说明你涉猎的相关技能越广。

  最后,谨记——贪多嚼不烂,了解你真实的需求,通过上面的介绍,你是否真的需要学习Java,如果要,那么请坚持

十 附一张Java技能扩展图

我是如何走上Java开发这条路的相关推荐

  1. 我是如何走上前端开发这条路 并常年保持一线竞争力的

    我是怎么走上前端开发这条路? 首先,我是个文科生,大学里只学过vb,觉得计算机编程这东西太玄乎,不是我玩得转的. 后来机缘巧合去做了一家互联网创业公司的HR,阅了上千份程序员的简历,面了上百个不同水平 ...

  2. 蓦然回首,我是如何走上数据库开发这条路的?(二)

    生活哪里是一层一层上台阶或下台阶,生活分明是踩着一块浮冰去另一块浮冰,却永不知岸在何处. by 吕彦妮 蓦然回首,我是如何走上数据库开发这条路的?(一) 走过千山万水只为努力改变自己的命运,却不曾想生 ...

  3. 蓦然回首,我是如何走上数据库开发这条路的?(一)

    --我们最终都要远行,最终都要跟稚嫩的自己告别.by 海子 我只是一个普普通通的数据库开发工程师,从象牙塔离开的那一刻起就开始在社会这洪流中艰难前行.如今看着挂在胸前的工牌,思绪万千--这枚小小的工牌 ...

  4. 怎么更好的在php上走得更远,我是如何走上PHP开发这条路

    从刚开始接触PHP到现在不知不觉已八年有余,然往事历历在目,最开始为了学习PHP以致在宿舍中通宵看视频的情景恍如昨日,一台电脑.一个耳机.一盏台灯伴我走过了几百个个日日夜夜,回想起来真是"往 ...

  5. java获取当月有几天_你真的能在JAVA开发这条路上面一直坚持下去吗?

    JAVA为什么有前途? 过去的十多年,JAVA基本每年都是全世界使用人数第一的语言.全世界数百万的IT企业构建了庞大的JAVA生态圈,大量的软件基于JAVA开发. JAVA也被誉为"计算机界 ...

  6. 你真的能在JAVA开发这条路上面一直坚持下去吗?

    JAVA为什么有前途? 过去的十多年,JAVA基本每年都是全世界使用人数第一的语言.全世界数百万的IT企业构建了庞大的JAVA生态圈,大量的软件基于JAVA开发.JAVA也被誉为"计算机界的 ...

  7. 我是如何走上程序员这条道路的

    现实生活中估计有很多人和我有着相同的经历吧,或者也和我一样,面对过同样的选择,如果你是这样的,那么就恭喜你了,也许你能从我这篇文章得到一些启发,然后做出最正确的选择!以前我都不敢说自己是一名程序员,因 ...

  8. 为什么要走上程序员这条道路

    工作快一年了,我在自己的工作岗位上痛苦并快乐着.趁着项目进入测试阶段,想想自己为什么会走上程序员的道路. 我出生在农村,小时候放牛,玩泥沙,下河摸鱼(现在的河都没鱼了),农忙时作为重要劳动力.小时候的 ...

  9. 大专生JAVA的这条路

    一万元钱,借的!准备去北京继续学习. 我是一个大专生,不入流我学校!虽然我相信一个人的努力能改变命运!所以我一直都在努力的学习JAVA技术,希望能在这条路上走的更远!我有女朋友,对我很好,也很支持我! ...

最新文章

  1. mysql怎么滤空_《MySQL 入门教程》第 08 篇 过滤条件
  2. P4764-[CERC2014]Pork barrel【主席树,LCT,最小生成树】
  3. 从今天开始学习iOS开发(iOS 7版)-- 概论 (一)
  4. UITableview高度计算
  5. socket编程(十四)
  6. 360 无法显示网速
  7. 我的七年之痒与二人世界
  8. 我在你心中像什么糖?
  9. 新元宇宙每周连载《地球人奇游天球记》第十三回火星烧烤
  10. 用opencv和vc++6.0开发的五子棋游戏软件
  11. Discuz数据库调用:DZ模板调用常用代码手册
  12. Unity插件使用(2)_剖切插件CrossSection(HDRP)
  13. 6G网络潜在关键技术研究综述
  14. DDR4相比DDR3的变更点
  15. 学会python之后可以做哪些兼职?
  16. 分享个仙剑奇侠传九野挂机脚本,自动对战过关刷奖励
  17. 基于ACCESS在线考试自动组卷系统设计
  18. 关于DMS批量导入的注意事项
  19. 【PaperReading】Unifying Node Labels, Features, and Distances for Deep Network Completion
  20. iOS通itms-services://协议安装ipa,省去https环境的搭建

热门文章

  1. GA-B75M-D3V REV:1.1
  2. 蓝桥杯python:奖券数目
  3. zeromq: hwm; high water mark: 高水位线
  4. 【天梯赛】2021年真题(L1)
  5. mac系统打开ftp服务器,mac系统打开ftp服务器
  6. FPGA基础知识|芯片设计基础知识
  7. el-autocomplete控件出现 undefined问题
  8. vue h5 实现原生js悬浮球
  9. Linux 上功能强大的网络工具 tcpdump 详解
  10. 极速办公(PPT)里如何插入爱心形状