Java基本类型与String、Date转换详解

陈默
陈默
发布时间:2026-10-13| 4人浏览过
原创

深入解析Java八种基本数据类型的取值范围,系统掌握从低级到高级的自动转换和向低级的强制转换机制。了解如何通过包装类实现数值间转换,并演示String与原始类型的双向转换方法,以及使用 SimpleDateFormat 对 java.util.Date 进行精确格式化的操作。

结果或目标

理解 Java 基本数据类型的内存占用和取值边界,明确何时发生隐式提升与显式截断风险;掌握在数值类型之间使用包装类作为桥接,以及在 String 与数值类型间进行无损/有损转换的标准做法;学会通过格式化对象将 Date 对象转换为特定模式的字符串表示。

准备条件

  1. Java Development Kit (JDK),确保具备基础编译环境。
  2. 理解面向对象基础概念,能够编写并运行简单的 main 方法程序。
  3. 熟悉基本运算符与输出语句 System.out.println 的使用。

第1步:认识基本数据类型及边界

Java 提供了八种基本数据类型。其中布尔型只有 true/false;字符型 char 采用 Unicode 编码;其余为数值型。需要特别注意,Java 中没有无符号(unsigned)整数类型。

// boolean: true / false
// char: 16位 Unicode
// byte: 8位 [-128, +127]
// short: 16位 [-2^15, 2^15-1]
// int:   32位 [-2^31, 2^31-1]
// long:  64位 [-2^63, 2^63-1]
// float: 32位 IEEE 754
// double:64位 IEEE 754

日常开发中,除了基本类型,String 和 Date 也是极为常用的类变量,其转换逻辑有别于原始类型间的运算。

第2步:基本类型之间的转换(自动与强制)

类型转换分为三类场景:同层级或跨层级的数值互转、与 String 互转、以及与其他实用类(如 Date)互转。先看纯数值类型间的转换。

2.1 自动类型转换(向上转型)

当由低级向高级转化时,Java 会自动完成转换,不会丢失精度。转换顺序一般遵循:

byte/short/char → int → long → float → double

byte b = 10;
int i = b;       // 自动扩容
long l = b;      // 自动扩容
float f = b;
double d = b;

对于 char 转整型时,会将其 ASCII 码值赋予目标变量:

char c = 'c';
int ascii = c;   // 输出结果为 99

注意:byte、short、char 三者虽然平级,但互相赋值时需要强制转换。例如 char ch = (char) shortVal;。工程实践中,涉及整数运算尽量统一使用 int,避免频繁强转带来的隐患。

2.2 强制类型转换(向下转型)

将高优先级类型赋给低优先级变量时,必须使用显式强制转换符号 (type)。这会存在溢出或精度丢失的风险。

int big = 1234567;
byte small = (byte) big;  // 可能因超出字节范围导致数据异常
char chr = (char) big;

2.3 使用包装类进行过渡

在处理不同基本类型之间复杂的类型变换时,可以利用 Java 提供的包装类(Wrapper Classes)作为中介。六类核心包装类对应关系如下:

  • Boolean ↔ boolean
  • Character ↔ char
  • Integer ↔ int
  • Long ↔ long
  • Float ↔ float
  • Double ↔ double

操作流程:先将原始类型装箱为对象,再调用对应的提取方法获取另一种类型的数据。

// Float 转 Double
float f1 = 100.00f;
Float wrapperF = f1;           // 自动装箱
double d1 = wrapperF.doubleValue();

// Double 转 Integer
double d2 = 100.99;
Double wrapperD = new Double(d2);
int i2 = wrapperD.intValue();  // 小数部分将被截断

各包装类还提供构造函数直接接收对应原始参数,例如 new Integer(val) 或 new Double(val)。

第3步:数值类型与 String 相互转换

几乎所有继承自 java.lang.Object 的类都拥有 toString() 方法,这为实现“数值→文本”提供了通用途径。

3.1 数值转 String

推荐两种常用方式:一是使用包装类的实例方法,二是直接使用加号拼接。

int n = 10;
float f = 3.14f;

// 方法一:String.valueOf() 或 包装类 toString()
String sNum = String.valueOf(n); 
String sFloat = Float.toString(f);

// 方法二:空字符串拼接(最简洁通用)
String sMixed = n + "";
String sResult = n + "_" + f;

3.2 特殊字符数字提取为数值

若想把单个像 '1' 这样的字符当作数学上的 1 处理,而非取其 ASCII 码,应使用以下两种方式之一:

char digitChar = '1';
int valA = Character.getNumericValue(digitChar); // 安全读取数值
int valB = digitChar - '0';                      // ASCII 减法技巧

第4步:Date 与其他类型的关联

java.util.Date 本身并不提供直接的数值加减接口,但在内部维护了一个长整型的毫秒时间戳(Epoch时间)。我们可以利用它实现日期与时间的互换。

4.1 毫秒数与 Date 互转

import java.util.Date;

long millis = System.currentTimeMillis();
Date now = new Date(millis);     // 毫秒转日期对象
long extractedMillis = now.getTime(); // 日期对象转毫秒

4.2 使用 SimpleDateFormat 进行格式化(Date → String)

引入 java.text.SimpleDateFormat 和 java.util.Date,定义好目标模板即可得到定制格式的字符串:

import java.text.SimpleDateFormat;
import java.util.Date;

Date dt = new Date();

// 生成类似 20231025 的紧凑格式
SimpleDateFormat sdfCompact = new SimpleDateFormat("yyyyMMdd");
String compactStr = sdfCompact.format(dt);

// 单独拆分年月日组件
SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
SimpleDateFormat sdfMonth = new SimpleDateFormat("MM");
SimpleDateFormat sdfDay = new SimpleDateFormat("dd");
String yearPart = sdfYear.format(dt);
String monthPart = sdfMonth.format(dt);    
String dayPart = sdfDay.format(dt);   

// 也可以通过 getTime() 拿到的长整型做进一步计算

以上即为 Java 数据类型转换的详细内容,更多关于 Java 基础语法与进阶的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。