01Java入门篇(D1_Java入门前的认知)

目录

学习前言

一、什么是编程?

二、计算机语言发展史

三、Java 编程?

四、使用Java编程的优势

1. 简单性

2. 面向对象

3. 分布式

4. 键状性/正确性

5. 安全性

6. 体系结构中立

7. 可移植性

8. 编译/解释性

9. 高性能

10. 动态性

五、Java的应用范围

六、Java语言之父

七、Java语言发展史

1991 年

1992 年

1993 年

1995 年

1996 年

1997 年

1998 年

1999 年

2000 年

2001 年

2002 年

2004 年

2005 年

2006 年

2009 年

2011 年

2014 年

2017 年

2018 年

2019 年

2020 年

2021 年

八、Java开发平台

1. JAVA三大平台介绍

a. JAVA SE

b. JAVA EE

c. JAVA ME

2. 选择哪个平台学习

3. 搭建JAVA SE平台

a. 到官网下载JAVA SE平台

b. 将下载好的压缩包解压

c. 配置环境变量

3.4 第一个程序的开发

4. 配置小结

九、Java 常用开发工具

1. 文本编辑器

2. 集成开发环境(IDE)

2.1 Eclipse

2.2 IDEA

ⅰ. 简介

ⅱ. IDEA项目结构

ⅲ. IDEA 常用快捷键

2.3 NetBeans:NetBeans

2.4 JCreator:JCreator

2.5 BlueJ:BlueJ

2.6 知识小结

3. 集成开发环境(IDE)?

3.1 什么是集成开发环境(IDE)?

3.2 IDE的作用和优势

3.3 IDE的种类和应用场景

3.4 如何选择适合自己的IDE?

3.5 知识小结

十、JDK & JRE & JVM之间的关系

十一、OracleJDK & OpenJDK

1. Oracle JDK

a. Oracle JDK 是什么?

b. Oracle JDK 版本如何选择?

ⅰ. Java SE 发布节奏以及不同版本的差距

1. Java SE 8 以及之前版本的发布节奏和不同版本的差距

a. 发布的版本区别

b. 发布周期

c. 版本的关系

2. Java SE 9 以及之后版本的发布节奏和不同版本的差距

a. 发布的版本区别

b. 发布周期

c. 版本的关系

ⅱ. Oracle JDK收费吗?

2. Open JDK

3. OracleJDK & OpenJDK有哪些区别

4. OpenJDK 和 OracleJDK 哪个jdk更好更稳定,正式项目用哪个呢?

5. 参考文献

十二、疑问 & 误解

1. 关于Java语言的常见误解

2. 什么是跨平台性?原理是什么

3. 什么是字节码?采用字节码的大好处是什么

4. 什么是Java程序的主类?应用程序和小程序的主类有何不同?

5. C++和java有什么区别?

6. 记事本编写代码常见问题

十三、知识拓展

1. cmd 常见命令


学习前言

本章文章视频快速讲解:Java入门前的认知_哔哩哔哩_bilibili

一、什么是编程?

目前我们要学习编程,我们就需要知道什么是编程,主流编程语言有哪些?

首先,编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。

抽象一点的说,编程就是我们使用一种编程语言来实现这些指令的编写,也就是说编写这些指令的过程,这些指令能够被翻译成计算机读懂的格式,最后由计算机执行。

像目前,主流的计算机编程语言包括C、C++、Java、GO、Python、数据库开发、其他等编程语言。

这些计算机编程语言是程序设计的最重要的工具,它们能够被计算机接受和处理、具有一定语法规则。

很多人认为编程是门高深莫测的学问, 担心自己学不来。

实际上, 编程虽然不是随便能学会的技能, 但是也没有那么难。

因为,  普通人已经具备了很多编程需要的基础,为什么这么说?

像我们日常使用的中文、英语一样,  编程语言也是一门用于沟通的语言.只不过"编程语言"是和计算机沟通的语言。

而"程序",  就是使用计算机能够理解的语言书写的一连串命令.而"编程"就是我们为了完成某项任务, 将解决问题的步骤, 用计算机能够理解的语言写成指令,  这就是"编程"。

而后, 计算机会根据这些指令一步步执行, 最后完成任务.

现在大家彻底明白编程这两个字的含义了吧?

现在我们已经理解什么是编程了,刚才我们也提到了计算机编程语言,现在笔者就带大家了解些计算机语言发展历史,以便于大家更好的理解计算机编程。Common On!

二、计算机语言发展史

一、机器语言

机器语言是使用二进制代码表示指令的语言,它是计算机硬件系统可以直接识别,并能真正理解和执行的唯一语言。

二、汇编语言

汇编语言是一种面向微处理器、微控制器等编辑器件的计算机语言。机器不同,汇编语言指令对应的机器语言指令集也不相同。

三、高级语言

高级语言接近人类自然语言,与机器情况无关,拥有自身特定的符号和语法规范,像笔者之前所说明的C、C++、Java、Go、Python等都属于高级语言。

三、Java 编程?

通过上一节,我们已经了解到Java是一门高级计算机编程语言后,现在就让我们正式踏入Java编程,哈哈哈,成为Java家庭的一名成员吧,现在有一句话怎么说呢,拥抱Java就等同于49年入国军。

现在让我们更深层次的了解Java编程,它是一种静态的、面向对象的强类型的高级编程语言,由Sun Microsystems于1995年推出。它广泛用于开发各种应用程序,包括Web应用程序、移动应用程序、桌面应用程序等。它的设计目标是让程序员可以编写一次代码,然后在不同的平台上运行。

也就是说,Java程序可以在不同的操作系统上运行,而无需重新编写代码。

为什么无需重新编写代码呢?原因很简单,这是因为Java程序被编译为字节码,而不是特定于某个操作系统的机器码。

字节码可以在Java虚拟机上运行,这是一个独立于操作系统的软件。

这种跨平台的能力使得Java成为一种非常流行的编程语言。

它也极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

这意味着它支持封装、继承和多态等概念。

这些概念使得编写复杂的程序变得更加容易。不仅如此,Java还有一个强大的标准库,其中包含了许多常用的类和方法,可以帮助程序员快速编写出高质量的代码。同时,它不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言还具有功能强大和简单易用等特征。

怎么理解Java虚拟机?

后续我会在JVM专栏带大家彻底理解Java虚拟机,因此这儿先让大家认识到Java的虚拟机思想的重要性!

Java的虚拟机思想就让一套程序运行在多种设备和操作系统上成为了可能。正是它的大一统思想,让java得到了全速发展。

现在我们已经了解到了Java编程,但是我们为什么要学习Java编程,而不是其它编程语言呢,接下来就让笔者好好去探讨下使用Java编程的优势在哪?它来啦!它来啦!它来啦!

四、使用Java编程的优势

1. 简单性

Java语言的简单性主要体现在三个方面,接下来就让我们来看一看,了解了解下!

1、Java的风格类似于C++,因而C++程序员初次接触Java语言,就会感到很熟悉。

从某种意义上讲,Java语言是C及C语言的一个变种,因此,C程序员可以很快地掌握Java编程技术。

2、Java摒弃了C++中容易引发程序错误的一些特性,如指针、结构、枚举以及内存管理等。

3、Java提供了丰富的类库,可以帮助我们很方便的开发Java程序。

忘记说了,笔者似乎没记错的话,学计算机的同学,大一时期的首门编程语言就是C吧,我相信大家也能理解到Java的简单性在哪吧。

2. 面向对象

Java语言作为面向对象的编程语言,提供了面向对象的四种基本性质:抽象性、封装性、继承性和多态性。

万事万物皆对象,Java面向对象编程是以人类最好理解的方向去编程(客观世界中的对象为中心)。

  1. 抽象是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。抽象性是面向对象编程中的一个重要特征,它允许程序员定义一个类,该类描述了一组对象共有的属性和方法,但不涉及具体的实现细节‌。
  2. 封装是指属性私有化,根据需要提供setter和getter方法来访问属性,隐藏具体属性和实现细节,仅对外开放接口,控制程序中属性的访问级别。
  3. 继承是指将多个相同的属性和方法提取出来,新建一个父类,java中一个类只能继承一个父类,且只能继承访问权限非private属性和方法,子类可以重写父类中的方法,命名与父类中同名的属性。
  4. 多态(Polymiorph)可以分为两种:设计时多态、运行时多态,设计(编译)时多态:

即重载(Overload),是指java允许方法名

相同而参数不同(返回值可以相同也可以不

同),同一个类中允许存在一个或多个以上

的同名函数,只要参数类型或参数个数不同

即可。

3. 分布式

Java作为面向对象编程语言,在设计时就设计成支持网络应用的分布式语言,既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以,用户可以产生分布式的客户机和服务器。

这里的Socket又称套接字(一种独立于协议的网络编程接口),所谓套接字就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。

一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。

那么,从java语言面向对象特点(前文已谈)来说,Socket就是第一个创建类,从编程上来说,大多时候是基于TCP(传输控制协议)/ UDP(用户数据报协议)等协议做的一层封装或者说抽象,是一套系统所提供的用于进行网络通信相关编程的接口,通过stream(流媒体技术)的传送,可实现服务端与客户端的链接。而这正是java语言分布性特点的体现。

当然,Socket编程,由专业的技术人员遵循严谨严密的逻辑来完成,这里不再赘述其基本流程。

提到这些专业术语和简单的逻辑关系,只是让有软件开发需求的用户,在计划开发软件时,大概地知道一些简单的技术功能、属性和逻辑关系,做到最起码的、简单地知悉。仅此而已。

另外,java作为计算机编程语言,其实也是“面向对象”的一种程序设计思想,因此,面向对象作为其主要特点之一,在软件开发过程中,可遵循以下七个原则展开。

参考本人设计模式专栏:

4. 键状性/正确性

一、健壮性

所谓健壮性,简单地将就是程序对于各种非法地输入能够有很好地处理,并且使程序能够正常地继续运行下去。

我们知道,一个程序通常有它的spec,我们可以理解为程序有它的目的与任务。

有了这目的与任务,程序的输入(或者说方法的输入参数)边有了要求。

那么当输入不符合spec要求时,考虑不周的程序往往会奔溃,而作为一名有良心的、优秀的程序员,怎么能容许这种情况发生呢。

我们要求程序再这种情况下,也能够正常地处理、运行。这样的性能,我们便将其称为健壮性。

好了,到此,我用“人话”解释了健壮性的含义,尽量使没有基础的小白也能理解。接下来,我继续介绍健壮性的相关性质。

健壮性有时也和容错性,可移植性,正确性有交叉的地方。

比如,一个软件可以从错误的输入推断出正确合理的输入,这属于容错性量度标准,但是也可以认为这个软件是健壮的。

一个软件可以正确地运行在不同环境下,则认为软件可移植性高,也可以叫,软件在不同平台下是健壮的。

一个软件能够检测自己内部的设计或者编码错误,并得到正确的执行结果,这是软件的正确性标准,但是也可以说,软件有内部的保护机制,是模块级健壮的。

软件健壮性是一个比较模糊的概念,但是却是非常重要的软件外部量度标准。

软件设计的健壮与否直接反应了分析设计和编码人员的水平。即所谓的高手写的程序不容易死。

但是,真的有这么简单么,开玩笑,这么简单就好了,列举以下事例:

1,我输入了负数

2,我的输入超出了double类型所能涵盖的范围

3,我输入了标点符号

4,我输入了中文

5,我没输入

6,我选择了取消或者点了右上角的关闭

这一切都是有可能发生的事件,而且超出了你程序的处理范围,这种事情本不该发生,但是程序使用时,一切输入都是有可能的,怎么办,你只能在程序中限制输入。

二、正确性

什么是正确性呢?我们知道,程序有其spec,用“人话”说就是程序应该达到什么任务(java中的spec指类的前条件、后置条件等)。

好了,你现在记住程序是有任务的。

既然有任务,那么程序往往对输入有要求,在代码中即表现为某个方法的输入参数是有限定的。

输入有限定,当输入是在我们限定的范围内时,我们的程序有义务给出正确的结果。

但是,当输入超出了我们的合理范围时,即输入不合理,这时程序在理论上可以做出任何反应,程序不必给出正确的反应。这就是,正确性。然而,在输入不合法时,一名有良心的程序员仍应该使得程序能够合理地应对不合法输入,这就是我上面说的健壮。

5. 安全性

编写消费类家用电子产品软件的语言,从一开始它就被设计成了写高可靠和稳健软件,并消除了某些编程错误,使得用它写可靠软件相当容易。

所以,Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。

也就是说,从Java语言的诞生起,就被赋予了安全性的特点。

首先,Java没有指针,这就使程序员无法得到隐蔽起来的内幕和伪造指针去指向存贮器。

尤为重要的一点是Java编译程序不处理存贮安排决策,因此,程序员不能通过查看声明去猜测类(关于类,前面的文章中已陈述)的实际存贮安排,所以,编译的Java代码中的存储应用在运行时,由Java解释程序决定实际存储地址。

从而可见,Java的存储分配模型是它防御恶意代码的主要方法之一。

其次,Java运行系统使用字节码验证过程来保证装载到网络上的代码不违背任何Java语言限制。

这个安全机制部分包含了类如何从网上装在。

比如,装载的类是放在分开的名字空间的而不是局部类,这就从根本上有了预防一些恶意小程序用他自己的版本来代替标准Java类。

正是基于以上两点,赋予了Java语言的安全性。

简而言之,就是Java的存储不由编译程序决策安排,而是由解释程序来决定,也就是说Java为Java程序提供了一个专用的运行空间,在这个空间里Java程序可做任何事情,但是,除了这个边界就不能有任何操作了。

这里,就有一个类载入程序体系即JVM(Java虚拟机),其作用主要是类载入程序,负责输入哪些定义运行程序的类和结构的二进制数据。JVM有非常灵活的类载入结构,它允许Java应用程序自己定义装载的方式。

同时,类载入程序结构时,给不同的类载入程序装入的类,提供了受保护的命名空间,这就组织了破坏性的代码干扰正常的代码,保障了Java语言的安全性。

Java语言的安全性主要体现在以下几方面:

一是严格遵循面向对象(关于“面向对象”前面的文章中已陈述)的规范,即封装了数据细节,只提供接口给用户,增加了数据级的安全性

二是无指针运算,增加了内存级的运算;

三是数组边界检查,有效防止了缓存溢出等安全漏洞;

四是强制类型转换,使非同类型的对象之间不能进行转换;

五是语言对线程安全的支持;

六是通过编译器、检验器、类装载器自动建立安全策略。

6. 体系结构中立

编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,就可以在许多处理器上运行。

Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。

精心设计的字节码不仅可以很容易地在任何机器上解释执行,而且还可以迅速地翻译成本地机器的代码。

7. 可移植性

软件可移植性是指软件从某一种环境转移到另一环境性的难易程度。

需要注意的是,这里所说的软件可移植性,指代码的可移植性,而代码的可移植性主题就是软件,因此,可移植性是软件产品的一种属性,它的行为表现为一种程度,这种程度与包括软件、硬件、组织在内的环境有关。

这里,作为一名具有多年软件行从业经验的兰州东方商易科技工作人员,结合自己的行业从业经验,删繁就简地谈谈软件可移植性。

从软件开发来说,可移植性是软件质量之一,良好的可移植性可以提高软件的生命周期。

说的再明白一点,就是软件可移植性具备了适应性、易安装性、共存性、易替换性、依存性等特征,那么,从用户角度来看,这些特点无疑是最适合自己的了,正如俗话所说,适合的就是最好的。

然而,软件开发作为新时代新业态中的新行业,人人都想抓住新机遇赚一把,于是就出现了鱼目混珠、龙蛇混杂的市场现象,大家都在说定制开发、大家都说做可移植性开发,但是,真正能做定制、做可移植性的又有多少呢?

恐怕屈指可数,因为一些所谓的软件开发企业,不管自己能不能做,都会说“完全可以”,其实,这可以的背后就是先把业务接过来,然后找能做的再转包,有的会转几次,最后还是兜兜转转地还是转到了那几个有技术团队和实力的公司手里,其实,这在业界来说,是大家心知肚明的事。只是用户因为对软件知识、性能方面的东西实

在有些复付之阙如,不明所以然,只能听之任之。

那么,了解了软件可移植性是软件质量之一,也就是提高软件生命周期的好处之后,可移植性究竟体现在哪些方面呢?了解了这一点,在做软件开发时,也就有了方向。下面,就以软件开发常用的java来做以说明。

植,也就是说任意一个java程序,不论它运行在何种cpu(中央处理器)、操作系统或java编译器上,都将产生同样的结果。

1、首先,源代码可移植性。

java作为一种编程语言,提供了一种最简单并且是人们最熟悉的可移植性,即源代码移。

因为java定义了严密的语意结构,使其它编程没有可选择的余地,这也是java特点之一的安全性所决定的。

2、其次,cpu可移植性。

技术开发人员基本都知道,大多数编译器产生的目标代码只能运行在一种CPU上,即使那些能支持多种CPU的编译器,也不能同时产生适合多种CPU的目标代码。假如你需要在三种CPU上运行同一程序,就必须得编译三次。

但java编译器就不同了,因为Java为Java程序提供了一个专用的运行空间,在这个空间里Java程序可做任何事情,由此产生一个类载入程序即JVM(Java虚拟机),而java编译器产生的目标代码(J-Code),正是源代码的转换,并在CPU–JAVA虚拟机(JVM)上运行,而且不止于此,还能运行于任何具有 JAVA虚拟机的机器上,这就是CPU是可移植性。

3、再次,操作系统可移植性。

对于这一方面,JAVA采用了提供一套与平台无关的库函数(包括AWT、UTIL、LANG等等)的方法来解决这个问题。就象JVM提供了一个虚拟的CPU一样,JAVA库函数提供了一个虚拟的GUI环境。

JAVA程序仅对JAVA库函数提出调用,而库函数对操作系统功能的调用由各不同的虚拟机来完成。

同时,java也在它的OS/GUI库中使用了一种“罕见名称符”(least-commom-denominator))来提供对某种特定操作系统的功能调用,即此功能只在特定环境下生效,而在其它操作系统下则被忽略。

如此,可以针对某操作系统生成并拥有人们熟悉的界面的应用程序,同时,此程序又能在其它系统下运行。

上述三点为java语言可移植性特点的具体体现,对于软件需求用户来说,大概熟悉这几方面主要的源代码、CPU、操作系统即可。

8. 编译/解释性

件可以在多个系统下运行的功能,并支持多线程,而这正是java语言的编译和解释性特点。

