admin管理员组

文章数量:1627745

从本篇开始,我将为大家带来一系列JAVA相关内容的分享,让我们走进Java,了解Java,爱上Java!希望大家持续关注。

一.Java发展简史

        Java的历史要追溯到1991年,由Patrick NaughtonJames Gosling(一个全能的计算机奇才,Sun公司会士)带领的Sun公司的工程师小组想要设计一种小型的计算机语言,主要用于像有线电视转换盒这类消费设备。由于这些消费设备的处理能力和内存都很有限,所以语言必须非常小且能够生成非常紧凑的代码。另外,由于不同的厂商会选择不同的中央处理器(CPU),因此很重要的一点是这种语言不应与任何特定的体系结构绑定。这个项目被命名为“Green”。

        代码短小,紧凑且与平台无关,这些要求促使开发团队设计出一个可移植的语言,可以为虚拟机生成中间代码。

        不过,Sun公司的人都有UNIX的应用背景。因此,所开发的语言以C++为基础,而不是Lisp,Smalltalk或Pascal。不过,就像Gosling在专访中谈到:“毕竟,语言只是实现目标的工具,而不是目标本身”。Goslin把这种语言称为“Oak”(这么起名大概是因为他非常喜欢自己办公室窗外的一颗橡树)。Sun公司的人后来发现,Oak是一种已有的计算机语言的名字,于是,将其改名为Java。事实证明这是一个很有灵感的选择。正因如此,詹姆斯·高斯林被称为“Java之父”。

二.Java“白皮书”关键术语

Java的设计者已经编写了颇具影响力的“白皮书”,用来解释设计的初衷以及完成情况,并且发布了一个简短的摘要。这个摘要用下面11个关键术语进行组织:

  1. 简单性;
  2. 面向对象;
  3. 分布式;
  4. 健壮性;
  5. 安全性;
  6. 体系结构中立;
  7. 可移植性;
  8. 解释型;
  9. 高性能;
  10. 多线程;
  11. 动态性。

2.1简单性:

Java语法像是C++语法的一个纯净版本。这里没有头文件,指针运算,结构,联合,操作符重载,虚基类等。然而,设计者并没有清除C++中所有不适当的特性,例如switch语句的语法在Java中就没有改变,如果你了解C++,就会发现捏可以轻而易举地转换到Java语法。

2.2面向对象:

这是Java最最重要的特性之一,众所周知,Java是一个面向对象的语言,万物皆对象。简单地讲,面向对象设计是一种程序设计技术。它将重点放在数据(即对象和对象的接口上)。用木匠打一个比方:一个“面向对象的”木匠始终首先关注的是所制作的椅子,其次才是所使用的工具;一个"非面向对象的"木匠主要考虑的是所用的工具。

面向对象基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。

程序就是由无数个对象+对象的行为组装而成,当程序请求某个对象时,实际上就是通过一个请求,将“你自己的对象”传递给程序,程序经过一系列匪夷所思的操作,再将一个新的对象返给你。从底层角度而言,每一个对象都是由其它对象组成的,只是它们的维度、粒度不同而已。每一个对象都有不同的属性。

比如芯片+电路板组成了内存,内存+硬盘+cpu+机箱组成了电脑,芯片、电路板、内存、硬盘、CPU、机箱、电脑,都是一个对象,只不过粒度不同罢了。

对象具有属性、方法,在内存中的地址都是唯一的。

2.3分布式

Java有一个丰富的例程库,用于处理想HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。

2.4健壮性

Web的多平台环境对程序有特别的要求,因为程序必须在各种系统中可靠地执行。因此,在设计Java时,使其具备创建健壮程序的能力被提到了高优先级的地位。为了获得可靠性,Java在一些关键领域进行了限制,从而迫使程序员在程序开发中及早地发现错误。同时,使程序员不必再担心会引起编程错误的许多最常见的问题,因为Java是强类型化的语言,它在编译时检查代码。

当然不管怎样,在运行时也检查代码。许多难以跟踪的bug,在运行时通 常难以再现,这种情况在Java中几乎不可能产生。因为使编写好的程序在不同的运行条件下,以可预见的方式运行是Java的关键特性之一。 为了更好地理解Java是多么健壮,分析程序失败的两个主要原因:内存管理错误和未处理的异常(即运行时错误)。

在传统的编程环境中,内存管理是一件困难、乏味的工作。例如,在C/C++中,程序员必须手动分配和释放所有动态内存。有时这会导致问题,因为程序员可能会忘记释放以前分配的内存,或者更糟糕的是,试图释放程序其他部分仍然在使用的内存。

Java通过为您管理内存的分配和释放,可以从根本上消除这些问题(事实上,释放内存完全是自动的,因为Java为不再使用的对象提供了垃圾回收功能)。传统环境中的异常情况通常是由“除0”或“没有找到文件”这类错误引起的,并且必须使用既笨拙又难以理解的结构对它们进行管理。Java通过提供面向对象的异常处理功能在这个领域提供帮助。

