Java 基础-01 Java语言入门

在这里插入图片描述

Java 基础-01 Java语言入门

1.计算机基本概念

1.1 计算机概述

​ 计算机全称:电子计算机,俗称电脑。是一种能够安装程序运行,自动、高速处理海量数据的现代化智能电子设备
​ 由硬件和软件所组成,没有安装任何软件的计算机成为裸机。常见的形式有台式计算机、笔记本计算机、大型计算机等。

1.2 计算机组成

在这里插入图片描述

1.3 CPU、内存与硬盘

  • CPU(Central Processing Unit,中央处理器)

    • 人靠大脑思考,电脑靠CPU来运算、控制。
  • 硬盘(Hard Disk Drive)

    • 计算机最主要的存储设备,容量大,断电数据不丢失。
    • 正常分类:机械硬盘(HDD)固态硬盘(SSD)以及混合硬盘(SSHD)
    • 固态硬盘在开机速度和程序加载速度远远高于机械硬盘,缺点就是贵,所有无法完全取代机械硬盘。
  • 内存(Memory)

    • 负责硬盘上的数据与CPU之间数据交换处理
    • 具体的:保存从硬盘读取的数据,提供给CPU使用;保存CPU的一些临时执行结果,以便CPU下次使用或保存到硬盘。
    • 断电后数据丢失。

在这里插入图片描述

2.软件基本概念

2.1 软件概述

​ 计算机软件是使用计算机过程中必不可少的东西,计算机软件可以使计算机按照事先预定好的顺序完成特定的功能。
​ 一台计算机由:主板、CPU、内存、电源、显卡、磁盘等组成,这些是必须的,只要主机工作,这几样缺一不可。

​ 软件,即一系列按照特定顺序组织的计算机数据指令的集合。有系统软件应用软件之分。

系统软件:

在这里插入图片描述

应用软件:

在这里插入图片描述

2.2 人机交互方式

  • 图形化界面(Graphical User Interface,GUI),这种方式简单直观,使用者易于接受,容易上手操作。

  • 命令行方式(Command Line Interface,CLI),需要在控制台输入特定的指令,让计算机完成一些操作。需要记忆一些指令,较为麻烦。

2.3 常用的DOS命令

DOS(Disk Operating System,磁盘操作系统)是Microsoft公司在Windows之前推出的一个操作系统,是单用户、单任务(即只能执行一个任务)的操作系统。现在被Windows系统取代。

对于Java初学者,学习一些DOS命令,会非常有帮助。

进入DOS操作窗口:

  • 按下Windows+R键盘,打开运行窗口,输入cmd回车,进入到DOS的操作窗口。

    image-20220520100110104

常用指令:

  • 操作1:进入和回退
操作说明
盘符名称:盘符切换。E:回车,表示切换到E盘。
dir列出当前目录下的文件以及文件夹
cd 目录进入指定单级目录。
cd 目录1\目录2\…进入指定多级目录。cd atguigu\JavaSE
cd …回退到上一级目录。
cd \ 或 cd /回退到盘符目录。
  • 操作2:增、删
操作说明
md 文件目录名创建指定的文件目录。
rd 文件目录名删除指定的文件目录(如文件目录内有数据,删除失败)
  • 操作3:其它
操作说明
cls清屏。
exit退出命令提示符窗口。
← →移动光标
↑ ↓调阅历史操作命令
Delete和Backspace删除字符

4.计算机编程语言

4.1 计算机语言概述

  • 语言:是人与人之间用于沟通的一种方式。例如:中国人与中国人用普通话沟通。而中国人要和英国人交流,可以使用英语或普通话。

  • 计算机编程语言,就是人与计算机交流的方式。人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。

  • 计算机语言有很多种。如:C 、C++、Java、Go、JavaScript、Python,Scala等。

4.2 计算机语言的发展史

