跟着哪吒学Java,告别CRUD,搬砖工逆袭Java架构师,燥起来!
Java入门级概述

一、Java成名史

想要学好一门语言,一定要了解它的历史,了解它存在的价值和意义。

1991年成立了一个称为Green的项目小组,帕特里克、詹姆斯·高斯林、麦克·舍林丹和其他几个工程师一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用。

由于C++所具有的优势,该项目组的研究人员首先考虑采用C++来编写程序。但对于硬件资源极其匮乏的单片式系统来说,C++程序过于复杂和庞大。

为了解决困难,他们首先着眼于语言的开发, 对于新语言的设计,Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。

1994年将Oak语言更名为Java。

1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。

1998年12月8日,第二代Java平台的企业版J2EE发布。

1999年4月27日,HotSpot虚拟机发布。
2005年6月,在Java One大会上,Sun公司发布了Java SE 6。此时,Java的各种版本已经更名,已取消其中的数字2,如J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。

2009年,甲骨文公司宣布收购Sun。

2014年3月Oracle发布正式版JDK8,JDK8改进比较多,最大的改进是Lambda表达式(以及因之带来的函数式接口,很多原有类都做了变更,但能够与以往版本兼容,堪称奇功!),还有Stream API流式处理,joda-time等等一些新特性。

二、JDK 与 JRE

JDK:java development kit (java开发工具)

JRE:java runtime environment (java运行时环境)

JVM:Java Virtual Machine (java虚拟机)

1、jdk–开发环境(核心)

Java development kit的缩写,意思是Java开发工具,我们写文档做PPT需要office 办公软件,开发当然需要开发工具了,说到开发工具大家肯定会想到Eclipse,但是如果直接安装Eclipse你会发现它是运行不起来 是会报错的,只有安装了JDK,配置好了环境变量和path才可以运行成功。这点相信很多人都深有体会。

jdk主要包含三个部分:

第一部分是Java运行时环境,JVM

第二部分是Java的基础类库,这个类库的数量还是相当可观的

第三部分是Java的开发工具,它们都是辅助你更好地使用Java的利器jre–运行环境

2、jre–运行环境

① jdk中的jre

如下图:jdk中包含的jre,在jre的bin目录里有个jvm.dll,既然JRE是运行时环境,那么运行在哪?肯定是JVM虚拟机上了。另,jre的lib目录中放的是一些JAVA类库的class文件,已经打包成jar文件。

② 第二个JRE(独立出来的运行时环境)

如下图,不管是JDK中的JRE还是JRE既然是运行时环境必须有JVM。所以JVM也是有两个的。

3、JVM——转换环境

Java Virtual Machine (java虚拟机)的缩写。

大家一提到JAVA的优点就会想到:一次编译,随处运行,说白了就是跨平台性好,这点JVM功不可没。

Java的程序也就是我们编译的代码都会编译为class文件,class文件就是在jvm上运行的文件,只有JVM还不能完全支持class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。

JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改的运行。

JVM也是一门很深的学问,感兴趣的同学可以深入研究,只有好处,没有坏处。

其实有时候面试官问JDK和JRE的区别的目的不是想让你解释什么名词的,而是想看看你的基础和研究Java的深浅,还有另一方面就是你是不是经常喜欢问为什么。

三、语言的五大特性

1、万物皆对象
2、程序就是多个对象彼此调用方法的过程
3、从内存角度而言,每个对象都是由其它更基础的对象组成的
4、每一个对象都有类型,都可以进行实例化
5、同一类型的对象可以接收相同的消息
面向对象编程的最大挑战就是如何在问题空间的元素和解决方案空间的对象之间建立一对一的关联。

四、对象间的四种关系

1、依赖

依赖关系表示一个类依赖于另一个类的定义。例如,一个人(Person)可以买车(car)和房子(House),Person类依赖于Car类和House类的定义,因为Person类引用了Car和House。与关联不同的是,Person类里并没有Car和House类型的属性,Car和House的实例是以参量的方式传入到buy()方法中去的。一般而言,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。

2、关联

关联(Association)关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。在Java语言中,关联关系一般使用成员变量来实现。

3、聚合

聚合(Aggregation) 关系是关联关系的一种,是强的关联关系。聚合是整体和个体之间的关系。例如,汽车类与引擎类、轮胎类,以及其它的零件类之间的关系便整体和个体的关系。与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。

4、组合

组合(Composition) 关系是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期,组合关系是不能共享的。代表整体的对象需要负责保持部分对象和存活,在一些情况下将负责代表部分的对象湮灭掉。代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期。换言之,代表部分的对象在每一个时刻只能与一个对象发生组合关系,由后者排他地负责生命周期。部分和整体的生命周期一样。

五、封装、继承、多态

1、封装

封装就是把对象的属性和行为结合为一个独立的整体,并尽可能多的隐藏对象的内部实现细节。

2、继承

对象用来封装数据和功能,但我们要创建一个新类,然而它又与已存在的类具有部分相同的属性或功能,此时,为了代码复用原则,可以使用继承来实现。

继承通过基类和子类的概念来表达,基类的所有特征和行为都可以与子类共享。也就是说,你可以通过基类呈现核心思想,从基类继承的子类则为核心思想提供不同的实现方式。

有时基类和子类的方法都是一样的,这时你就可以直接用子类的对象代替基类的对象,这种纯替代关系通常叫做替换原则。