所谓编译型即编译型语言,也就是编译后的代码,可以直接被及其执行,而解释型即解释型语言,指编译后的代码不能直接被机器执行,需要解释器来执行,其本质原理是因为class文件是运行在java虚拟机中的。

当然java语言的编译型主要以c、c++为主,而解释型语言则以javascript、PHP、java等为主。

这里的c、c++、javascript、PHP、java是技术上的专业术语,作为软件用户来说,只是大概了解一以便与技术人员沟通,开发出能为自己真正赋能的产品,不至于使自己对于产品性能一无所知而已。

其实,java的编译性和解释性特点,通俗简单地说,就是java编译程序生成字节码(byte-coode),这个字节码并不是通常所说的机器码,它只是提供对体系结构中型的目标文件格式,将代码设计成可对多个平台的有效程

序,藉此,java程序可以在任何实现了java解释程序和运行系统(run-time  system)的系统上运行。那么,在一个解释型的环境中,程序开发的标准“链接”阶段就极大地消失了。

如果说java还有一个链接阶段,就是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,java支持快速原型和容易实验,它将利于快速程序开发,这与传统的、耗时的“编译、链接和测试”过程相比,形成了鲜明的

精巧开发过程。

这里,特别强调一下,java语言的跨平台性,要求平台上必须要有相匹配的java虚拟机,如果没有java虚拟机,则无法进行跨平台。

因为解释型语言中,java程序首先是通过编译器编译成class文件,如果在windows平台上运行,则通过windows平台上的java虚拟机(VM)进行解释。如在linux平台运行上,则通过linux平台上的java虚拟机进行解释执行。这

一点虽然技术人员会告诉你,但用户也要有所了解和知悉。

9. 高性能

Java作为一种跨平台的编程语言,具有很好的性能表现,并且可以在大规模应用程序中保持高效。

一、JVM

Java虚拟机(JVM)是Java高效性能的重要保障。JVM通过实时编译、垃圾回收和内存管理等机制,提高了Java应用程序的执行效率和资源利用率。

JVM还支持多线程并发处理,可以更好地利用多核CPU资源,并且保证对共享内存和锁的正确处理。

二、JIT编译器

Java的即时编译器(JIT)是Java高效性能的另一个关键因素。

JIT可以针对Java代码进行实时编译和优化,从而提高代码的执行速度和效率。

JIT根据代码的使用频率和重要性来进行优化,通常会将频繁执行的代码进行预编译和缓存,提高代码的执行效率。

三、内存管理

Java的内存管理机制也是Java高效性能的重要保障之一。

Java使用垃圾回收机制来管理对象的内存分配和释放,从而避免了常见的内存泄漏和空间碎片。

此外,Java的堆内存和栈内存分离,可以更好地避免内存溢出和安全问题,提高了Java应用程序的稳定性和可靠性。

四、多线程处理

1、Java支持多线程并发处理,可以更好地利用多核CPU资源和提高系统的吞吐量。通过多线程并发处理,可以将耗时操作和计算密集型任务分配到不同的线程中进行,从而提高了程序的响应速度和效率。

2、同时,Java还提供了同步机制和锁机制来保证对共享数据的正确访问和操作。

3、通过JVM、JIT编译器、内存管理和多线程处理等机制,Java可以更好地利用计算资源和保障程序的稳定性、可靠性。

通过以上介绍,我们可以了解到Java具有优秀的性能表现,并且可以在大规模应用程序中保持高效。对于Java开发人员来说,合理使用Java语言特性和优化技巧,编写高质量的Java代码,也是保证Java高效性能的重要措施。

10. 动态性

Java作为一种静态类型语言,其变量在编译时需要明确声明类型,并且类型检查是在编译时进行的。

然而,Java也具有一些动态特性,允许在运行时进行类型检查和动态处理对象。

下面是几个Java语言的动态特性以及相应的代码示例:

一、反射(Reflection)

Java的反射机制允许在运行时动态地获取类的信息并操作对象。

可以使用反射来获取类的构造函数、方法、字段等,并在运行时创建对象、调用方法等。

import java.lang.reflect.*;
 
public class ReflectionExample {
    public static void main(String[] args) throws Exception {
        Class<?> clazz = MyClass.class;
        Constructor<?> constructor = clazz.getConstructor();
        Object obj = constructor.newInstance();
        
        Method method = clazz.getMethod("myMethod");
        method.invoke(obj);
    }
}
 
class MyClass {
    public void myMethod() {
        System.out.println("Hello, reflection!");
    }
}

二、动态代理(Dynamic Proxy)

Java的动态代理允许在运行时动态地创建代理对象并拦截方法调用,可以用于实现AOP(面向切面编程)等功能。

import java.lang.reflect.*;
 
public class DynamicProxyExample {
    public static void main(String[] args) {
        MyInterface target = new MyImpl();
        MyInterface proxy = (MyInterface) Proxy.newProxyInstance(
                MyInterface.class.getClassLoader(),
                new Class[] { MyInterface.class },
                new MyInvocationHandler(target)
        );
        
        proxy.myMethod();
    }
}
 
interface MyInterface {
    void myMethod();
}
 
class MyImpl implements MyInterface {
    public void myMethod() {
        System.out.println("Hello, dynamic proxy!");
    }
}
 
class MyInvocationHandler implements InvocationHandler {
    private Object target;
    
    public MyInvocationHandler(Object target) {
        this.target = target;
    }
    
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("Before invoking myMethod()");
        Object result = method.invoke(target, args);
        System.out.println("After invoking myMethod()");
        return result;
    }
}

三、动态加载类(Dynamic Class Loading)

Java的动态类加载允许在运行时根据需要加载类。

可以使用Class.forName()方法或ClassLoader来动态加载类文件,并在运行时实例化对象。

public class DynamicClassLoadingExample {
    public static void main(String[] args) throws Exception {
        Class<?> clazz = Class.forName("MyClass");
        Object obj = clazz.newInstance();
        
        if (obj instanceof MyClass) {
            MyClass myObj = (MyClass) obj;
            myObj.myMethod();
        }
    }
}
 
class MyClass {
    public void myMethod() {
        System.out.println("Hello, dynamic class loading!");
    }
}

五、Java的应用范围

它被广泛用于开发Web应用程序,例如:Java  Servlet和JavaServer  Pages(JSP)。

这些技术可以帮助程序员在Web浏览器中呈现动态内容。

Java还被用于开发移动应用程序,例如Android应用程序。

Android是世界上最流行的移动操作系统之一,而Java是Android应用程序的主要编程语言。

虽然Java的学习曲线相对较缓。即使你没有编程经验,也可以通过学习Java来掌握编程技能。

目前市场上,Java有许多入门教程和学习资源可供使用,这些资源可以帮助初学者快速掌握基本的编程概念和语法,如果能够首选Java编程语言作为入行语言,这样以后学习其他编程也会显得得心应手!

  • Web 应用程序开发:Java 可用于开发各种类型的 Web 应用程序,包括企业级 Web 应用、电子商务平台和社交网络平台。
  • 移动应用开发:通过使用Java 可以进行 Android 应用程序的开发,Android 是目前全球市场份额最高的移动操作系统之一。
  • 大数据技术:Java 在大数据领域有着广泛的应用,包括分布式计算、数据处理和分析。
  • 游戏开发:Java 也可以用于开发桌面游戏和移动游戏,尤其是 Android 平台上的游戏开发。
  • 金融科技应用:Java 在金融领域有着重要的地位,被用于开发金融交易系统、银行软件和支付处理平台。

所以说Java作为一种多平台、可移植性强、安全性好的编程语言,在各个领域都有着广泛的应用。

文章走到走,笔者已经带领大家理解了什么是编程,什么是Java编程,学习Java编程的优势,笔者就好奇Java到底是谁开发的,经过笔者了解,原来Java之父是他,让我们进一步了解吧。

六、Java语言之父

我们清楚的明白Java编程语言之后,我们就该了解一下,Java语言之父是谁?

詹姆斯·高斯林

詹姆斯·高斯林(James  Gosling)出生于加拿大,是一位计算机编程天才。

在卡内基·梅隆大学攻读计算机博士学位时,他编写了多处理器版本的Unix操作系统,曾担任Sun公司Oak项目组组长,Oak后来改名为Java,所以他不仅是Java编程语言的共同创始人之一,外界也一般公认他为“Java之父”。

七、Java语言发展史

哎,好奇心,让笔者有了进一步深入了解的冲动,我觉得学习任何任何一门编程语言,就需要从这门编程语言的发展史来看,因为任何一门语言的诞生都有其诞生的意义。不管哪一种语言在一开始的时候都是不完美的,Java 也不例外。

接下来,让笔者带领大家去探讨探讨Java语言的发展史吧,以便于我们后面更好的理解Java这一门编程语言。

1991 年

Java 的历史要追溯到 1991 年, 由 Sun 公司带领的开发小组, 想设计一种小型的计算机语言,主要用于有线电视转换盒这类的消费设备。 由于这类设备的处理能力和内存都非常有限,所以语言就必须设计的非常小且能够生紧凑的代码。

另外,由于不同的厂商会选择不同的 CPU, 因此很重要的一点就是这种语言不应该与任何特定的体系结构绑定。

这个项目被命名为 “Green”。

Sun 公司的人都有 Unix 的应用背景, 所以开发的语言用了 C++ 为基础。