1.机器语言
机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义。
2.汇编语言
汇编语言是使用一些特殊的符号来代替机器语言的二进制码,计算机不能直接识别,需要用一种软件将汇编语言翻译成机器语言。
3.高级语言
使用普通英语进行编写源代码,通过编译器将源代码翻译成计算机直接识别的机器语言,之后再由计算机执行。

​ 高级语言按照程序设计方法的不同,又分为:面向过程的语言、面向对象的语言。

  • C、Pascal、Fortran面向过程的语言
  • C++面向过程/面向对象
  • Java跨平台的纯面向对象的语言
  • C#、Python、JavaScript、Scala…

4.3 编程语言的种类

在这里插入图片描述

1.C语言:万物之源

  • 诞生于1972年,由AT&T公司旗下贝尔实验室创建完成,用于构建Unix操作系统。

  • 偏向计算机底层操作(操作系统、网络、硬件驱动等)。

  • 优势:几乎所有现代编程语言都脱胎于C

  • 劣势:相当陡的学习曲线;不支持面向对象编程

2.C++语言:难学的语言

  • 诞生于1983年,作为C语言的增强方案、升级版本。C++是C语言的超集,C语言的大部分知识也适用于C++。
  • 用途:windows 或 MacOS UI、office全家桶、主流的浏览器、Oracle、MySQL、著名的游戏引擎(如星际争霸、魔兽世界)等
  • 优势:很多公司都用 C++ 开发核心架构,如 Google、腾讯、百度、阿里云等;面向对象性
  • 劣势:体系极为庞大,这是世界目前来说最复杂也是最难的编程语言。

3.C#语言:背靠大树的语言

  • 诞生于2000年,一款强大而灵活的编程语言。靠着微软这棵大树,是多年来windows平台的一门主流编程语言。
  • 用途:windows桌面应用开发、Windows Azure、游戏开发

4.PHP语言:最好的语言?

  • 诞生于1994年,一款服务器端脚本语言。最初表示个人主页(Personal Home Page)
  • PHP语法和C类似,有很多的模板和框架,简单易懂,也许你可以在短短几天做出web app。它主要用于web端,快速建站网络开发
  • 劣势:学习门槛太低;其代码运行速度低于大部分编程语言党争对手

5.Python:易学的语言

  • 诞生于1991年,一种面向对象的语言,虽然运行效率不高,但是开发效率非常高
  • Python被称为胶水语言,哪里都可以用。

6.JavaScript语言:前端为王

  • 诞生于1995年,网景公司开发完成。
  • JavaScript是JavaScript 是目前所有主流浏览器上唯一支持的脚本语言。在前端开发中,占有不可替代的地位。

7.Java语言:需求旺盛

  • 创建于1995年,Java是一种面向对象、基于类的编程语言。
  • Java可能是目前运用最广的项目语言。代码稳定性超过 C 和 C++,生产力远超 C 和 C++。有 JVM 在,可以轻松地跨平台。
  • 具有强大的开源开发工具,大量的开源共享库。
  • Java拥有世界上数量最多的程序员,最不缺人。

8.Go语言:夹缝中生存

  • Go 语言现在很受关注,它是取代 C 和 C++ 的另一门有潜力的语言。
    • C 语言太原始了,C++ 太复杂了,Java 太高级了,所以 Go 语言就在这个夹缝中出现了。
  • Go语言已成为云计算领域事实上的标准语言,尤其是在 Docker/Kubernetes 等项目中。
  • Go 语言语法特别简单,你有了 C 和 C++ 的基础,学习 Go 的学习成本基本为零。
  • Go社区从Java社区移植了各种优秀的框架或库。

总结:

  • 程序设计语言有很多种,每种语言都是为了实现某个特定的目的而发明的。
  • 没有“最好”的语言,只有在特定场景下相对来说,最适合的语言而已。
  • 如果你掌握了一种编程语言,也会更容易上手其它的编程语言。关键是学习如何使用程序设计方法来解决问题。这也是本套课程的主旨。

5.Java语言概述