有时,子类会添加一些新的方法,此时就是不完美替换。

3、多态

通过将子类对象引用赋给父类对象引用来实现动态方法调用。

List list = new ArrayList();

跟着哪吒学Java,告别CRUD,搬砖工逆袭Java架构师,燥起来!
Java入门级概述

【哪吒社区Java技能树 打卡day2】Java学习路线总结(思维导图篇)相关推荐

  1. @override怎么加上去_不知道怎么学?java后端5年经验和技术总结(附思维导图)

    1.引言 今天的光棍节,经历了昨晚的疯狂之后,看着后台数据逐渐的趋于平稳,突然感觉身心疲惫,躺在椅子上,看着媳妇给我发的消息,同学群里在疯狂讨论昨晚的疯狂操作,身边的年轻人换了一批又一批,回想自己,毕 ...

  2. Java中函数及递归的使用(附思维导图)——java面试知识点

    引言 我相信能点到这里来的童鞋们对计算机编程中的函数肯定已经有或多或少的认知,首先我们需要知道的是:计算机编程语言中的"函数"和它隔壁领域--数学中的同名同姓的亲戚"函数 ...

  3. 用思维导图学习java_用思维导图纪录Java学习过程

    之前小编我给大家分享过一些Java学习相关的图片,比如 Java入门三张图够吗 ,这种图正是大名鼎鼎的思维导图. 思维导图又叫心智导图是表达发散性思维的有效的图形思维工具 ,它简单却又极其有效,是一种 ...

  4. 最新Java学习资料与思维导图分享,免费领取!

    很多学 Java 的同学时常会发现,在校时学了一套东西,到大公司面试时又是另一套东西. 其实,归根结底,还是本人缺少真正的实战经验,这里整理了一份系统化学习的思维导图(完整版文末领取),大家查漏补缺, ...

  5. [Java 并发] Java并发编程实践 思维导图 - 第一章 简单介绍

    阅读<Java并发编程实践>一书后整理的思维导图.

  6. java类与接口思维导图_详解java接口基础知识附思维导图

    接口: 官方的含义是---->java接口是一系列方法的声明,是一些方法特征的集合 疑问: 那为什么不用抽象类呢?把他们共有的方法集合起来放在一个抽象类里面,同样可以调用哇,但是反过来想一想如果 ...

  7. java思维导图源代码_如何使用思维导图解读java开源项目

    思维导图与java 思维导图是个很神奇的工具,它具有结构化.可视化.更接近人类大脑认知的特点. 我们在阅读项目的时候往往是无头无脑的随便看源码,其实这是种错误的学习的方法.学习得多注重积累,有输入就要 ...

  8. JAVA面向对象的思维导图

    JAVA面向对像做的一个简单的思维导图: 表格结构和类结构我们在现实生活中,思考问题.发现问题.处理问题,往往都会用"表格"作为工具.实际上,"表格思维"就是一 ...

  9. java中怎样导入图片6_java程序员进阶篇之必须掌握的6张思维导图!

    原标题:java程序员进阶篇之必须掌握的6张思维导图! <java程序员的自我修养>的作者是MindMaster思维导图社区用户芒果,作者整理了一系列学习java程序的笔记,方便java程 ...

最新文章

  1. Nature会议:驾驭植物微生物组(21年10月22-24,在线,优惠截止9月24日)
  2. 人人都应该掌握的9种数据分析思维
  3. Python进阶_wxpy学习:愉快的探索和调试
  4. Vlan和vtp重要的配置命令
  5. 2019.02.09 bzoj4455: [Zjoi2016]小星星(容斥原理+dp)
  6. Win10屏幕自带的截图,同时保存多个截图
  7. 图像的频谱图简单理解
  8. 为什么中国没有诞生世界流行的编程语言?
  9. 33张你没看过的酷炫化学动图, 秒懂化学反应原理!
  10. Android Studio Arctic Fox | 2020.3.1、Gradle 7.0升级记录
  11. 《前端框架Vue.js》
  12. delegation模式
  13. FCOS:Fully Convolutional One-Stage Object Detection 论文翻译(非解读)
  14. 用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程
  15. Revit二开--批量修改视图范围(revit宏)
  16. 思科证书申请 CCNA CCNP CCIE
  17. Ubuntu18.04鼠标闪烁、无线网卡不识别问题
  18. 无泪的眼神---上海街头真实的一幕!(转自 燕南社区)
  19. 一加手机·关闭应用双开储存空间
  20. ChinaSkills-网络系统管理002(国赛所提供完整软件包组)

热门文章

  1. 《Adobe Photoshop CS5中文版经典教程(全彩版)》—第2课2.6节替换图像中的颜色...
  2. 锤子android 7,锤子正式加入安卓7.1.1阵容 一加3/3T尝鲜氢OS公测版
  3. State Threads 回调终结者
  4. python的内存调优_python内存机制与垃圾回收、调优手段
  5. 51单片机汇编学习例程(7)——74HC595数码管篇
  6. 在 Java 项目中,如何使用 Error 日志更加方便排查问题,这才是正确姿势,非常实用!...
  7. GPT-3: 最强的人工智能?
  8. element-ui改变树形菜单小箭头
  9. python与分形0021 - 【教程】奥林匹克五环
  10. flashcache安装使用