并把这种语言称为 “Oak”, 后来, Sun 公司的人后来发现, Oak 是一种已经有的计算机语言的名字, 于是, 将其改名为 “Java”。

1992 年

1992 年, Green 项目发了第一个产品,这个产品可以提供非常智能的远程控制,遗憾的是, Sun 公司对这个产品并不感兴趣。

1993 年

1993 年,Green 项目(新名字 “First Person 公司”)在一这一整年以及 1994 年上半年, 一直苦苦寻求买家购买他们的技术。

然后一个也没有找到, 然后在 1994 年,Frist Person 公司解散了。

而且在这一年,1994年4月20日,一条64K的国际专线从中科院计算机网络中心(NCFC工程)通过美国Sprint公司连入Internet,实现了中国与Internet的全功能连接。从此中国被国际上正式承认为第77个真正拥有全功能Internet的国家。

当这些在 Sun 公司发生的时候, Internet 的万维网也在日渐发展壮大, 当时的万维网关键是把浏览器超文本页面转换到屏幕上。

在 1994 年大多数都在使用 Mosaic, 这是 1993 年出自伊利诺伊大学超级计算中心的一个非商业化的 Web 浏览器。

在1994 年中期,Java 语言的开发者意识到, 要是能够建立一个相当酷的浏览器, 在客户/服务器主流框架中,浏览器恰好需要我们完成一些工作: 体系结构中立、实时、可靠、安全。这些问题在工作站环境中并不太重要。

所以决定开发浏览器。

1995 年

实际的浏览器是由 Patrick Naughton 和 Jonathan Payne 开发的,并演变为 HotJava 浏路器. HotJava 浏览器采用Java 编写,为了炫耀Java 语言的超强能力。这个浏览器可以在网页中执行内嵌的 Java 代码。 也就是 Java Applet。这一 “技术证明” 在 1995 年 5 月 23 日的SunWorld'95 大会上展示,同时引发了人们对他的追逐, 一直延续延续到现在。诞生几个月后, 就超过了 10 万人下载 Java 语言。

1996 年

1996 年初, Sun 发布了第一个 Java 1.0 版本。 但是这个版本 Java 1.0 并不能用来进行真正的应用开发。虽然后

来 Java 1.1 弥补了其中很多的不足和明显的缺陷。大大改进了反射能力, 并未 GUI 编程增加了新的事件处理模

型,单是它仍然有很大的局限性, 并没有为 Java的黄金时期到来做好准备。

JDK 1.0  开发代号为 Oak ( 橡树 )。

1997 年

1997 年 2 月, 发布了 Java 1.1。 JavaOne 会议召开, 参与者逾一万人, 创下了当时全球同类会员规模记录。

JDK 1.1  引入的新特性包括:

  • 引入JDBC(Java Database Connectivity);
  • 支持内部类;
  • 引入Java Bean;
  • 引入RMI(Remote Method Invocation);
  • 引入反射(仅用于内省)。

1998 年

1998 年 JavaOne 会议的头号新闻就是发布 Java 1.2 版本, 将这个早期玩具式的 GUI 和图形工具包括一些工具

包。

在这个版本发布的 3 天后, Sun 公司的市场部将它改名为更加吸引人的 “Java 2 标准版软件开发 1.2 版”。

也就在这个时候, 除了标准版(Standard Edition)J2SE 之外, Sun 公司还推出了另外两个版本:

一是, 手机嵌入式设备“微型版”(Micro Edition)J2ME。

另一个是用于服务器端的处理“企业版”(Enterprise Edition)J2EE。

JDK 1.2 开发代号为Playground(操场)

  • 引入的新特性包括:
  • 引入集合(Collection)框架;
  • 对字符串常量做内存映射;
  • 引入JIT(Just In Time)编译器;
  • 引入对打包的Java文件进行数字签名;
  • 引入控制授权访问系统资源的策略工具;
  • 引入JFC(Java Foundation Classes),包括Swing 1.0、拖放和Java 2D类库;
  • 引入Java 插件;
  • 在JDBC中引入可滚动结果集、BLOB、CLOB、批量更新和用户自定义类型;
  • 在Applet中添加声音支持。

1999 年

1999 年 4 月 27 日, HotSpot 虚拟机发布。

2000 年

2000 年 5 月 8 日, J2SE 1.3 发布。

JDK 1.3   开发代号为Kestrel(红隼)

  • 引入的新特性包括:
  • 引入Java Sound API;
  • jar文件索引;
  • 对Java的各个方面都做了大量优化和增强。

2001 年

2001 年 9 月 24 日, J2EE 1.3 发布。

2002 年

2002 年 2 月 26 日, J2SE 1.4 发布, 标准版 1.3 和 1.4 版本对最初的 Java 2 版本做出了增量式的改进,提供了

不断扩展的标准类库。

提高了性能, 并且还修复一些 bug。在这个期间, 原先对 Java Applet 和客户端应用的炒作逐渐消退, 但是

Java 则成为服务器应用端的首选平台。

并且在这个版本上出现了大量的开源框架。

JDK 1.4  开发代号为Merlin(隼)

  • 引入的新特性包括:
  • XML处理;
  • Java打印服务;
  • 引入Logging API;
  • 引入Java Web Start;
  • 引入JDBC 3.0 API;
  • 引入断言;
  • 引入Preferences API;
  • 引入链式异常处理;
  • 支持IPv6;
  • 支持正则表达式;
  • 引入Image I/O slot machine API。

2004 年

2004 年 9 月 30 日, 下午 18:00, J2SE 1.5 发布。 这成为了 Java 语言的里程碑,这个版本对 Java 语言做出了重大的改进,为了表示该版本的重要性, 这个版本原来定位 1.5 版, 在 2004 年的 JavaOne 大会之后, 版本直接升为 5.0,对外宣布 Java SE 5.0。

内部还是使用 Java 1.5。

这个版本加入了泛型的支持,另外受到了 C# 的启发, 还增加了几个很有用的语言特性:

for each 循环、自动装箱、注解、枚举、可变长参数等。

JDK 1.5  开发代号为Tiger(老虎)

  • 引入的新特性包括:
  • 引入泛型;
  • 增强循环,可以使用迭代方式;
  • 自动装箱与自动拆箱;
  • 类型安全的枚举;
  • 可变参数;
  • 静态引入;
  • 元数据(注解);
  • 引入Instrumentation。

2005 年

2005 年 6 月,JavaOne 大会召开,Sun 公司公开 Java SE 6。并且,对 Java 的各种版本进行更名,取消其中的数字“2”:

J2EE 改名为 Java EE,J2SE 改名为 Java SE,J2ME 改名为Java ME。单内部版本不变化还沿用之前的写法。一直延续至今。

这个版本没有对语言方面进行修改, 而是做了其他性能改进, 并增强了类库。

2006 年

2006 年 12 月, Sun 公司发布了 Java EE 6, 并且宣布, 将 Java 语言作为免费软件对外发布。

使用 GPL v2 (GNU General Public License v2) 协议下公开了源码。并且建立了 OpenJDK 组织对这些源码进行独立管理。

除了极少量的产权代码外(Encumbered Code,这部分代码大多是 Sun 公司本身也无权限进行开源处理的),OpenJDK 几乎包括了Sun JDK 的全部代码外,OpenJDK 的质量主管曾经表示,在 JDK 1.7 中,Sun JDK 和 OpenJDK 除了代码文件头的版权注释之外,代码基本上完全一样,所以 OpenJDK7 与 Sun JDK 1.7 本质上就是同套代码库开发的产品。

JDK 1.6  开发代号为Mustang(野马)

  • 引入的新特性包括:
  • 支持脚本语言;
  • 引入JDBC 4.0 API;
  • 引入Java Compiler API;
  • 可插拔注解;
  • 增加对Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持;
  • 继承Web Services;
  • 做了很多优化。

2009 年

JDK 1.6发布以后,由于代码复杂性的增加、JDK开源、开发 JavaFX、经济危机及Sun 公司收购案等原因,SUN公司在JDK发展以外的事情上耗费了很多资源,JDK的更新没有再维持两年发布一个主版本的发展速度。并且在 2009 年 4 月 20 日,被 Oracle 以 74 亿美元收购Sun 公司,取得了 Java 的商标版权(Java语言本身并不属于哪

个公司所有,它由JCP组织进行管理,尽管JCP主要是由Sun 公司或者说Oracle 公司所领导的)。也就在这两年 Java 的开发停滞了一段时间。一直到了 2011 年。

JDK 1.7  开发代号是Dolphin(海豚)

  • 引入的新特性包括:
  • switch语句块中允许以字符串作为分支条件;
  • 在创建泛型对象时应用类型推断;
  • 在一个语句块中捕获多种异常;
  • 支持动态语言;
  • 支持try-with-resources;
  • 引入Java NIO.2开发包;
  • 数值类型可以用2进制字符串表示,并且可以在字符串表示中添加下划线;
  • 钻石型语法;
  • null值的自动处理。

2011 年

2011 年 7 月,JavaSE 7 发布。但是很多规划在这个版本的特性,其中 Lambda 项目 ( Lambda 表达式、函数式编程)、Jigsaw 项目(虚拟机模块化支持)、动态语言支持、GarbageFirst 收集器和 Coin 项目(语言细节进化)等子项目都没有实现在这个版本中, 而是用了 Oracle公司实行的 “B计划”。

2014 年

2014 年 3 月,JavaSE 8 发布。 这个版本, 在近 20 年中这个版本变更最大, Java SE 8 包含了 “函数式” 编程方式,可以很容易的表述并发执行的计算。 这个版本也是现在企业中使用范围最广的一个版本。 就想一开始说的那样, 能跟上时代的进步, 就不会被淘汰。

JDK 1.8  开发代号是Spider(蜘蛛)

  • 支持 lambda支持;
  • 增强日期与时间API的功能;
  • 对垃圾回收的性能也进行了改进;
  • 并且移除了permgen区。
  • Lambdas表达式与Functional接口
  • 接口的默认与静态方法
  • 方法引用
  • 重复注解
  • 更好的类型推测机制
  • 扩展注解的支持

2017 年

2017 年 7 月,Oracle 公司将发布 JDK 9。这个版本算是比较大的调整,加入了很早之前就规划的模块化功能。

并且对整个 JDK 基于模块进行了重新编写。

Java 9 提供了轻量级 JSON API; 使用 G1 作为默认的垃圾收集器,替代了之前默认使用的 Paralel GC; 引入了 jShell 这个交互性工具。

并且全面支持 HTTP 2.0。

也就是在这一年,2017 年 8 月,Oracle 决定将 Java EE 移交给开源组织,最后 Eclipse 基金会接手。

由于甲骨文不允许开源组织用 Java 的名号,于是 Eclipse 选出了 "Jakarta EE" 和 "Enterprise Profile" 两个后续名字,最终前者以 64.4% 的票数获胜。也就是说,Java EE 已经正式更名为 Jakarta EE(雅加达)。

2018 年

从 2018 年开始, 每6个月就会发布一个 Java 版本, 以更快地引入新特性。这里又分为 LTS 版和最新版。

生产环境中最好只使用 LTS 版本, 因为这个版本更加稳定, 维护周期更长。

2018 年 3 月 21 日, Java 10 发布。

2018 年 9 月 25 日, Java 11 LTS 发布。

2019 年

2019 年 2 月 Java 12 发布

2019 年 9 月 Java 13 发布

2020 年

2020 年 3 月 17 日,Java 14 发布。

2020 年 9 月 15 日,Java 15 发布。

2021 年

2021 年 3 月 16 日,Java SE 16 发布。

2021 年 9 月 14 日,Java SE 17 LTS 发布。

这个是继 Java 11 之后的有一个长期支持版本, 并且直接支持到了 2029 年 9 月。这可能是下一个 Java 8。

所以学习的话, 可以直接学习这个版本。当然也可以直接学习 Java 17 这样的话, 对于工作来说 3 年之内不会有大的变化。

八、Java开发平台

现在我们通过Java语言的发展史后,让我们对Java编程语言有了更清晰的认知,接下来就让我们正式步入Java开发,不管学习哪一种编程语言,走入开发,都避免不了选择哪一个平台搭建。那么当今Java开发平台有哪些?选择哪个平台开始学习java编程?

据目前所知,当今Java平台分为三个体系:

  • JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
  • JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
  • JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)

1. JAVA三大平台介绍

a. JAVA SE

全称为JAVA Standard  Edition(也曾简称为J2SE)JAVA标准版或JAVA标准平台,是JAVA技术的核心和基础,同时

也是JAVA ME和JAVA  EE的基础。它提供了标准的JAVA开发工具包(JDK),通过它能够实现桌面应用程序、低端服

务器和JAVA  Applet程序等功能的开发,目前该平台官方已经更新到JDK23版本。

b. JAVA EE

全称为Java Enterprise Edition(也曾称为J2EE)JAVA企业版或JAVA  企业平台,通过它能够构建企业级服务应用。

实际上,JAVA EE包含了JAVA  SE,并在这个基础上添加了许多功能强大的类库,用于支持企业级别的业务开发如

目录管理、消息管理等,目前该平台官网最新版本为JAVA EE8。

c. JAVA ME

全称JAVA Micro Edition(也曾称J2ME)JAVA微型版或JAVA小型平台,与JAVA EE主要构建企业级应用相反,

JAVA  ME是一种很小的JAVA运行环境,它主要是应用在嵌入式的产品中,如移动电话,掌上电脑、电视机机顶盒

等,使得编译好的JAVA程序能够在上面执行,目前该平台官网最新版本为JAVA ME8。

2. 选择哪个平台学习

三大平台各有特点,但是共同点都是平台内部包含了JAVA  虚拟机,编译好的程序在平台执行的流程大致如下:

虚拟机将编译好的字节码文件加载到内存,然后采用解释执行的方式执行字节码(所谓解释执行即:

平台根据响应系统将字节码解释一条,执行一条,就跟初学英语时一样,老师每讲一句英语都会给你解释这句话的含义)。

既然三大平台处理的方式都是大同小异,那初学者该选择哪个平台学习更好呢?

根据官方书籍和无数实践证明,初学者最好先学习Java SE,选用它提供的软件开发工具包-JDK,它是学习和掌握Java知识的最佳平台,也是学习Java EE和Java ME的基础。

3. 搭建JAVA SE平台

a. 到官网下载JAVA SE平台

说明:从搭建开始提到的JDK指的是OpenJDK而不是Oracle JDK,至于为什么不用Oracle JDK主要原因是因为Oracle(甲骨文)公司在2023年08月30日宣布后续停止免费对JAVA SE8版本进行更新,商用的话需要进行购买,而Open JDK作为Oracle JDK的免费开源版本,更适合个人开发者使用(至于Oracle  JDK和Open JDK之间的事,要

扯起来能说半天,有时间再单独开一篇文章谈谈)

下载地址: JDK Builds from Oracle

Java JDK(Java Development Kit)是Java编程语言的核心组件,它提供了Java程序运行所需的环境。根据您的需求,以下是一些可供选择的Java JDK版本:

  • 长期支持版本(LTS):这些版本因其稳定性和长期支持而受到广泛推荐,适合需要稳定性和长期维护的项目。目前可用的LTS版本包括JDK 8、11、17、21。
  • 非LTS版本:这些版本提供了最新的Java语言特性,但可能不如LTS版本稳定。例如,JDK 23已经正式发布,它包含了一系列新特性和改进。

选择合适的JDK版本时,需要考虑项目的需求、团队的熟悉度以及所需的特性和性能。对于需要长期稳定运行的项目,LTS版本通常是更好的选择。而对于需要最新Java语言特性的项目,可以考虑使用非LTS版本。

注:本文演示使用JDK21版本

b. 将下载好的压缩包解压

将下载好的压缩包解压,可以查看到下面的目录

(注意:OpenJDK压缩包是绿色软件,既不需要安装即可直接使用)

名词理解:

1、msi文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据。MSI文件将程序的组成文件与功能关联起来。

2、exe是一个安装引导程序。msi需要Microsoft的一个服务支持(大概叫做Microsoft Installer,目前版本2.00),基本上只用于安装软件。

3、zip是一个压缩包。

总的来说,如下:

  • .exe是可执行文件,不一定是安装程序。
  • .msi是微软的新安装文件格式,它不是执行文件。
  • zip为嵌入版,新手建议使用前面两种方式。

c. 配置环境变量

配置环境变量:虽然解压后我们能够到指定的文件夹去执行对应的java.exe文件,但是,如果是想在电脑的任意一个目录下都可以调用刚刚解压的java jdk,那就需要将jdk的执行路径配置到系统的环境变量中。

配置环境变量可以通俗理解为身份证上的家庭住址,只要身份证上标记了这个地址,以后别人想要找你的时候,都可以直接通过这个地址去到你家找你。程序配置了系统环境变量,以后在执行关于jdk的相关命令时,会先根据配置的地址去找到对应的执行程序,然后执行对应的命令,这样就不会出现"既不是内部或外部命令,也不是可执

行程序…"的错误。

步骤一:此电脑 = > 属性 = 》高级系统设置

步骤二: 环境变量

步骤三:新增JAVA_HOME环境变量,值指向刚刚压缩好的openjdk目录

步骤四:在PATH变量中引入JAVA_HOME变量,并指向bin目录,格式:%变量名%\bin

步骤五:打开命令控制台(快捷键: Win键+R,输入cmd回车),输入:java -version查看安装好的JAVA版本

看到此处,先要恭喜你终于完成了JAVA SE平台的搭建,从现在开始,我们可以真正进入到JAVA程序的开发了,准备好大展身手了吗?

让我们先来完成第一个程序“Hello World”的搭建吧!

3.4 第一个程序的开发

1、创建一个名为HelloWorld.txt的文本文件,并添加入以下代码:

2、将文本HelloWorld.txt后缀名修改成java,然后在地址栏输入cmd回车进入命令控制台

3、编译、并执行JAVA程序,大功告成

注意:

知识拓展

1、class

Java是一种纯面向对象的编程语言,类就构成了Java程序设计的基本单位。一个Java程序可由一个或几个类组成。

2、path环境变量

path环境变量是系统环境变量的一种,它用于保存一系列的路径,每个路径之间以逗号分隔。

3、classpath环境变量

classpath环境变量也用于保存一系列路径。当Java虚拟机需要运行一个类时,会在classpath环境变量中所定义的路径下寻找所需的class文件和类包。

3、class文件

字节码文件,又称为类文件。它是一种独立于具体平台的、特殊的二进制文件。对于同一个字节码文件,可实现在不同的平台上运行。