5.1 Java概述

  • SUN(Stanford University Network,斯坦福大学网络公司 ) 1995年推出的一门高级编程语言。

  • 是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(applet),内嵌在HTML代码中。

  • 伴随着互联网的迅猛发展,以及Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。

5.2 Java语言发展史

起步阶段:

1991年,Sun公司的工程师小组想要设计一种语言,应用在电视机电话闹钟烤面包机等家用电器的控制和通信。由于这些设备的处理能力内存都很有限,并且不同的厂商会选择不同的中央处理器(CPU),因此这种语言的关键是代码短小紧凑与平台无关(即不能与任何特定的体系结构捆绑在一起)。

Gosling团队率先创造了这个语言,并命名为“Oak"(起名的原因是因为他非常喜欢自己办公室外的橡树)。后因智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。

随着20世纪90年代互联网的发展,Sun公司发现该语言在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。(Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。)

发展阶段:

发行版本发行时间备注
Java 1.01996.01.23Sun公司发布了Java的第一个开发工具包
Java 1.11997.02.19JavaOne会议召开,创当时全球同类会议规模之最。
Java 1.21998.12.08Java拆分成:J2SE(标准版)、J2EE(企业版)、J2ME(小型版)
Java 1.32000.05.08
Java1.42004.02.06
Java 5.02004.09.30①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME
Java 6.02006.12.112009.04.20 Oracle宣布收购SUN公司
2009.04.20Oracle公司收购SUN,交易价格74亿美元。
Java 7.02011.07.02
Java 8.02014.03.18此版本是继Java 5.0以来变化最大的版本。是长期支持版本(LTS)
Java 9.02017.09.22①此版本开始,每半年更新一次;②Java 9.0开始不再支持windows 32位系统
Java 10.02018.03.21
Java 11.02018.09.25JDK安装包取消独立JRE安装包,是长期支持版本(LTS)
Java 12.02019.03.19
Java17.02021.09发布Java 17.0,版本号也称为21.9,是长期支持版本。
Java19.02022.09发布Java19.0,版本号也称为22.9。

5.3 Java技术体系平台

  • Java SE(Java Standard Edition)标准版
    • 支持面向桌面级应用(如Windows下的应用程序)的Java平台,即定位个人计算机的应用开发。
    • 包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。
    • 此版本以前称为J2SE
  • Java EE(Java Enterprise Edition)企业版
    • 为开发企业环境下的应用程序提供的一套解决方案,即定位在服务器端的Web应用开发
    • JavaEE是JavaSE的扩展,增加了用于服务器开发的类库。如:Servlet能够延伸服务器的功能,通过请求-响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技术。
    • 版本以前称为J2EE
  • Java ME(Java Micro Edition)小型版
    • 支持Java程序运行在移动终端(手机、机顶盒)上的平台,即定位在消费性电子产品的应用开发
    • JavaME是JavaSE的内伸,精简了JavaSE 的核心类库,同时也提供自己的扩展类。增加了适合微小装置的类库:javax.microedition.io.*等。
    • 此版本以前称为J2ME

image-20230304174148937

注意:

Android开发不等同于Java ME的开发

5.4 Java特点

Java 语言是一种分布式的面向对象语言,具有面向对象、平台无关性、简单性、解释执行、多线程、安全性等很多特点。

1.面向对象

​ Java 是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有很好的支持。为了简单起见,Java 只支持类之间的单继承,但是可以使用接口来实现多继承。使用 Java 语言开发程序,需要采用面向对象的思想设计程序和编写代码。

2.平台无关性

​ 平台无关性的具体表现在于,Java 是“一次编写,到处运行(Write Once,Run any Where)”的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是 Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不需要重新编译。

3.简单性

​ Java 语言的语法与 C 语言和 C++ 语言很相近,使得很多程序员学起来很容易。对 Java 来说,它舍弃了很多 C++ 中难以理解的特性,如操作符的重载和多继承等,而且 Java 语言不使用指针,加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单。