2.5安全性

Java取消了强大但又危险的指针,而代之以引用。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。

  1. 垃圾回收机制:不需要程序员直接控制内存回收,由垃圾回收器在后台自动回收不再使用的内存。避免程序忘记及时回收,导致内存泄露。避免程序错误回收程序核心类库的内存,导致系统崩溃;
  2. 异常处理机制:Java异常机制主要依赖于try、catch、finally、throw、throws五个关键字;
  3. 强制类型转换:只有在满足强制转换规则的情况下才能强转成功。

Java在字节码的传输过程中使用了公开密钥加密机制(PKC)。在运行环境提供了四级安全性保障机制:字节码校验器 -类装载器 -运行时内存布局 -文件访问限制

2.6体系结构中立

编译器生成一个体系结构中立的目标文件格式(.class),这是一种编译过的代码,只要有Java运行时系统,就可以在许多处理器上运行。Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。

精心设计的字节码不仅可以很容易地在任何机器上解释执行,而且还可以迅速地翻译成本地机器的代码。字节码实现了结构中立,与计算机结构无关。

2.7可移植性

Java语言之中最大的特点在于其可移植性的支持,所谓的可移植性指的是同一个程序可以在不同的操作系统之间任意的进行部署,这样就减少了开发的难度,在Java里面如果要想实现可移植性的控制,那么主要依靠的是JVM(Java Virtual Machine)。

Java虚拟机是一个由软件和硬件模拟出来的计算机,所有的程序只要有Java虚拟机的支持,那么就可以实现程序的执行,并且不同的操作系统上会有不同版本的JVM存在,这样就可以实现移植性。

2.8解释型

因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释型的。

Java的解释器可以在任何移植了解释器的机器上直接执行Java字节码。由于丽娜姐是一个增量式且轻量级的过程,所以,开发过程也变得更加快捷,更加具有探索性。

2.9高性能

即时编译器可以监控经常执行哪些代码并优化这些代码以提高速度。更为复杂的优化是消除函数调用(即内联)。即时编译器知道哪些类已经被加载。基于当前加载的类集,如果特定的函数不会被覆盖,就可以使用内联。必要时,还可以撤销优化。

2.10多线程

指的是这个程序(一个进程)运行时产生了不止一个线程。多线程可以带来更快的交互响应和实时行为。

2.11动态性

Java本质为静态语言,而不是动态语言。动态语言显著的特点是在程序运行时,可以改变程序结构或变量类型,典型的动态语言有Python、ruby、javascript等。Java不是动态语言,但Java具有一定的动态性,表现在以下几个方面:

  1. 反射机制;
  2. 动态字节码操作;
  3. 动态编译;
  4. 执行其他脚本代码;

三.Java术语 

1.JDK:Java Develoment Kit(Java开发工具包),是编写Java程序的程序员使用的软件。

2.JREJava Runtime Environmen(Java运行时环境),运行Java程序的用户使用的软件。

JDK = JRE + 开发工具集(例如Javac编译工具等)

JRE = JVM + Java SE 标准类库

一下图示可以较为清晰的显示三者之间的关系:

3.JavaSE:Java Standard Editon(标准版),用于桌面或简单服务器应用的Java平台。

注:例如,如果你看到“Java 9”,这就表示“Java SE 9”。

4.JavaEE:Java Enterprise Edition(企业版),用于复杂服务器应用的Java平台。

5.JavaME:Java Micro Editon(微型版),用于小型设备的Java平台。

6.JavaFX:用于图形化用户界面的一个备选工具包,在Java11之前的某些JavaSE发布版本中提供。

7.OpenJDK:JavaSE的一个免费开源实现。

8.Java2:一个过时的术语,用于描述1998~2006年之间的Java版本。

9.SDK:Software Development Kit(软件开发工具包),一个过时的术语,用于描述1998~2006年之间的JDK。

10.NetBeans:Oracle公司的集成开发环境。

四.配置环境变量

学习Java的第一步一定是配置环境变量,环境变量是什么?如何配置环境变量?为什么要配置环境变量,接下来一一解释:

4.0准备工作

在配置环境变量之前,我们需要做好准备工作,最重要的是下载一个JDK,里面包含了我们运行Java的工具。IDEA可以随后安装。(接下来的步骤并不需要IDE)。我安装的是jdk17。

4.1环境变量是什么?

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,如临时文件夹位置和系统文件夹位置等。

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

 因为我们总不能每次都进入到Java文件目录下运行程序,这样太麻烦了,因此我们需要在path路径上将指定路径拷贝过去,这样一来,系统就可以自动地索引到目标文件。

4.2如何配置环境变量?

打开我们的电脑设置——>搜索高级系统设置——>高级——>环境变量——>系统变量——>“三步走":CLASSPATH,JAVA_HOME,PATH

