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

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

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

猜你喜欢

转载自blog.csdn.net/weixin_44689154/article/details/105793443
今日推荐