4.解释执行

​ Java 程序在 Java 平台运行时会被编译成字节码文件,然后可以在有 Java 环境的操作系统上运行。在运行文件时,Java 的解释器对这些字节码进行解释执行,执行过程中需要加入的类在连接阶段被载入到运行环境中。

5.多线程

​ Java 语言是多线程的,这也是 Java 语言的一大特性,它必须由 Thread 类和它的子类来创建。Java 支持多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有自己的 run() 方法,要执行的方法就写在 run() 方法体内。

6.分布式

​ Java 语言支持 Internet 应用的开发,在 Java 的基本应用编程接口中就有一个网络应用编程接口,它提供了网络应用编程的类库,包括 URL、URLConnection、Socket 等。Java 的 RIM 机制也是开发分布式应用的重要手段。

7.健壮性

​ Java 的强类型机制、异常处理、垃圾回收机制等都是 Java 健壮性的重要保证。对指针的丢弃是 Java 的一大进步。另外,Java 的异常机制也是健壮性的一大体现。

8.高性能

​ Java 的高性能主要是相对其他高级脚本语言来说的,随着 JIT(Just in Time)的发展,Java 的运行速度也越来越高。

9.安全性

​ Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防止恶意代码的攻击。除了 Java 语言具有许多的安全特性以外,Java 还对通过网络下载的类增加一个安全防范机制,分配不同的名字空间以防替代本地的同名类,并包含安全管理机制。

Java 语言的众多特性使其在众多的编程语言中占有较大的市场份额,Java 语言对对象的支持和强大的 API 使得编程工作变得更加容易和快捷,大大降低了程序的开发成本。Java 的“一次编写,到处执行”正是它吸引众多商家和编程人员的一大优势。

6.Java开发环境搭建

6.1 JDK、JRE、JVM

  • JDK (Java Development Kit):是Java程序开发工具包,包含JRE 和开发人员使用的工具。
  • JRE (Java Runtime Environment) :是Java程序的运行时环境,包含JVM 和运行时所需要的核心类库
  • JVMJava Virtual Machine):Java虚拟机,是整个 Java 实现跨平台的最核心的部分,能够运行以 Java 语言写作的软件程序。

如下是Java 8.0 Platform:

在这里插入图片描述

三者的联系:

image-20220310200731185

小结:

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

JRE = JVM + Java SE标准类库

6.2 JDK的下载

下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html

image-20230304085836726

6.3 JDK的安装

双击下载的JDK.exe进行安装,一直下一步即可

JDK 安装目录下具有多个子目录和一些网页文件,其中重要目录和文件的说明如下。
在这里插入图片描述

  • bin:提供 JDK 工具程序,包括 javac、java、javadoc、appletviewer 等可执行程序。
  • include:存放用于本地访问的文件。
  • jre:存放 Java 运行环境文件。
  • lib:存放 Java 的类库文件,工具程序实际上使用的是 Java 类库。JDK 中的工具程序,大多也由 Java 编写而成。
  • src.zip:Java 提供的 API 类的源代码压缩文件。如果需要查看 API 的某些功能是如何实现的,可以査看这个文件中的源代码内容。

6.4 JDK8配置path环境变量

什么是path环境变量?

​ window操作系统执行命令时,所要搜寻的路径。

为什么配置path?

​ 希望在命令行使用javac.exe等工具时,任意目录下都可以找到这个工具所在的目录。

配置步骤:

(1)打开桌面上的计算机,进入后在左侧找到计算机,单击鼠标右键,选择属性,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OGDunHKS-1678148415230)(null)]

(2)选择高级系统设置,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LczDmAeB-1678148415430)(null)]

(3)在高级选项卡,单击环境变量,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J2b62WS3-1678148417263)(null)]

(4)在系统变量中,单击新建 ,创建新的环境变量,如图所示:

image-20220310225245208

(5)变量名输入JAVA_HOME,变量值输入 D:\develop_tools\jdk\jdk1.8.0_271 ,单击确定,如图所示:

