Lesson 1 Java的环境设置、数据类型、运算符和输入和输出
目录
前言:为什么要学习Java
- Java是一门功能强大且简单易用的面向对象编程语言**,它具有多种特点,包括简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程以及动态性。
-
Java可以用于编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等多种类型的应用程序。Java的独立于平台的特点,即“一次编写,到处运行”(Write Once, Run Anywhere,简称WORA),是其最大的优势之一,这使得Java应用程序可以在多个平台上运行,而无需对每个平台进行单独的编译。
-
本文档涉及范围对标大学计算机大一入门课程,帮助大学学生以及准备学习算法竞赛的初高中生,入门Java编程语言,通过针对性算法训练掌握语法和基础算法,为下一阶段学习做准备。
1. Java环境配置
1.1 Java下载
Java 官方下载地址:https://www.oracle.com/java/technologies/downloads/
点击上方链接即可跳转到官网下载界面,根据需要选择对应配置进行下载!
1.2 Java安装
对于 Windows 和 Mac 来说,Java 的安装步骤很简单,我们可以选择对应的安装程序(.exe/.dmg)然后根据步骤来进行安装:
- Mac 系统的默认安装路径为下述地址:
Bash - Windows 在安装时注意指定好安装路径即可
1.3 Java配置
1.3.1 Mac 系统电脑
- 对于Mac 系列电脑,如果是第一次安装,在下载安装JDK后系统会自动进行配置Java环境,直接根据指引安装即可,安装完毕后跳转至步骤1.4。
注意,如果安装了多个版本的JDK,就需要手动配置Java的环境变量。要配置$JAVA_HOME
环境变量,找到以下三个配置文件中的任意一个:
Bash | |
---|---|
1.3.2 Windows 系统电脑
-
对于 windows 系统:
打开系统设置,点击高级系统设置,打开环境变量以后点击系统变量的新建:新建 JAVA_HOME 变量(单词大写,符合是英文),如果是用默认安装路径可以直接复制使用:
找到系统变量中的 Path 变量,选中然后点击编辑,然后点击新建,这里都一样,可以直接复制使用:
1.4 验证结果
- 打开终端,输入
java -version
,查看安装版本,输入javac -version
验证JRE环境,代表配置安装完成。
1.5 Java编译&运行
Java的运行过程
Java 程序的运行必须经过编写、编译和运行 3 个步骤。
- 编写:在 Java 开发环境中编写程序代码,形成后缀名为 .java 的 Java 源文件。
- 编译:使用 Java 编译器(javac 命令)对源文件进行编译,如果源代码中没有语法错误,编译器会生成后缀名为 .class 的字节码文件。这个字节码文件是跨平台的,可以在任何安装了 Java 运行环境(JRE)的机器上运行。
-
运行:使用 Java 解释器(java 命令)对字节码文件进行解释运行,将字节码翻译成机器代码并执行,最后显示运行结果。这个过程中,Java 的跨平台特性得到了充分体现,即"一次编写,到处运行"。
2. 第一个程序:Hello World!
Java | |
---|---|
HelloWorld.java
文件。
然后,我们使用 Java 编译器javac
对源文件进行编译:
对于Mac系统,打开 终端
软件,对于Windows系统,打开 命令行
软件
Bash | |
---|---|
随后当前目录会新生成一个HelloWorld.class文件,要运行Java文件,使用:
Bash | |
---|---|
运行成功后,控制台会输出 “Hello, World!”,这就是我们的程序运行结果。
3. Java常用的集成开发环境(IDE)
集成开发环境(Integrated Development Environment,简称IDE)是一种软件工具,提供了一套集成的功能和工具,用于开发、编写、测试和调试软件应用程序。
IDE通常包括以下核心组件:代码编辑器、编译器/解释器、调试器、构建工具、版本控制系统集成、图形用户界面设计器、项目管理工具。
通过集成这些功能和工具,IDE可以提高开发人员的生产力,简化开发过程,并提供更好的代码质量和可维护性。IDE通常与特定的编程语言或开发平台相关,例如Java开发中常用的Eclipse、IntelliJ IDEA和NetBeans等。
企业中一般采用集成开发环境软件作为Java开发平台使用,其自动化程度好、编程效率高,可以大大简化开发流程,提高开发效率。
目前比较常用的Java集成开发环境有:
3.1 IntelliJ IDEA(推荐)
- IntelliJ IDEA官网为 https://www.jetbrains.com.cn/idea/download/
IntelliJ IDEA 有两个版本:旗舰版(ULtimate) 社区版(Community),其中社区版是免费版本。
3.2 Eclipse
-
Eclipse官网为 https://www.eclipse.org/
Eclipse有着多个版本,每个版本都有自己特定的用途和功能,主要包括以下版本:
①Eclipse for Java Developers:这个版本适合Java开发者,集成了CVS,Git,XML编辑器,Mylyn,Maven integration和WindowBuilder等插件。
②Eclipse for Java EE Developers:这个版本集成了Java EE开发常用插件,方便动态web网站开发,适合Java web开发者使用。集成了XML编辑器、数据库查看工具,提供jsp可视化编辑器。
③Eclipse Standard:这个版本是Eclipse最基础的版本,适合Java se个人开发者、或希望根据自己需求配置插件的开发者使用。
3.3 样例展示
这里以IntelliJ IDEA 为例展示如何使用IDE编写你的第一个Hello World 程序:
-
选择新建项目,如果前序步骤的Java JDK安装成功,则可以在JDK栏成功找到相应JDK,选择可使用的JDK并新建项目。
-
进入项目界面,右击src文件夹并新建一个名为HelloWorld的类(class),src文件夹是存放源代码的位置。
-
复制以下代码:
- 点击运行图标运行该段代码:
-
当点击运行图标后,IDE实际上帮助我们完成了编译和运行两个步骤,即上文中提到的
javac
和java
命令。 -
成功编译并运行后,控制台输出如下信息:
至此,你已经完成Java环境的所有配置。
4. Java中的标识符
4.1 标识符
标识符是指用来标识某个实体的一个符号。在Java语言中,主要是指在编程时使用的名字。标识符的使用须遵循一定的规则:Java中的标识符由字母、数字、下划线或美元符号组成,且必须以字母、下划线(_)或美元符号($)开头。规则总结如下:
- 可以包含数字,但不能以数字开头。
- 除下划线(_)和美元符号($)以外,不包含任何其他特殊字符,如空格。
- 不能用Java关键字或保留字做标识符。
- Java标识符大小写敏感。
合法的标识符,如:
不合法的标识符,如: 注意:虽然Java的语法允许使用下划线(_)和美元符号($)作为标识符的开始,但是在很多企业的开发规范中约定,不能使用这两者作为标识符的开始,以达到统一标识符格式,减少歧义的效果。4.2 关键字和保留字
关键字和保留字是Java语言中具有特殊含义的单词或符号。关键字是Java语言本身定义的,用于表示特定的语法结构和操作,不能用作标识符,如变量名、类名等。
Java语言共有50个关键字,如下所示:
Text Only | |
---|---|
1 2 3 4 5 6 7 8 9 10 |
|
- 这些关键字具有固定的语法含义,不能被用作变量名或其他标识符。
- 保留字是指被保留但目前未被使用的关键字,它们在Java语言中没有特定的功能,但为了保留未来可能使用的关键字而被保留。
- 我们在编写代码时应避免使用关键字作为标识符,以免引发编译错误或语法混淆。
5. Java中的变量
5.1 什么是变量
变量是Java程序中的基本存储单元,它的作用是用来存储数据。变量本质上代表了内存中的一个存储的区域,这个区域里的数据在同一数据类型中可以不断的变化。通过变量可以方便的读取和操作该区域中的数据。 - 变量:顾名思义,会变的量。 - 常量:自然界中规定好了的、不会变的值。
5.2 变量的声明
在Java中,需要先声明一个变量,才能使用这个变量。变量的声明包含两点:变量的数据类型和变量名,语法格式如下:
Bash | |
---|---|
数据类型可以是Java的任意数据类型之一;变量名即变量的名称,用于存储变量值:
可以同时声明多个同一数据类型的变量,变量之间用“,”隔开,例如:5.3 变量的初始化
Java语法规定:变量在使用之前必须初始化,即必须给该变量赋予特定的值。
变量的第一次赋值即对变量的初始化。在Java中,使用等号(=)实现变量的赋值。
变量的初始化有以下两种方式:
1、在声明变量时,同时对变量进行初始化,语法如下:
2、第一次使用变量前,对变量进行初始化,语法如下:Java | |
---|---|
5.4 变量的访问
变量在声明和初始化后,可以对变量进行访问,包括读取变量的值和修改变量的值。代码如下:
Java | |
---|---|
1、变量的操作必须与类型匹配。
变量在声明时指定了类型,Java编译器会检测对该变量的操作是否与其他类型匹配,如果对变量的赋值或者操作与其类型不匹配,会产生编译错误,例如:
2、变量的数据类型只写一次。
变量在第一次声明的时候写数据类型,再次使用时不写数据类型,例如:
3、未经声明的变量不能使用。
变量必须先声明,否则会出现编译错误,例如:
4、变量初始化后才可以使用。
声明一个变量,必须初始化后才能使用,例如:
6. Java的数据类型
Java的数据类型分为两大类:基本数据类型和引用数据类型。
6.1 基本数据类型
Java基本数据类型包括4类8种。4类分别是整数类型、浮点数类型、字符类型和布尔类型。 Java中整数类型包括:byte、short、int 和long型,它们之间的区别仅仅是宽度和范围的不同。
6.1.1 整数类型
- 一个byte类型的变量代表的值占用1个字节的内存空间(8位),能够表示的10进制整数数据范围是负128到正127,包含0。
- 一个int类型的变量代表的值占用4个字节的内存空间(32)位,能够表示的10进制整数数据范围是负2147483648到正2147483647,包含0。
6.1.2 浮点类型
- 浮点类型主要用来储存小数数值,也可以用来储存范围较大的整数。
- 它分为单精度浮点数(float)和双精度浮点数(double)两种,双精度浮点数比单精度浮点数所使用的内存空间更大,可表示的数值范围与精确度也比较大。
6.1.3 字符类型
字符类型表示单个字符,Java中的字符类型变量使用char关键字进行声明,而字符型字面量必须用单引号括起来,例如:
Java | |
---|---|
6.1.4 布尔类型
- 布尔类型在Java语言中使用关键字boolean 声明,它只有两个字面量:true和false。
- 与C语言不同,Java不允许使用0或非0的整数来代替true和false,也不能将其他基本数据类型的值直接转换为布尔类型。
- 布尔类型用于判断逻辑条件的结果,通常在程序的分支和循环控制语句中使用,根据逻辑判断的结果来决定程序的执行流程。
6.2 引用数据类型
引用类型是指除基本数据类型以外的所有类型,包括类、接口、数组、枚举等,是高阶内容,不在本次教学范围内,这里只选取Java中常用的一种引用数据类型进行介绍。
6.2.1 字符串类型
字符串类型是Java中用于存储多个字符的数据类型,使用String关键字声明字符串变量。例如:
Java | |
---|---|
- Java中的字符串类型字面量是String类型的,而不是char类型的。
- String类型不是基本数据类型,而是引用类型。
6.3 常用数据类型的使用实例
7. Java中的运算符
7.1 算术运算符
- 运算符:
+
(加)、-
(减)、*
(乘)、/
(除)、%
(求余)、++
(自增)、--
(自减) - 用途:执行基本的数学运算
- 示例代码:
7.2 赋值运算符
- 运算符:
=
(等于)、+=
(自加一次等于)、-=
(自减一次等于)、*=
(自乘一次等于)、/=
(自除一次等于)、%=
(求模并赋值) - 用途:将计算结果赋值给变量
- 示例代码:
7.3 比较运算符
- 运算符:
<
(小于)、>
(大于)、>=
(大于等于)、<=
(小于等于)、==
(等于)、!=
(不等于) - 用途:比较两个值的大小或相等性
- 示例代码:
7.4 逻辑运算符
- 运算符:
&&
(短路与)、||
(短路或)、!
(非) - 用途:组合布尔表达式,实现逻辑运算
- 示例代码:
7.5 条件(三目)运算符
- 运算符:
?:
- 用途:根据条件表达式的结果选择两个值中的一个
- 语法:
result = (condition) ? value1 : value2;
- 示例代码:
7.6 位运算符
- 运算符:
&
(按位与)、|
(按位或)、^
(异或)、~
(非、取反) - 用途:对二进制位进行操作
- 示例代码:
7.7 复合赋值运算符
- 运算符:
+=
,-=
, 等 - 用途:将操作简化
- 示例:
x += 5
等价于x = x + 5
7.8 字符串连接运算符
- 运算符:
+
- 用途:用于连接字符串
- 示例代码:
Java中的运算符不仅包括上述基本类型,还包括复合赋值运算符,如 +=, -= 等,此外,Java还支持字符串连接操作,其中 + 运算符除了用于数值的加法运算外,还可以用于连接字符串。
8. Java的输入与输出
8.1 使用 Scanner 读取字符串/整数/浮点数
Scanner 可以读取用户的键盘输入。 例如:
8.2 System.out.println()
System.out.println()
可以打印一行内容,输出完自动换行。
Java | |
---|---|
8.3 System.out.print()
System.out.print()
可以打印字符串以及其他的类型。
Java | |
---|---|
8.4 InputStream/OutputStream
在 Java 中,InputStream 和 OutputStream 是两个基本的 I/O 类,用于处理字节流的输入和输出。它们分别是输入和输出操作的基类,并且都有多个子类,支持从各种数据源读取数据和将数据写入各种数据目标。以下是它们的关系、基类、子类及其常见用途的详细介绍。
InputStream 和 OutputStream 的关系: - InputStream:是一个抽象类,表示字节输入流的所有类的超类。它定义了从不同输入源(如文件、内存缓冲区、网络连接)读取字节数据的基本方法。 - OutputStream:是一个抽象类,表示字节输出流的所有类的超类。它定义了向不同输出目标(如文件、内存缓冲区、网络连接)写入字节数据的基本方法。 - InputStream 和 OutputStream 并没有直接的继承关系,但它们是互补的,分别处理输入和输出操作。
例如:
使用 InputStream
读取文件
使用 OutputStream
写入文件
9. 课程总结
- Java环境安装正常。
- 完成第一个Hello World程序。
- 认识变量类型和命名方式。
- Java中的运算符。
- Java的输入与输出。
课后练习
1.编写一个Java程序来找出满足以下条件的最小正整数:
-该数除以12余1
-该数除以23也余1
-该数除以31也余1
请在以下选项中选择一个正确的答案,该答案满足上述所有条件:
(A) 4191
(B) 3232
(C) 8577
(D) 9233
参考程序:
2.编写一个Java程序,用于模拟餐厅的点单过程。程序应提前告知用户汉堡、薯条和可乐的价格,并通过用户输入获得点单信息。最后,程序应分行输出客户点的内容,并打印出总价。
价格信息:
-汉堡:$5
-薯条:$2
-可乐:$1
功能要求:
1.显示各项食物的价格。 2.提示用户输入每种食物的数量。 3.计算并显示每种食物的点单数量。 4.计算并显示总价。
输入输出示例:
示例输出:
Text Only | |
---|---|
提示:
- 使用
Scanner
函数获取用户输入。 - 使用算术运算计算总价。
- 使用
System.out.println()
函数输出结果。
示例代码: