本文简述在算法中常用的基本数据类型,以及输入输出方法。
数据类型
1.int(整型)
int数据类型是32位、有符号的整数,以二进制补码表示。
最小值是-2,147,483,648 (-2^31)。
最大值是2,147,483,647(2^31-1)。
默认值是0。
- 整型的最小值、最大值分别用 Integer.MIN_VALUE 和 Integer_MAXVALUE 来表示。代码如
int intMin = Integer.MIN_VALUE;
int intMax = Integer.MAX_VALUE;
System.out.println("int最小值:" + intMin);
//输出-2147483648
System.out.println("int最大值:" + intMax);
//输出2147483647
- 整型溢出
在输入整数时,尽量使用long类型,避免使用int类型导致整型溢出,如果整型数字大小大于 10^9 左右,可能就会导致溢出。
溢出的代码表现,如
int x = Integer.MAX_VALUE;
System.out.println(x);
//输出2147483647
x += 1;
System.out.println(x);
//输出-2147483648,溢出到int型的最小值开始
2.long(长整型)
long数据类型是64位、有符号的整数,以二进制补码表示。
最小值是-929,223,372,036,954,775,808(-2^63)。
最大值是929,223,372,036,954,775,807(2^63-1)。
默认值是0。
- 长整型的最小值和最大值分别表示为 Long.MIN_VALUE 和 Long.MAX_VALUE,如
long longMin = Long.MIN_VALUE;
long longMax = Long.MAX_VALUE;
System.out.println("long最小值:" + longMin);
System.out.println("long最大值:" + longMax);
float(单精度浮点数)
- float数据类型是单精度、32位;
- float在储存大型浮点数组的时候可以节省内存空间;
- 默认值是0.0;
- 浮点数不能来表示精确的值(与double类型一致)。
原因:由于计算机的数字的存储和运算都是通过二进制进行的,而十进制小数转换成二进制小数,采用的是"乘2取整,顺序排列"法。
在转换过程后,部分十进制小数的二进制表示就会出现无限循环的情况,例如(0.1)10 = (0.000110011001100…)2。 - float的最小值和最大值分别表示为Float.MIN_VALUE 和 Float.MAX_VALUE,如
float floatMin = Float.MIN_VALUE;
float floatMax = Float.MAX_VALUE;
System.out.println("float最小值:" + floatMin);
System.out.println("float最大值:" + floatMax);
double(双精度浮点数)
- double数据类型是双精度、64位;
- 浮点数的默认类型是double类型;
- 默认值也是0.0;
- 无法表示精确的值(跟float一致);
- double的最小值和最大值分别表示为Double.MIN_VALUE 和 Double.MAX_VALUE,如
double doubleMin = Double.MIN_VALUE;
double doubleMax = Double.MAX_VALUE;
System.out.println("double最小值:" + doubleMin);
System.out.println("double最大值:" + doubleMax);
boolean(布尔类型)
- boolean数据类型表示一位的信息;
- 取值为:true(真)和flase(假);
- 默认值是false。
char(字符类型)
- char类型是16位无符号Unicode字符;
- 表示单个字符,并且可以存储任何字符(字母、数字、符号等);
- 默认值是’\u0000’;
- 最小值1是0(即’\u0000’);
- 定义用 ’ '(单引号)。
String(字符串类型)
- String是由字符构成的序列,它是Java中的一个类,而不是基本数据类型;
- 没有明确的最小值和最大值,因为它是一个类而不是基本数据类型;
- 默认值是null;
- 定义用 " "(双引号)。
输入和输出
输入
Java提供了多种方式来进行输入,常用的是Scanner类。
- 导入java.util包中的Scanner类。
- 创建Scanner对象,参数System.in 是 Java 中的标准输入流。
- 使用输入函数来读取数据。
- 各数据类型的输入函数如下:
import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取整数System.out.print("请输入一个整数: ");int intValue = scanner.nextInt();// 读取长整型System.out.print("请输入一个长整数: ");long longValue = scanner.nextLong();// 读取单精度浮点数System.out.print("请输入一个单精度浮点数: ");float floatValue = scanner.nextFloat();// 读取双精度浮点数System.out.print("请输入一个双精度浮点数: ");double doubleValue = scanner.nextDouble();// 读取布尔值System.out.print("请输入一个布尔值(true/false): ");boolean booleanValue = scanner.nextBoolean();// 读取字符System.out.print("请输入一个字符: ");char charValue = scanner.next().charAt(0);// 读取字符串System.out.print("请输入一个字符串: ");String stringValue = scanner.next();// 打印输入的值System.out.println("整数:" + intValue);System.out.println("长整数:" + longValue);System.out.println("单精度浮点数:" + floatValue);System.out.println("双精度浮点数:" + doubleValue);System.out.println("布尔值:" + booleanValue);System.out.println("字符:" + charValue);System.out.println("字符串:" + stringValue);}
}
输出
输出采用System.out.println()和System.out.print()。
System.out.println()输出完会自动换行,System.out.print()不会。
上面的代码有很多使用输出函数的例子,可以回顾看看。