image-20220607114800372

(6)选中Path 环境变量,双击或者点击编辑 ,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SwrgenUQ-1678148415180)(null)]

(7)在变量值的最前面,键入%JAVA_HOME%\bin。如图所示:

image-20220607114953758

注意:强烈建议将%JAVA_HOME%\bin声明在path环境变量中所有变量的最前面!

(8)环境变量配置完成,重启DOS命令行,在任意目录下输入javacjava命令或java -version,运行成功。

image-20220607114432286 image-20220607114517652

小结如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LsRxP5lJ-1678148415329)(null)]

6.5 JDK17配置方案:自动配置

不管大家有没有提前安装JDK8或其它版本JDK,在我们安装完JDK17之后,理应按JDK8的方式配置path环境变量。但是,我们发现在安装完JDK17以后,配置环境变量之前,执行CMD指令:

image-20220607115700870

竟然成功了!而且是17.0.2版本。因为JDK17在安装之后,自动进行了环境变量的配置。如下:

image-20220607115840388

这里建议,将JDK17安装的路径,设置为JAVA_HOME,并将%JAVA_HOME%\bin上移到首位。

image-20221110142710972 image-20221110142734279

7.Java编程规范

编程规范是对编程的一种约定,主要作用是增强代码的可读性和可维护性,便于代码重用。

首先要求程序中的各个要素都遵守命名规则,然后在编码中严格按照编码格式编写代码。命名规则包括以下几点。

​ 1.包的名称由一个小写字母序列组成。
​ 2.类的名称由大写字母开头,其他字母都由小写的单词组成。
​ 3.类的实例的名称由一个小写字母开头,后面的单词由大写字母开头。
​ 4.常量的名称都大写,并且指出完整含义。
​ 5.参数的名称无其他具体规定。
​ 6.数组的命名使用“类型[] 数组名”的形式。

另外,编码格式规定如下

​ 1.程序最开始编写导入包和类语句,即 import 语句。import 语句可以有多行,编写完 import 语句后空一行。
​ 2.定义 public 类,顶格书写。类的主体左括号“{”不换行书写,右括号“}”顶格书写。
​ 3.定义 public 类中的变量,缩进书写。
​ 4.定义方法用缩进书写,方法的左括号“{”不换行书写,右括号“}”和方法首行第一个字符对齐。方法体要再次缩进书写,最后一个变量定义和第一个方法定义之间、方法和方法之间最好空一行。