1.第一次设置的时候在系统变量之中你应该是没有CLASSPATH这个路径的,这时候哦新疆一个路径如图将CLASSPATH变量与变量值输入进去。 

2.在系统变量目录中找到JAVA_HOME这一路径,将你所下载的JDK路径粘贴上去:

找到你下载的jdk的bin目录下的页面,复制此页面的文件路径。

3.在Path路径中将我们的JAVA_HOME的bin添加进去,并且可以上移到第一位,越前表示索引速度更快。

%JAVA_HOME%\bin        或者

E:\Program Files (x86)\Develop\.jdks\corretto-17.0.11\bin

(%...%的作用就是取值,所以二选一即可)

4.检查配置是否成功:win+r键——>输入cmd——>输入java  -version

出现如下界面表示我们配置成功,版号为17.0.11。 

4.3第一个Java程序——HelloWorld!

接下来,我们开始写第一个Java程序——依旧是我们熟悉的Hello World。

(1).首先,在我们的Java_code文件下创建一个新的文本文件,命名为HelloWorld(务必注意大小写!)

接着将.txt后缀改为.java:

注:这里部分小伙伴可能没有文件标识符,这里一定要打开如下设置: 查看->显示->文件拓展名,隐藏的项目均打钩。

 

(2).接下来我们可以用记事本或者Notepad++(一种高级记事本)打开我们新建的文本文件(二者选其一即可) 。

接下来是代码示例:(以Notepad++为例)

 一定注意class后面的类名一定与文件名是完完全全相同的。还有注意大小写!

(3)在我们的文件路径下打开cmd:

这是我的代码文件路径:

然后在这个路径上直接输入cmd打开我们的命令行。

 

接着我们就会进入到命令行中,依次输入以下命令:

javac HelloWorld.java

java HelloWorld

 

这样我们就在屏幕上显示了我们的HelloWorld了。注意一定一定拼写上不要出错,第一步javac是编译过程,后面的文件名要有后缀.java,而后面的java是运行过程,后面不需要后缀。 

五.使用集成开发环境

 上文我们已经了解了如何从命令行编译和运行一个Java程序。这是一个非常有用的排错技能,不过对于大多数日常工作,还是应该使用IDE(集成开发环境)。这些集成环境非常强大和方便,这里我们推荐IDEA。

5.1.下载:

对于初学者而言,IDEA最好不要下载最新版,因为不一定足够健全和稳定,这里我下载的是

只要版本区间在2021.1到2022.1.4之间均可。

下载方式可以在IDEA官网上下载,会发现有两个版本,我们选择Community(社区版)即可。

5.2.使用

新建一个Java程序文件:

 打开我们的IDEA后按如下流程:

 新建项目完毕后,进入编辑页面后:

如图创建一个新的Java Class文件。  

 

这样我们就可以在IDEA中开始编写我们的代码了,还是刚才的HelloWord。

 

写完后ctrl+shift+F10运行程序,在终端中就打印出了我们的结果了。

5.3.界面设置

1.刚才第一步大家也许没有我所显示的界面而是直接进入编辑页面,这点是可以设置的。

在File Settings中我们可以设置许多我们所需要的功能。

 

2.文档注释

文档注释是Java一个独特的功能,可以在程序中采用特定的注释格式进行注释,然后通过JDK提供的工具javadoc来解析,生成一套以网页文件形式体现的程序说明文档。

同样也是在Settings中,接着找到File and Code Templates,在Includes中找到File Header,在其中输入按以下格式输入:

/**
*  Created with IntelliJ IDEA.
*  Description:
*  User:${USER}
*  Date:${YEAR}-${MONTH}-${DAY}
*  Time:${TIME}
*/

 // 在cmd中,使用javadoc工具从Java源码中抽离出注释

// -d 创建目录 myHello为目录名

// -author 显示作者

// -version 显示版本号

// -encoding UTF-8 -charset UTF-8 字符集修改为UTF-8

javadoc -d myHello -author -version -encoding UTF-8 -charset UTF-8 Test.java

 还是在我们的新创建的Test,java代码路径下输入cmd进入命令行,输入上述指令:

然后我们返回到我们的Test.java目录下就会发现新建了一个myHello文件:

 进入myHello中找到index.html文件:

打开之后 就进入了如下界面:

javadoc的常用标签(已标明出处):大家可自行根据需求选择添加。

要知道,养成良好的注释风格是一个程序员的必备素养,要刻意养成这一习惯。

更多的界面设置大家可以自行探索,例如快捷键设置,字体放缩,编辑界面背景,中文插件(不推荐),分割线等等一系列功能。这里不做过多赘述。

感谢您能观看至此,以上就是对刚入门小伙伴作了Java一些基本概念介绍和入门引领,制作不易,希望大家多多支持。同时也希望屏幕前的你能有所收获! 

本文标签: 必看基本概念新手入门Java