每次和其他人讨论的时候总会出现,别人说一个术语或者一个英文简称我总是一脸懵逼,脑袋里的想法就是:听过很多次这个词,但就是不理解是什么意思。所以总结了一下我遇到的一些词,并查询了一些资料终于把它们弄懂了。

目录

  • 1.JavaSE、JavaEE、JavaME
    • 1.1桌面应用程序
  • 2.JDK、JRK、JVM
    • 2.1编译器、解释器、编辑器、IDE
      • 2.1.1编辑器、编译器的区别
    • 2.2安装JDK后配置环境变量
  • 3.编码、解码、字符集
    • 3.1常见的字符集
    • 3.2出现中文乱码的原因
  • 4.接口
    • 4.1接口和抽象类的区别
      • 4.2面向对象和面向接口的区别
  • 5.API
  • 总结

1.JavaSE、JavaEE、JavaME

  • JavaSE:标准版,包含Java语言的基础核心。用来开发桌面应用程序
  • JavaEE:企业版,包含了JavaSE。用于开发企业级程序。例如web网站
  • JavaME:移动版,用于开发移动设备、嵌入式设备的应用。例如手机游戏

1.1桌面应用程序

桌面应用程序:从网上下载下来安装在电脑里的软件,不需要打开浏览器就能使用。例如QQ点击软件图标之后就会弹出一个QQ自己的窗口。

2.JDK、JRK、JVM

  • JDK:Java开发工具包。要开发程序必须使用,JDK中包含JRE
  • JRE:Java运行时环境。JRE中包含JVM,所以JVM不用单独安装
  • JVM:Java虚拟机。Java能够跨平台就是依靠Java虚拟机,如果没有虚拟机,写好的Java程序在任何电脑也运行不了。包含编译器、解释器。
    Java优点之跨平台:编写一次程序后便可在windows、mac、linux等平台运行(write once ,run anywhere),原理就是在不同平台安装相应的JVM,然后Java代码在虚拟机中运行即可。

关系图:

2.1编译器、解释器、编辑器、IDE

  • 编译器:将源文件(.java文件)编译成字节码文件(.class文件)
  • 解释器:执行字节码文件
  • 编辑器:编写代码的工具
  • IDE:集成开发环境,其中包含了编辑器、编译器,IDE将各种功能结合在一起让开发更加方便。也可以理解为IDE是加强版的编辑器,除了主要的可以打代码还有很多方便你打代码的功能。最明显的比如用记事本打代码就很枯燥很累而且不能编译,但你用一个IDE就可以帮你自动换行、检测错误、编译程序等待。常用的IDE例如 Visual Studio 、Eclipse

2.1.1编辑器、编译器的区别

编辑器是用来写代码的东西,例如记事本;编译器是一个指令,用来翻译代码的内容。所以从本质上讲这两个是不能比较的。

2.2安装JDK后配置环境变量

  • JAVA_HOME:翻译过来就是 Java的家 ,也就是指定JDK安装的位置

  • CLASSPATH:翻译过来就是 类的路径 ,也就是指定类库文件的位置

  • PATH:用来配置命令文件的位置

变量名 变量值
JAVA_HOME (新建) 安装JDK的路径
CLASSPATH (新建) JDK中lib目录的路径
PATH(已存在) JDK中bin目录的路径(在已有的变量值末尾添加)

若有多个版本的JDK,想要哪个版本就把哪个版本的路径放在前
bin文件夹:放 .exe文件(可执行文件)
lib文件夹:放 .jar文件(类库文件)

3.编码、解码、字符集

  • 编码:将字符转换为二进制的过程
  • 解码:将二进制转换为字符的过程
  • 字符集:编码和转码时采用的规则

3.1常见的字符集

  • ASCII:美国使用的,不支持中文,每个字符7位
  • ISO-8859:欧洲使用,不支持中文,每个字符8位
  • GB2312、GBK:中国使用的,支持中文(国标码)
  • Unicode:国际标准编码(万国码),包含所有语言和字符。具有多种实现:UTF-8(最常用)、UTF-16、UTF-32。区别在于存储字符的格式不同,占用的内存不同。