提示:在单一的语句后有“;”,在一对括号“{}“之外无“;”。方法调用名和紧跟在其后的左括号“(”无空格,该左括号和其后的标识符之间无空格。多个参数之间的逗号和前一个参数紧靠,与后一个参数空一格。

8.程序开发体验

程序(Program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。
程序一词源于生活,指的是完成某些事情的一种既定方式和过程。

8.1 开发步骤

Java程序开发三步骤:编写编译运行

程序开发步骤:
第一步:编程程序
Helloworld.java文件
第二步:编译程序(通过编译器生成)
HelloWorld.class文件
第三步:运行程序(JVM Java运行平台)

在这里插入图片描述

程序开发步骤解析:

1.编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件。
2.编译:是指使用 Java 编译器对源文件进行错误排査的过程,编译后将生成后缀名为.class的字节码文件,不像C语言那样生成可执行文件。
3.运行:是指使用 Java 解释器将字节码文件翻译成机器代码,执行并显示结果。

程序运行流程:

在这里插入图片描述

8.2 编写

(1)在E:\代码空间\java入门 目录下新建文本文件,完整的文件名修改为HelloWorld.java,其中文件名为HelloWorld,后缀名必须为.java

在这里插入图片描述

(2)用记事本或editplus等文本编辑器打开(虽然记事本也可以,但是没有关键字颜色标识,不利于初学者学习)

(3)在文件中输入如下代码,并且保存:

public class HelloWorld{
    public static void main(String[] args){
    	System.out.println("Hello world!");
    }
}

第一个HelloWord 源程序就编写完成了,但是这个文件是程序员编写的,JVM是看不懂的,也就不能运行,因此我们必须将编写好的Java源文件 编译成JVM可以看懂的字节码文件 ,也就是.class文件。

8.3 编译

在DOS命令行中,进入E:\代码空间\java入门目录,使用javac 命令进行编译。

使用文件资源管理器打开E:\代码空间\java入门目录,然后在地址栏输入cmd。

命令:

javac Java源文件名.后缀名java

举例:

javac HelloWorld.java

在这里插入图片描述

编译成功后,命令行没有任何提示。打开D:\JavaSE\chapter01目录,发现产生了一个新的文件 HelloChina.class,该文件就是编译后的文件,是Java的可运行文件,称为字节码文件,有了字节码文件,就可以运行程序了。

8.4 运行

在DOS命令行中,在字节码文件目录下,使用java 命令进行运行。

命令:

java 主类名字

主类是指包含main方法的类,main方法是Java程序的入口:

public static void main(String[] args){
    
}

举例:

java HelloWorld

在这里插入图片描述

9.Java常用开发工具介绍

9.1 常见开发工具

  • 编辑器(文本开发工具):

Java 源代码本质上其实就是普通的文本文件,所以理论上来说任何可以编辑文本文件的编辑器都可以作为我们的 Java 代码编辑工具

image-20220513185907022
  • 集成开发环境:

集成 IDE 就是把代码的编写调试编译执行都集成到一个工具中了,不用单独在为每个环节使用工具

image-20220513190655773

9.2 开发工具的选择

前期我们先使用文本开发工具,培养代码感,利于公司笔、面试。

后期我们使用IDE,提供更强大的功能支持

10. HelloWorld案例常见错误

10.1 拼写问题

  • 单词拼写问题
  • 正确:class 错误:Class
  • 正确:String 错误:string
  • 正确:System 错误:system
  • 正确:main 错误:mian
  • Java语言是一门严格区分大小写的语言
  • 标点符号使用问题
  • 不能用中文符号,英文半角的标点符号(正确)
  • 括号问题,成对出现

10.2 编译、运行路径问题

举例1:

image-20220310231657692
  • 源文件名不存在或者写错
  • 当前路径错误
  • 后缀名隐藏问题

举例2:

image-20220310231717893
  • 类文件名写错,尤其文件名与类名不一致时,要小心
  • 类文件不在当前路径下,或者不在classpath指定路径下

10.3 语法问题

举例1:

image-20220310231746581

声明为public的类应与文件名一致,否知编译失败。

举例2:

image-20220310231815405

编译失败,注意错误出现的行数,再到源代码中指定位置改错

10.4 字符编码问题

当cmd命令行窗口的字符编码与.java源文件的字符编码不一致,如何解决?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZROjruh4-1678148415381)(null)]

解决方案一:

  • 在Notepad++等编辑器中,修改源文件的字符编码:
1557881271819
  • 在EditPlus中可以将Java源文件另存为ANSI编码方式(中文操作系统下即为GBK字符集)
1658810752424

解决方案二:

在使用javac命令式,可以指定源文件的字符编码
javac -encoding utf-8 Review01.java

10.5 建议

  • 注意缩进!

    • 一定要有缩进。缩进就像人得体的衣着一样!

    • 只要遇到{}就缩进,缩进的快捷键tab键。

  • 必要的空格

    • 变量类型、变量、赋值符号、变量值之间填充相应空格,更美观。比如: int num = 10;

11. HelloWorld小结

11.1 Java程序的结构与格式

结构:

{
    方法{
        语句;
    }
}

格式:

(1)每一级缩进一个Tab键

(2){}的左半部分在行尾,右半部分单独一行,与和它成对的"{"的行首对齐

11.2 Java程序的入口

Java程序的入口是main方法