4. 配置小结

这里主要介绍了关于JAVA的三大平台、如何搭建JAVA SE平台以及搭建第一个JAVA程序,初学者会感觉步骤稍微麻烦,但是这个搭建是永久性的,搭建完之后我们只需要关注JAVA程序编写而无需再关注环境的搭建,所以,之前的步骤都是值得的。

这里的HelloWorld程序案例的运行后大家会发现存在两个比较大的问题。

第一个是虽然程序运行了,但是还是没有了解这个程序是如何被运行的流程?

第二个是使用记事本编写程序比较麻烦,有没有更好的方式?

九、Java 常用开发工具

现在我们已经确认先选择Java SE 平台作为入门,紧接着就让我们正式踏入Java编程,先学会使用Java常用开发工具。

Java语言应尽量保证系统内存在1G以上,其它工具如下:

  • Linux 系统、Mac OS 系统、Windows 95/98/2000/XP,WIN 7/8系统。
  • Java JDK 7、8……
  • Notepad 编辑器或者其他文本编辑器。
  • IDE(Integrated Development Environment,集成开发环境):是含代码编辑器、关键词高亮、智能感应、智能纠错、格式 美化、版本管理等功能于一身的“高级代码编辑器”。(每个IT工程师都要有自己顺手的IDE,它是我们的武器,但是要理解无论是使用什么IDE编写出来的代码,本质上都是“白底黑字”的“纯文字”)

1. 文本编辑器

记事本、NotePad++、sublime . . .

2. 集成开发环境(IDE)

常见IDE工具:Eclipse、MyEclipse、IntelliJ IDEA、Jbuilder、NetBeans等等等

2.1 Eclipse

Eclipse官网:http://www.eclipse.org

一款免费开源的Java开发工具,提供强大的代码编辑、调试和部署功能。

它支持大量的插件和扩展,可以快速创建各种Java应用程序,包括企业级应用、桌面应用、Web应用等。

2.2 IDEA

ⅰ. 简介

IDEA官网:IntelliJ IDEA – the Leading Java and Kotlin IDE

一款流行的商业Java IDE,也提供了强大的开发工具和调试功能。它具有高效的代码编辑器、智能代码补全和重构

工具等,可以提高开发效率和代码质量。

ⅱ. IDEA项目结构

ⅲ. IDEA 常用快捷键
  • main/psvm、sout . . .:快速导入相关带啊吗
  • ctrl + D:复制当前行数据到下一行
  • ctrl + Y:删除所在行
  • ctrl + Alt + L:格式化代码
  • Alt + Shift + ↑,↓:上下移动当前代码
  • ctrl + /:单行注释
  • ctrl + shift + /:多行注释

2.3 NetBeans:NetBeans

另一款开源的Java IDE,提供了丰富的工具和插件,可以快速开发Java应用程序。它还支持多种编程语言,包括C++、PHP等。

2.4 JCreator:JCreator

一款简单易用的Java开发工具,适合初学者和中级开发者使用。

它提供了快速的代码编辑和调试功能,可以帮助开发者快速创建和部署Java应用程序。

2.5 BlueJ:BlueJ

一款专门为Java初学者设计的集成开发环境。

它提供了简单易懂的界面和交互式调试功能,可以帮助学生快速入门Java编程。

2.6 知识小结

这些工具可以提供完整的Java开发环境,帮助开发者快速创建、编辑、调试和部署Java应用程序。

同时,这些工具都支持多种操作系统,包括Windows、Linux和MacOS等。

在选择Java开发工具时,需要考虑自己的编程水平和实际需求。

初学者可以选择简单易用的工具,如BlueJ和JCreator,以快速入门Java编程。

中级开发者则可以选择更为强大的工具,如Eclipse和IntelliJ IDEA,以提高开发效率和代码质量。

以上就是本次对于Java编程使用软件的推荐。

3. 集成开发环境(IDE)?

作为程序员,我们经常会听到关于IDE(集成开发环境)的说法,但是对于不熟悉这个概念的人来说,IDE到底是什么?它的作用是什么?

为什么在软件开发中使用IDE会更加高效?在本文中,我们将深入探讨IDE的定义、作用和优势。

3.1 什么是集成开发环境(IDE)?

IDE是一种软件应用程序,它集成了多种开发工具和功能,旨在提高软件开发的效率和质量。

IDE通常包含源代码编辑器、自动完成、调试器和构建工具等功能。

IDE还可以提供各种插件和扩展,以满足不同开发需求。

3.2 IDE的作用和优势

一、提高开发效率

IDE的作用之一是提高开发效率。IDE提供了丰富的功能和工具,如代码自动完成、语法高亮、代码重构、调试器等,可以帮助程序员更快地编写和调试代码。

而且,IDE还可以自动管理代码库、构建工具和文档等,从而减少手动操作的时间和错误。

二、提高代码质量

IDE可以帮助程序员避免一些常见的编程错误,如语法错误、拼写错误、类型不匹配等。

此外,IDE还可以执行静态代码分析和代码重构等操作,帮助程序员优化代码结构和逻辑,从而提高代码质量。

三、提高团队协作效率

IDE还可以支持多人协作开发,例如通过版本控制系统、代码审查工具和任务管理工具等。

这些工具可以帮助团队成员协同工作,共同完成项目。

而且,IDE还可以自动执行构建和测试等任务,以确保代码的一致性和质量。

3.3 IDE的种类和应用场景

IDE有许多种类,每种IDE都有不同的功能和应用场景。例如,针对不同语言和平台的IDE有不同的特点。

下面列举一些常见的IDE:

  • Visual Studio:适用于Windows平台的IDE,主要用于C#、C++、Visual Basic、F#等语言的开发。
  • Eclipse:支持多种语言的IDE,例如Java、C++、PHP等。Eclipse还可以通过插件扩展功能,例如Android和Web开发。
  • IntelliJ IDEA:适用于Java开发的IDE,提供了丰富的功能和插件,例如Spring和Android开发。
  • Xcode:适用于macOS和iOS开发的IDE,支持多种语言和框架,例如Swift、Objective-C和Cocoa Touch。
  • Code::Blocks:一个跨平台的开源C++ IDE,支持多种编译器和操作系统。

3.4 如何选择适合自己的IDE?

选择适合自己的IDE需要考虑多个因素,例如开发语言、应用场景、个人偏好和团队协作等。

以下是一些选择IDE的建议:

  • 如果你是初学者,可以选择易于使用和学习的IDE,例如Visual Studio和Eclipse等。
  • 如果你是专业开发者,可以选择针对特定语言和平台的IDE,例如IntelliJ IDEA和Xcode等。
  • 如果你需要跨平台开发,可以选择跨平台的IDE,例如Code::Blocks和Eclipse等。
  • 如果你需要与团队协作开发,可以选择支持版本控制和任务管理等工具的IDE。

3.5 知识小结

IDE是软件开发中不可或缺的工具,它可以提高开发效率、代码质量和团队协作效率。

选择适合自己的IDE需要考虑多个因素,包括开发语言、应用场景、个人偏好和团队协作等。

通过使用IDE,程序员可以更加高效地编写和管理代码,从而提高软件开发的效率和质量。

十、JDK & JRE & JVM之间的关系

一、JVM

Java虚拟机(Java Virtual Machine),是可运行Java字节码文件的“虚拟计算机”,它相当于给各种实际运行平台包装上Java虚拟操作系统,Java字节码文件便可直接运行在此虚拟平台上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。。

二、JRE

Java运行环境(Java Runtime Environment),是执行Java程序必备的各种要素的集合,包括Java虚拟机和Java程序所需的核心类库等。

核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包。

如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

三、JDK

Java开发工具(Java Development Kit),是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE,除此之外,还包括许多开发和测试Java程序的实用工具。所以安装了JDK,就无需再单独安装JRE了。

如开发工具:编译工具(javac.exe),打包工具(jar.exe)等。

十一、OracleJDK & OpenJDK

1. Oracle JDK

a. Oracle JDK 是什么?

我们知道,JDK 是 Java Development Kit 的缩写,翻译过来就是 Java 开发工具包。

Oracle JDK 源自 Sun JDK(2009年 Oracle 收购 Sun),Oracle JDK 自然就是 Oracle 公司出品的 JDK。

所以 Oracle JDK 就是 Oracle 公司开发维护的 Java 开发工具包。

根据 Java Platform Group 产品管理高级总监 Donald Smith 在" Oracle JDK Releases for Java 11 and Later "中的描述:

因为本人英语烂到了令人发指的地步,为了避免浪费时间和不必要的翻译错误,这里就简单引用谷歌翻译的结果方便粗略理解:

理想情况下,我们会根据您的情况将所有 Oracle JDK builds 简单地称为 GPL 或商业许可下的 "Oracle  JDK",

但是,由于历史原因,尽管存在很小的差异,但我们将在 Oracle's OpenJDK builds 和 Oracle JDK  中分别引用它们。

根据以上内容,我们可以知道 Oracle JDK builds 实际上包括了一个开源版本的 Oracle's OpenJDK builds(基于 GPL 开源)和商业版本的Oracle JDK builds,但是因为其本身写法繁琐和对开发没有多大作用,外界一般把他们粗略称为Open JDK和 Oracle JDK。

所以由此可知,Oracle JDK 实际上有几种含义:

  • 由 Oracle 公司推出的商业 JDK (最常用)
  • 由 Oracle 公司推出的 JDK (Oracle JDK builds下所有的 JDK)
  • Oracle JDK builds

在大部分情况下的 Oracle JDK 指的是 Oracle 公司推出的商业版 JDK。

Oracle JDK官网:Oracle | Cloud Applications and Cloud Platform

b. Oracle JDK 版本如何选择?

说到 Oracle JDK 该怎么选择 ,这就不得不提到 Oracle JDK 发布的众多版本了。

要是有兴趣可以去 Java发展历程 看看 Oracle JDK 到底有哪些版本。

截止目前:2021年5月4日,Oracle JDK一共有17个大版本。

在众多版本中如何选择适合的版本进行使用,就成了一个比较头痛的问题。

要想知道究竟哪个版本适合自己,就必须得先了解一下 Java SE 的发布节奏以及每个版本间的差距。

ⅰ. Java SE 发布节奏以及不同版本的差距
1. Java SE 8 以及之前版本的发布节奏和不同版本的差距

根据 Java CPU and PSU Releases Explained里面的描述:

a. 发布的版本区别

CPU (Critical Patch Updates):关键补丁更新(CPU)包含对安全漏洞和关键错误的修复。

Oracle 强烈建议所有 Java SE 用户升级到最新的 CPU 版本。

Java SE CPU 版本是奇数版本(即7u71、7u65–请参阅此处有关Java SE版本编号方案的更多信息)。

PSU (Patch Set Updates):补丁集更新(PSU)包含相应 CPU 中的所有修复,以及其他非关键修复。

只有当您受到该版本中修复的其他错误之一的影响时,才应使用Java PSU版本。

Java SE PSU 版本是偶数版本,版本说明中列出了Java SE PSU 发行版中提供的其他修复程序。

PS:

  • Oracle 强烈建议所有 Java SE 用户升级到一个版本系列的最新 CPU 版本

大多数用户应该选择 CPU 版本。

  • 如果用户受到版本说明中所述的该版本中修复的其他错误之一的影响,则只能使用相应的 PSU 版本。
  • 随后的 CPU 版本将包含当前 PSU 的所有修复程序。
    因此,组织应在其环境中测试当前 PSU ,以预期这些修复将包含在下一个 CPU 中。
  • 从2014年10月开始,随着 Java SE 7u71(CPU)和 Java SE 7u72(PSU)的发布,Oracle 计划在 Java SE 7的每个 CPU 发布版本的同时,额外发布一个相应的 PSU 版本
b. 发布周期

Java 每两年发布一次,直到 Java 6于2006年12月23日在 Sun 下发布为止。

由于政治上的僵局,下一个版本是2011年7月28日发布的 Java 7。

在2012年3月7日于伦敦举行的 QCon 2012 大会上,前 Sun Microsystems 负责人、现任 Oracle Java 产品经理 Simon Ritter 承诺 Java将回到两年的发布周期。

但在2013年4月18日时,Oracle 公司 Java Platform Group 首席架构师 Mark Reinhold 在博客中表示:Oracle 计划将 Java 8 的计划发布推迟到明年,理由是为了修复 Java 的安全漏洞。

c. 版本的关系

版本内的更新:例如:Java 8 > Java 8u20 > Java 8u40,大多是对一些安全漏洞的修复和小型功能更新,版本间差距较小(除安全漏洞外)。

版本间的更新:例如:Java 6 > Java 7> Java 8,有较大修改、更新和安全漏洞修复,和传统版本一样,每一个数字的变动都是一次巨大的改革,版本间差距巨大。

2. Java SE 9 以及之后版本的发布节奏和不同版本的差距

根据 Java Platform Group 产品管理高级总监 Donald Smith 在" Update and FAQ on the  Java SE Release Cadence "中的描述以及Oracle Java SE Support Roadmap  的描述,提炼出我们需要的部分:从 Java SE 9 开始 Java 开启了一个新的版本控制和发布节奏模型。

a. 发布的版本区别

LTS版本(Long Term Support,长期支持版本),提供至少八年的商业支持(根据市场需要有可能会延长),到期后会被新的 LTS 版本取代。

non-LTS版本(non Long Term Support,非长期支持版本),提供六个月的商业支持,到期后会被新发布的版本取代。

b. 发布周期

整体发布周期为每六个月发布一版,其中:

LTS版本:每三年发布一版

non-LTS版本:每六个月发布一版

PS:

  • 当二者发布时间冲突时,优先发布LTS版本,non-LTS版本向后推迟一个周期。
c. 版本的关系

版本内的更新:例如:Java 11 > Java 11.0.1 > Java 11.0.2,大多是对一些安全漏洞的修复,版本间差距几乎没有(除安全漏洞外)。

版本间的更新:例如:Java 9 > Java 10 >Java 11更接近于从 Java 8 > 8u20 > 8u40,每六个月发布一次的 non-LTS 版本更像"主要版

本"的"功能发布",LTS版本更像是主要版本,而non-LTS版本更像是包含上一个LTS版本的测试版本,版本间差距较大。

ⅱ. Oracle JDK收费吗?

知道了 Java SE 发布节奏以及不同版本的差距之后,最能影响人们做出选择的应该就是价格问题了。

没错了,Oracle JDK 也是要收费的,不过并不是所有版本都收费,也不是所有用途都收费。

从 Java 的历史版本中我们可以看到一个有趣的现象,Java SE 8 这个标题出现了两次,分别是Java SE 8u202和之前版本和Java SE 8u211和之后的版本。

为什么会出现这个现象呢?

Java SE 8u201(CPU)/8u202(PSU)以及之前的版本使用的是 Binary Code License Java SE 8u211(CPU)/8u212(PSU)以及之后的版本使用的是 Java SE OTN License。

因为这两个许可证有着巨大的区别,所以硬生生的把 Java SE 8 硬生生分成了两个部分,根据这两个许可证长篇累牍的描述结合RednaxelaFX 在 Oracle 终于要向 Java 的非付费用户开枪了-怎么看?和采用java开发商业软件需要给Oracle付钱吗?两个问题的回答提炼出了几个要点。

许可证

免费学习

免费个人使用

免费开发

免费测试

免费商业功能

免费商业使用

免费在台式机/笔记本上使用

免费在服务器

上使用

免费嵌入式设备和其他计算环境上使用

Binary Code License

Java SE OTN License

-

PS:

  • 商业功能指的是 Oracle JDK 自带的 HotSpot VM 的启动参数中是否有  -XX:+UnlockCommercialFeatures,如果有 -XX:+UnlockCommercialFeatures  就代表启动了商业功能,这个功能默认是关闭状态,需要手动开启(在Java 11中被废除)。
  • Java Flight Recorder(JFR) 已经加入Open JDK 11,在Open JDK 11/bin下可以直接启动,或者在 HotSpot VM 的启动参数中加上
    -XX:StartFlightRecording。

采用 Binary Code License 的 Java 8u201/8u202及其之前的版本,个人使用和商用几乎都是免费的

(不使用商业功能和嵌入式设备的情况下)。

采用 Java SE OTN License 的 Java 8u211/8u212及其之后的版本,个人使用免费,商用就要购买许可证才可以

(虽然可以偷偷商用,不过那种操作就跟裸奔过雷区一样,你也不知道啥时候会灰飞烟灭,也不知道 Oracle 会不会等养肥了再宰)。

2. Open JDK

OpenJDK是一个开源的、免费的、可修改的Java开发工具包。

它是Java平台标准版(Java  SE)的一个开源实现,提供了Java开发所需的所有组件,包括编译器、调试工具、运行时环境等。

OpenJDK的目的是通过开源社区的参与和协作,提高Java平台的质量和可维护性。

Open JDK官网:OpenJDK

3. OracleJDK & OpenJDK有哪些区别

一、支持性不同

Oracle JDK 由 Oracle 提供技术支持,OpenJDK 由一个开源社区提供技术支持。

二、商业授权不同

Oracle JDK 具有商业授权,而 OpenJDK 是完全开源的。

三、可用性不同

Oracle JDK 是通过官方网站下载和购买的,OpenJDK 可以免费从多个网站下载。

四、功能不同

在一般情况下,Oracle JDK 和 OpenJDK 都具有相同的功能。

但是,Oracle JDK 可能附带一些 Oracle 特定的工具和功能,而这些功能可能不存在于 OpenJDK 中。

五、更新和版本不同

Oracle JDK 更新和版本的发布速度可能比 OpenJDK 快。

六、安全不同

Oracle JDK 可能会在安全方面提供更多的保证,因为它是由资源丰富的公司提供的。

而 OpenJDK 可能存在安全漏洞,因为它是由一个开源社区维护的。

4. OpenJDK 和 OracleJDK 哪个jdk更好更稳定,正式项目用哪个呢?

1、Oracle JDK大概每6个月发行一次主要版本,而OpenJDK大概每三个月发布一次(但这也不是固定的)。

2、OpenJDK是一个参考模型并且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的。

3、Oracle JDK比OpenJDK更稳定。Oracle JDK和OpenJDK的代码几乎相同。但Oracle JDK有更多的类和一些错误修复。

因此如果是开发企业或商业软件,建议选择Oracle JDK,因为它经过了彻底的测试和稳定。

某些情况下,有些人提到在使用OpenJDK遇到了许多应用程序崩溃的问题,此时,只需切换到Oracle JDK就能解决问题。

在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能。

4、Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本来获取最新版本。

5、Oracle JDK使用BCL/OTN协议获得许可,而OpenJDK根据GPL v2许可获取许可。

总的来说,OracleJDK相比OpenJDK更稳定,正式项目用的是OracleJDK。

5. 参考文献

十二、疑问 & 误解

1. 关于Java语言的常见误解

java作为当下的一门热门编程语言,在很多领域发挥着举足轻重的作用,

可是很多初学者或者非科班出身的小伙伴总是对于java有着一些这样或者那样的误解,

下面将列举出一些常见的误解,并给出相应的解释。

误解一:JavaScript是Java的简易版

JavaScript是一种可以在网页中使用的脚本语言,它由Netscape发明,最初的名字是LiveScript。

JavaScript的语法让人想到Java,另外名字也有些相像,但除此之外,两者并无任何关系。

尤其是,Java是强类型的,编译器能够捕获滥用导致的很多错误。

而在JavaScript中,只用当程序运行时才能发现这些错误,所以消除错误会更费劲。

误解二:java是解释性的,因此对于关键的应用程序速度太慢

早期的java是解释型的。

现在Java虚拟机使用了即时编译器,因此采用Java编写的“热点”代码运行速度与C++相差无几,有些情况下甚至更快。

误解三:所有的Java程序都是在网页中运行的

所有的Java applet都在Web浏览器中运行。这也恰恰是applet的定义,即一种在浏览器中运行的Java程序。

然而,大多数Java程序是运行在Web浏览器之外的独立应用程序。

实际上,很多java程序都在Web服务器上运行并生成用于网页的代码。

误解四:Java将成为适用于所有平台的通用性编程语言

从理论上讲,这是完全有可能的。但在实际中,某些领域其他语言有更出色的表现,比如,Objective  C和后来的Swift在IOS设备上就有着无可取代的地位。浏览器中的处理几乎完全由JavaScript掌握。Windows程序通常都用C++或C#编写。Java在服务器端编程和跨平台客户端应用领域则很有优势。

误解五:Java是HTML的扩展

Java是一种程序设计语言;HTML是一种描述网页结构的方式。

除了用于在网页上放置Java applet的HTML扩展之外,两者之间没有任何共同之处。

误解六:Java是一种非常容易学习的程序设计语言

像Java这种功能强大的语言大都不太容易学习。

首先,必须将编写玩具式程序的轻松与开发实际项目的艰难区分开来。

其次的话,Java类库包含数千个类和接口以及数万个函数。

虽然我们并不需要知道它们中的每一个,然而,要想利用Java解决实际问题,还是需要了解不少内容的。

误解七:Java只不过是另外一种程序设计语言

Java是一种很好的程序设计语言,很多程序设计人员喜欢Java胜过C、C++和C#。

有几百种好的程序设计语言没有广泛流行,而带有明显缺陷的语言(如C++和Visual Basic)却大行其道。

这是为什么?程序设计语言的成功更多地取决于其支撑系统的能力,而不是语法的精巧性。

人们主要关注的是:是否提供了有用、便捷和标准的库能实现你需要的功能?

是否有工具开发商能建立强大的编程和调试环境?

语言和工具集是否与计算机基础架构的其他部分整合在一起?

Java的成功缘于其类库能够让人们轻松完成原本有一定难度的事情,例如网络连接、Web应用和开并发。

Java减少了指针错误,这是一个额外的好处,因此使用Java编程的效率更高。但这些并不是Java成功的全部原因。

2. 什么是跨平台性?原理是什么

所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。

实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。(注意不是能在所有的平台上运行,关键是该平台是否能安装相应的虚拟机)。

我的总结:Java程序之所以能够实现跨平台运行,是因为它根本就不直接运行在任何底层平台上,而是需要在哪里运行,就在哪里(如Windows平台)事先准备好自己的Java平台,而这只是仅仅是安装和配置一个软件而已!

3. 什么是字节码?采用字节码的大好处是什么

字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文 件),它不面向任何特定的处理器,只面向虚拟机。

采用字节码的好处:Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解 释型语言可移植的特点。

所以Java程序运行时比较高效, 而且,由于字节码并不专对一种特定的机器, 因此,Java程序无须重新编译便可在多种不同的计算机上运行。

4. 什么是Java程序的主类?应用程序和小程序的主类有何不同?

一、什么是Java程序的主类

⼀个程序中可以有多个类,但只能有⼀个类是主类。

二、应用程序和小程序的主类有何不同?

  • 在Java应用程序中,这个类是指包含main()方法的类。
  • 在Java小程序中,这个主类是一个继承子系统类JApplet或Applet的子类。(这个本人很少使用,几乎用不到,做个笔录,如果友友们遇到了,可以利用笔者笔记连贯拓展)

应用程序的主类不一定要求是public类但小程序的主类必须是public类。主类是Java程序执行的入口点。

三、Java 应用程序与小程序之间有哪些差别?

简单说应用程序是从主线程启动(也就是 main() 方法)。applet 小程序没有 main() 方法,主要是嵌在浏览器页面上运行(调用init()或者run()来启动),嵌入浏览器这点跟 flash 的小游戏类似。

5. C++和java有什么区别?

C++和Java是两种广泛应用于软件开发的编程语言,它们具有不同的语法、特性和应用领域。

对于程序员和开发者来说,了解C++和Java之间的区别是重要的,因为这有助于选择适合的语言来满足特定的需求。

首先,C++是一种面向对象的编程语言,它具有强大的底层编程能力和高性能。

它是从C语言发展而来的,保留了C语言的特性,并增加了面向对象编程的功能。

C++的语法相对较为复杂,允许直接操作内存,提供了更多的灵活性和控制能力。

相比之下,Java是一种跨平台的、面向对象的编程语言。

它被设计成一种更简单、更易学的语言,具有更好的可移植性和可靠性。

Java通过Java虚拟机(JVM)来实现跨平台性,允许开发者编写一次代码,然后在不同的操作系统上运行。

Java的语法相对简单,具有自动内存管理(垃圾回收)的特性,更注重安全性和稳定性。

它广泛应用于企业级应用开发、网络应用、移动应用等领域。

在语言特性方面,C++具有更广泛的指针支持,允许直接对内存进行操作,这使得它在对硬件或系统进行底层编程时更加灵活。C++还提供了更多的底层数据类型和运算符重载的能力,使得开发者可以更精细地控制程序的行为。

在应用领域方面,C++在需要高性能和实时性的场景下更为常用,例如游戏开发、图形处理、嵌入式系统等。

而Java在需要跨平台和大规模应用开发的领域更为流行,例如企业级应用、服务器端开发、Android应用等。

此外,C++和Java在开发生态系统方面也有所不同。

C++拥有丰富的第三方库和工具支持,提供了大量的开发资源和社区支持。

Java也有庞大的生态系统,包括广泛的开发框架、库和工具,以及活跃的社区支持。

综上所述,C++和Java是两种不同的编程语言,它们在语法、特性和应用领域等方面存在一些区别。

选择使用哪种语言取决于项目需求、开发目标和个人偏好。

无论选择哪种语言,掌握其核心概念和特性,并不断学习和实践,都是成为一名优秀开发者的关键。

更细化的区分一下:

区别一:解释对编译

Java是一种解释性语言,意味着其在执行时会被“翻译”为二进制形式,也就是java跑得时候必须有人(jvm)去解释它。而C则是编译语言,意味着程序只能在特定操作系统上编译并在特定系统上运行,也就是说C一步到位成机器语言的。

区别二:内存安全

Java是一种内存安全型语言,意味着大家可以为给定数组分配任意参数,即使超出范围也只会返回错误提示。

C++更为灵活,但代价是一旦分配的参数超出资源范围,则会引起错误甚至严重崩溃。

区别三:性能

Java人气极高,但其代码由于需要在运行前进行解释因此性能表现更差。

C++会被编译为二进制形式,因此其能够立即运行且速度更快。

如果你写一个c++的程序和做同样事情的java程序,可能你感觉两者速度差不多。

但如果这两个程序都足够大、而且c的代码经过过优化,两者的速度差就会变得很显著甚至很惊人,C会比java快很多。

区别四:指针

指针是一种C++结构,允许您直接在内存空间中进行值管理。Java不支持指针,因此您可能使用值引用的方式进行值传递。

区别五:重载

重载是指对某种方法或者运算符的功能进行“重新定义”。Java允许方法重载,而C++则允许进行运算符重载。

了解了c++和java有什么区别,你觉得哪个更好呢?

其实笔者认为这两种语言各有各的优势,在目前看来,Java编程语言实用性更为广泛。

6. 记事本编写代码常见问题

新手小白用记事本编写 Java 入门程序需要注意的常见问题

  • 扩展名被隐藏
  • 文件名和类名不一致
  • 大小写错误,单词拼写错误,存在中文符号,找不到main方法
  • 括号不配对
  • 编译或者执行命令使用不当

十三、知识拓展

1. cmd 常见命令

新手小白入门需掌握的 cmd 相关命令

  • 盘符切换:D
  • 查看当前路径下的内容:dir
  • 进入单级目录:cd 目录
  • 回退到上一级目录:cd ..
  • 进入多级目录:cd 目录1\目录2...
  • 回退到盘符目录:cd \
  • 清屏:cls
  • 退出命令提示符窗口:exit

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W哥教你学后端

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值