引入

Java数据类型分为基本数据类型和引用数据类型。本文整理了8种基本数据类型的表格,用“藏宝图”讲清引用数据类型。后半部分介绍Java的输入输出:System.out和Scanner的用法。

Java的数据类型

一、基本数据类型

为了让你一目了然,我将这8种基本数据类型整理成了如下表格,涵盖了它们的存储大小、取值范围及核心特性。

数据类型 关键字 占用空间 取值范围 默认值 核心特性与注意事项
字节型 byte 1字节 -128 ~ 127 0 节省内存,常用于文件IO或网络传输。
短整型 short 2字节 -32,768 ~ 32,767 0 较少直接使用,用于特定内存优化场景。
整型 int 4字节 约±21亿 0 最常用的整数类型,默认整数字面量。
长整型 long 8字节 约±922亿亿 0L 存储超大整数,赋值时数值后需加L
单精度浮点 float 4字节 约±3.4E38 0.0f 精度较低(6-7位有效数字),赋值需加F
双精度浮点 double 8字节 约±1.8E308 0.0d 最常用的小数类型,默认浮点字面量。
字符型 char 2字节 0 ~ 65,535 ‘\u0000’ 采用Unicode编码,支持中文,用单引号。
布尔型 boolean 未定义* true / false false 仅用于逻辑判断,不可与数字互转。

注:boolean类型在JVM规范中未明确规定大小,通常视具体实现而定,但在数组中通常占1字节。

二、引用数据类型

与上述直接存储数值的基本类型不同,引用数据类型存储的是数据在内存中的“地址”。你可以把它理解为一张“藏宝图”,变量手里拿的不是宝藏(数据)本身,而是指向宝藏埋藏地点(堆内存)的坐标。

最常见的引用类型包括:

  • :如String、自定义的对象。虽然String的使用看起来和基本类型很像,但它本质上是一个包含字符数组的复杂对象。
  • 接口:如ListMap等,它们定义了规范,实际存储的是实现类的对象地址。
  • 数组:用于存储一组相同类型的数据,变量存储的是数组首地址。

以C语言为例,数组名就是指向第一个元素的指针。你定义一个数组int arr[3] = {1,2,3},arr本身存的是地址,不是那三个数。你把arr赋值给另一个变量,两个变量指向同一块内存。

Java的数组和C的指针本质是一样的——存地址。只是Java不让你做指针运算,也不叫“指针”,叫“引用”。

输入与输出

一、标准输出:与用户对话

程序运行后,我们需要看到结果。Java通过System.out对象来实现标准输出。

  • 基础输出print()方法输出后不换行,光标停留在末尾;println()则会在输出后自动换行,这是最常用的方式。
1
2
System.out.print("Hello World!");
System.out.println("Hello World!");
  • 格式化输出:如果你需要像财务报表那样精准控制格式(例如保留两位小数),可以使用printf()。它使用占位符,和C语言和格式控制差不多,如%d代表整数,%.2f代表保留两位小数的浮点数,%s代表字符串。

二、标准输入:获取外部数据

为了让程序具有交互性,我们需要从控制台获取用户的输入。Java提供了java.util.Scanner类来处理这一需求。

使用流程

  1. 导包import java.util.Scanner;
  2. 创建对象Scanner sc = new Scanner(System.in);
  3. 调用方法:根据需要的数据类型调用相应方法,如nextInt()(整数)、nextDouble()(小数)、next()(字符串,遇空格停止)或nextLine()(整行字符串)。

最后的话

好了,关于Java数据类型和输入输出的分享就先到这里。
别急着一下子全记住,编程是一场马拉松,而不是百米冲刺。试着多动手敲几遍代码,当你在控制台成功输入并打印出结果的那一刻,你会发现这一切都是值得的。

保持好奇,多动手尝试,感谢您的查阅!我们下一篇博客见!