Java的基本程序设计(1)
Java的基本程序设计(1)
【本文概述】本文主要讲解 Java 中的数据类型,并简要介绍了运算符和输入语句以及文件中的输入输出操作。
1.1 数据类型
Java 是一种强类型语言,也就是说必须为每一个变量声明一种类型。在 Java 中共有 8 种基本类型,其中有 4 种整型、2 种浮点类型、1 种字符类型 char 和 1 种用于表示真值的 boolean 类型。另外还有三种引用数据类型,分别是类、接口、数组。在这一节中我们着重讲解基本数据类型。
Java 中确实有用于表示任意精度的“大数”,但它并不是一种基本类型,而是一个 Java 对象。

1.1.1 整型
Java 的整数类型就是用于存放整数值的,比如 12、30等等。Java 中提供了 4 种整型,分别是 byte (1 字节)、short (2 字节)、int (4 字节) 和 long (8 字节)。最常用的是 int。
长整型数值后面有一个后缀 L 或 l。十六进制数值有一个前缀 0x 或 0X。八进制有一个前缀 0,例如:010 对应十进制中的 8。而前缀加上 0B 或 0b 就可以写二进制数。
1.1.2 浮点类型
Java 的浮点类型可以表示一个小数,比如 123.4、3.78567等等。Java 中浮点数有两种,分别是单精度 float (4 字节) 和双精度 double (8 字节)。
对于浮点数,我们有几点说明:首先,由于浮点数在计算机中存储方式的原因,尾数可能丢失,造成精度损失,也就是说小数都是近似值;其次,Java 中有三个常数 Double.POSITIVE_INFINITY
、Double.NEGATIVE_INFINITY
和 Double.NaN
,分别表示正无穷、负无穷和不是一个数字。
如果像判断一个变量存储的是否是一个数字,不能用
if (x == Double.NaN)
,而是应该要用if (Double.isNaN(x))
。
1.1.3 字符类型
字符类型可以表示单个字符,字符类型是 char,最多是两个字符,因为还需要用来表示汉字。多个字符我们用字符串 String (后面会讲解) 表示。
单个字符用单引号括起来,字符串用双引号括起来。
1.1.4 布尔类型
布尔类型又叫 boolean 类型,只允许取值 true 和 false,无 null。boolean 类型占 1 个字节,适用于逻辑运算。
1.1.5 基本数据类型转换
基本数据类型的转换分为自动类型转换和强制类型转换。我们首先来看自动数据类型转换。当 Java 程序进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这就是自动类型转换。

有多种类型的数据混合运算时,系统自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。当我们把精度大的数据类型赋值给精度小的数据类型时,就会报错,反之就会进行自动类型转换。最终表达式结果的类型自动提升为操作数中最大的类型。
为了能够将精度大的数据类型转换为精度小的数据类型,使用时要加上强制转换符,但这会导致精度降低或溢出,因此需要格外注意。

1.1.6 基本数据类型和 String 类型的转换
在程序开发中,我们经常需要将基本数据类型转换成 String 类型。或者将 String 类型转换基本数据类型。
- 基本类型转 String 类型:将基本类型的值 + “” 即可。

- String 转基本数据类型:通过基本类型的包装类调用相应的方法即可。

1.2 运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。


1.3 键盘输入语句
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。在 Java 中,首先需要导入输入类所在包,java.util.Scanner
;接着需要创建该类对象(声明变量);最终调用其中的方法,实现输入即可。

1.4 文件输入与输出
之前学会了键盘的基本输入输出,在计算机中,文件从来都是一个绕不过的话题,下面我们来学习一下如果读取一个文件。
要读取一个文件,需要构造一个Scanner
对象:
1 | Scanner in = new Scanner(Path.of("myfile.txt"), StandardCharsets.UTF_8); |
如果文件名中包含反斜杠符号,要额外加一个反斜杠转义。
注意:这是制定了UTF_8编码,读取文本文件时尽量主动写明字符编码,否则会使用Java程序的默认编码,这可能导致在不同机器上运行这个程序出现不同的表现。
接着就可以和键盘输入类似地读取文件中的内容。
要想写入文件,我们需要构造一个PrintWriter
对象。在构造器中,需要提供文件名和字符编码:
1 | PrintWriter out = new PrintWriter("myfile.txt", StandardCharsets.UTF_8); |
如果文件不存在,会自动创建该文件,接着就可以像输出到控制台一样使用输出命令了。