3.2出现中文乱码的原因

字符集设置不对

  • 没有使用支持中文的字符集
  • 编码和解码没有使用相同的字符集

4.接口

接口是规则的集合,要求实现了这个接口的类必须遵守这些规则。例如,人必须要吃饭、睡觉。面向对象的核心思想之一就是要模拟现实世界,那么在这个例子中就可以把“人”抽象成类,把“吃饭、睡觉”这些必须遵守的动作规定为接口,“人”这个类必须实现这个接口中规定的这些动作。

4.1接口和抽象类的区别

抽象类和接口看似差不多,但其实这两者的使用动机是不一样的。
       抽象类是表示这个东西是什么,例如汽车、飞机、轮船进行抽象得到的就是交通工具,那么它们的抽象类就是交通工具类(体现了复用)。
       接口表示的是这个东西能干什么,例如人、猫、狗都能够移动,那么就可以把“移动”定义成一个接口,然后人、猫、狗的类就都可以去实现“移动”这个接口(体现了多态)。
       一个类如果把抽象类和接口结合起来的话,一个类只能继承一个抽象类(人不可能同时是生物和非生物)来代表是什么的东西,但可以同时实现多个接口来代表能做哪些事情(吃饭、睡觉、走路)
       所以如果再纠结某个地方该使用接口还是抽象类时,那么可以想一想这个地方的动机是什么。

4.2面向对象和面向接口的区别

面向接口编程是面向对象的一部分,但是比普通的面向对象更高级一些。
       面向对象考虑的是类型封装,我理解的是更多考虑的是什么东西有哪些属性能干什么然后封装起来(有什么);面向接口更多考虑的是特征,我理解的是以特征的角度对事物进行抽象(什么类型)。
       例如,面向对象考虑什么是手机:屏幕+话筒+麦克风,手机可以用来打电话,但随着发展,智能手表也能打电话,智能手环也能打电话,这样一来对于手机的定义就有问题了。但如果把通话功能定义出一个接口,这个接口的规则就是,谁实现了这个具有通信功能的接口,它就是手机。手机、智能手表、智能手环都实现这个接口,那么它们都是手机。
       面向接口编程最根本的就是方便维护和扩展,符合了开-闭原则(对扩展开放,对修改关闭)

5.API

别人预先把一些复杂的操作写在一个函数里面,编译成一个组件,提供给其他人使用,从而只需要简单地调用这些函数就可以完成复杂的工作。在Java中API主要以类的形式提供,例如String、Thread、Date

总结

  • 在学习了编译原理之后再来看JVM、编译器、解释器等内容就清晰了很多。所以,有时候一些概念在第一次学习的时候不太理解不用太担心,等学得多了之后再回过头来看就能很轻松地理解了
  • 基础才是关键,正如上一点说的在第一次学的时候是会出现很多不理解的东西,可以暂时放一放,但一定不能再也补不上,否则永远都会成为一个弱点,每次需要到这个知识时只知道名字却不知道怎么用往往就会选择放弃使用。
  • 之前帮别人打了两个程序,在这过程中却出现了几个特别基础的知识点忘了怎么用,又只好重新复习。所以还是得多复习,多使用,温故而知新。
  • 在查找这些东西的资料时,出现了新的不认识的东西,于是又查找了新的内容。这个过程就像递归一样,原问题中有新问题,就不断递归查找新问题,然后解决新问题,再返回到原问题中,从而在理解了原问题的同时也学了更多新的东西。这也是学编程很重要的一点,递归解决问题比囫囵吞枣地解决一个问题进步大。

学习Java过程中那些知道名字却不理解含义的大集合相关推荐

  1. 在学习JAVA过程中,你遇到的最大的困难是什么?

    每个人都会在学习的期间,会遇到一些过不去的坎,那你们在学习期间都会遇到什么坎呢,java最大的困难是是什么呢? 初学Java的时候遇到了很多困难,相信有很多人跟我一样也遇到了这些困难,下面和大家简单聊 ...

  2. 学习Java过程中,复制多级文件夹出现的错误:文件拒绝访问

    错误详情(这是我的错误,细节处可能不一样,但是遇到的问题是一样的): Exception in thread "main" java.io.FileNotFoundExceptio ...

  3. 自己学习c++过程中写下的笔记,只做基础了解使用

    01书写helloworld #include <iostream> using namespace std;int main() {cout << "Hello W ...

  4. 学习编程过程中-->遇到的错误

    文章目录 学习编程过程中-->遇到的错误(吕招焕) 1.java.sql.SQLException: Parameter index out of range (2 > number of ...

  5. 机器深度学习的过程中盛传着7 个误解,我们来一一揭开

    https://www.toutiao.com/a6690402605824213508/ 2019-05-13 14:59:45 哥伦比亚大学计算机科学专业博士生Oscar Chang发博阐述了关於 ...

  6. 在学习EasyX过程中,遇到“没有与参数列表匹配的重载函数loadimage”,修改解决方案字符集属性无效后的解决方法

    在学习EasyX过程中,遇到"没有与参数列表匹配的重载函数loadimage"的问题,在网上查询后,很多人给出的方法是--修改解决方案字符集属性. 解决"E0304&qu ...

  7. 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)

    利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)   作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...

  8. nodejs开发 过程中express路由与中间件的理解 - pyj063 - 博客园

    nodejs开发 过程中express路由与中间件的理解 nodejs开发 express路由与中间件 路由 通常HTTP URL的格式是这样的: http://host[:port][path] h ...

  9. 学习python过程中的心得体会和收获,也说一下好处坏处

    首先,Python是一种流行的编程语言,用于数据分析.机器学习.人工智能等领域.Python的语法简单易懂,易于学习和理解.这使得它成为许多初学者的首选编程语言. 对于初学者来说,建议从基础开始学习, ...

最新文章

  1. Go 知识点(18)— 条件编译(编译标签、文件后缀)
  2. 在html中引入css、js和jQuery的方法
  3. Google App Engine技术架构之Google App Engine架构
  4. c++中#include“stdafx.h”
  5. 信捷伺服刚性调整_伺服系统增益协调的作用及举例说明,文末有伺服产品调试学习PPT!...
  6. 闭关休养or趁火打劫:疫情之下焦点行业网络威胁分析
  7. JavaScript总结(六)
  8. css隐藏元素的几种方法与区别
  9. Java -- 异常的捕获及处理 -- 范例 -- throw与throws的应用
  10. (2)机器学习_train_test_split
  11. 计算机一级windows系统操作知识点,计算机一级考试内容
  12. 软件测试缺陷报告分析,测试报告中的缺陷分析和测试结论应该怎么写?
  13. echarts饼图选中一块_echarts圆饼图设置默认选中项并在中间显示文字
  14. 注释里面 //TODO... 的作用
  15. 2020家用千兆路由器哪款好_什么路由器比较好(2020年最好千兆路由器)
  16. MLY翻译 -- 4.Scale drivers machine learning progress
  17. GA001-181-14
  18. 单片机入门学习笔记6:新唐单片机N76E003
  19. shell awk监控磁盘使用率
  20. 法和法律的概念、法的本质和特征(国家意志性、强制性 、利导性 、规范性)、法的形式 (宪法、法律、行政法规、地方性法规、自治法规、特别行政区法律、行政规章、国际条约)、法的分类(成文法和不成文法..)

热门文章

  1. 【Scipy优化使用教程】三、全局优化
  2. 数字故障录波器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. HTTP严格安全传输(HTTP Strict Transport Security, HSTS)chromuim实现源码分析(一)
  4. gmail附件调用_如何在Android版Gmail中添加附件
  5. ubuntu22下,笔记本电脑自带的鼠标滚轮不能使用的解决方法
  6. 计算字符串中各种字符的个数
  7. 途炫机器人泰坦中东_笑傲江湖泰坦机器人是国产的吗
  8. ROS节点获取TIA_go机器人传感器数据,并上传到指定服务器做深度学习处理
  9. Revit教程|如何用Revit做不规则的墙体?
  10. 【测试理论】如何做好探索性测试—基础篇