public static void main(String[] args){
    
}

11.3 两种常见的输出语句

  • 换行输出语句:输出内容,完毕后进行换行,格式如下:

    System.out.println(输出内容);
    
  • 直接输出语句:输出内容,完毕后不做任何处理,格式如下

    System.out.print(输出内容);
    

注意事项:

​ 换行输出语句,括号内可以什么都不写,只做换行处理

​ 直接输出语句,括号内什么都不写的话,编译报错

11.4 源文件名与类名

(1)源文件名是否必须与类名一致?public呢?

如果这个类不是public,那么源文件名可以和类名不一致。但是不便于代码维护。

如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。

我们建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。

(2)一个源文件中是否可以有多个类?public呢?

一个源文件中可以有多个类,编译后会生成多个.class字节码文件。

但是一个源文件只能有一个public的类。

12. Java API文档

  • API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口。
  • Java语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的说明文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。大多数Java书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料。
  • Java API文档,即为JDK使用说明书、帮助文档。类似于:
新华字典
  • 下载API文档:
    • 在线看:https://docs.oracle.com/en/java/javase/17/docs/api/index.html
    • 离线下载:https://www.oracle.com/java/technologies/javase-jdk17-doc-downloads.html

13. Java核心机制:JVM

13.1 Java语言的优缺点

Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。“青出于蓝,而胜于蓝”。

优点:

  • 跨平台性
    这是Java的核心优势。Java在最初设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。
  • 通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once , Run Anywhere”。
  • 原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM ,Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。
JVM的跨平台性
  • 面向对象性:

    面向对象是一种程序设计技术,非常适合大型软件的设计和开发。面向对象编程支持封装、继承、多态等特性,让程序更好达到高内聚低耦合的标准。

  • 健壮性
    吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。

  • 安全性高:

    Java适合于网络/分布式环境,需要提供一个安全机制以防恶意代码的攻击。如:安全防范机制(ClassLoader类加载器),可以分配不同的命名空间以防替代本地的同名类、字节代码检查。

  • 简单性:

    Java就是C++语法的简化版,我们也可以将Java称之为“C++--”。比如:头文件,指针运算,结构,联合,操作符重载,虚基类等。

  • 高性能:

    • Java最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。

    • Java低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多C++应用转到Java开发,很多C++程序员转型为Java程序员。

缺点:

  • 语法过于复杂、严谨,对程序员的约束比较多,与python、php等相比入门较难。但是一旦学会了,就业岗位需求量大,而且薪资待遇节节攀升
  • 一般适用于大型网站开发,整个架构会比较重,对于初创公司开发和维护人员的成本比较高(即薪资高),选择用Java语言开发网站或应用系统的需要一定的经济实力。
  • 并非适用于所有领域。比如,Objective C、Swift在iOS设备上就有着无可取代的地位。浏览器中的处理几乎完全由JavaScript掌控。Windows程序通常都用C++或C#编写。Java在服务器端编程和跨平台客户端应用领域则很有优势。

13.2 JVM功能说明

JVMJava Virtual Machine ,Java虚拟机):是一个虚拟的计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。

image-20220310165805739

功能1:实现Java程序的跨平台性

我们编写的Java代码,都运行在JVM 之上。正是因为有了JVM,才使得Java程序具备了跨平台性。

image-20220513191856727

使用JVM前后对比:

在这里插入图片描述

功能2:自动内存管理(内存分配、内存回收)

  • Java程序在运行过程中,涉及到运算的数据的分配存储等都由JVM来完成
  • Java消除了程序员回收无用内存空间的职责。提供了一种系统级线程跟踪存储空间的分配情况,在内存空间达到相应阈值时,检查并释放可被释放的存储器空间。
  • GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄漏

面试题:

Java程序还会出现内存溢出和内存泄漏问题吗? Yes!

14.Java程序反编译介绍

反编译:把class文件还原成java源文件,注意:只能反编译未加密的的class文件

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值