整型
1 | byte smallNum = -111; // byte 范围是 -128 到 127 |
byte 范围是 -128 到 127
核心特点:极小,省空间。像一个火柴盒。
用途:
文件处理/网络传输:这是最主要的用途。当你读取一个图片、视频或者通过网络发送数据时,数据是以“字节流”(byte[])的形式存在的。
硬件控制:比如你要控制一个智能灯泡的开关(0或1),或者读取传感器的原始数据,通常用 byte。
日常业务开发几乎不用它存数字。
short 范围是 -32768 到 32767
核心特点:不大不小,很尴尬。像一个饭盒。
用途:
老旧系统兼容:在几十年前内存很贵的时代,为了省钱会用 short。
特定算法:某些图像处理算法里为了节省显存会用到。
实战建议:现在内存便宜了,为了避免不小心溢出,Java 程序员已经基本弃用 short 了。哪怕数字很小,我们通常也懒得切,直接用 int。
int 范围是 -2147483648 到 2147483647 (最常用int)
核心特点:标准大小,计算速度最快。像一个双肩背包。
用途:
绝大多数计数场景:用户年龄、购物车商品数量、循环次数 (for 循环)、数组下标。
数据库ID:如果你的网站用户量在千万级别以内,ID 通常就是 int。
只要数字不超过 20 亿,闭着眼睛选 int 没错。
long 范围是 -9223372036854775808 到 9223372036854775807
核心特点:巨大无比。像一个集装箱。
用途:
时间戳:System.currentTimeMillis() 返回的是从 1970 年到现在的毫秒数,这个数字 int 装不下。
大型网站 ID:淘宝订单号、微博 ID、Twitter ID(雪花算法生成的 ID 都是 long)。
文件大小:计算 4GB 以上的高清电影大小。
记忆口诀:跟时间和超大数据有关的,记得加 L 用 long。
浮点型
1 |
|
double 精度约为 15-16 位十进制数字
精度:约 15-16 位有效数字。
地位:Java 中小数的默认类型(写一个 3.14,Java 默认它就是 double)。
用途:
日常计算:比如计算BMI指数、计算圆的面积、物理题计算(速度、加速度)。
普通统计数据:比如计算“平均分”、“增长率”(85.5分,12.3%)。
经纬度:地图上的 GPS 坐标(如 39.9042, 116.4074),double 的精度足够定位到厘米级,完全够用。
float 精度约为 7 位十进制数字
精度:约 6-7 位有效数字。
地位:为了省内存而生的产物,必须加后缀 f。
为什么极少使用?
精度太烂:7 位精度真的很危险。比如经纬度用 float 存,可能你定位在家里,结果显示你在邻居家,误差能有几米到几十米。
内存不值钱:现在的服务器内存很大,不在乎 double 多占的那 4 个字节。
麻烦:每次赋值都要写个 f,很多程序员嫌烦。
那它还活着干嘛?(特殊用途)
**游戏开发 (Unity/Unreal)**:在 3D 游戏中,要处理成千上万个粒子的坐标。因为计算量巨大,且对精度要求不用那么高(子弹打偏 0.0001 毫米也没人看得出来),用 float 能比 double 快很多,且极大节省显存。
机器学习/深度学习:训练 AI 模型时,数据量是海量的(亿级)。使用 float(甚至更低的精度)可以显著加快训练速度,减少 GPU 显存占用。
极低配置的嵌入式设备:比如几块钱的芯片,处理能力很弱,double 算不动。
CHAR
1 | char letter = 'A'; // char 用单引号表示单个字符 |
范围/大小:2 个字节 (16位)。
核心特点:
独行侠:只能存 1 个 字符(比如 ‘A’, ‘中’, ‘&’)。
单引号:必须用 ' ' 包裹。
双面人:表面是字符,本质是整数(Unicode 编码)。你可以把它当数字用(’A’ + 1 = 66)。
用途:
底层文本处理:当你需要一个字一个字地分析文本时(比如判断用户输入里面有没有非法符号)。
很多算法题:字符串反转、回文判断等。
日常业务中,我们很少单独定义 char 变量,通常都是直接用 String(字符串)。
布尔
1 | boolean isJavaFun = true; // boolean 只能是 true 或 false |
范围/大小:理论上只占 1 位 (bit),但具体看虚拟机实现。
核心特点:
极简主义:只有两个值:true (真) 或 false (假)。
Java 特色:不能像 C 语言那样用 0 代表 false,1 代表 true。在 Java 里,它是独立的类型,和数字没关系。
用途:
逻辑判断:if (isLogin),while (hasNext)。控制程序的流程,决定走哪条路。
开关/标记:记录状态,比如“灯是开的吗?”、“支付成功了吗?”。
命名规范(重要技巧):布尔变量通常以 is, has, can 开头,例如 isVip, hasTicket, canEdit。
银行资金用什么?
用BigDecimal

对应的mysql字段设置 java类型与mysql字段设置
- 整数家族 (Integer Types)
| Java 类型 | MySQL 类型 | 推荐理由与场景 |
|---|---|---|
int |
INT (或 INTEGER) |
绝大多数情况的默认匹配。范围和 Java 的 int 基本一致。 |
long |
BIGINT |
对应 Java 的 long。用于存时间戳、雪花算法ID、超大计数值。 |
boolean |
TINYINT(1) |
特别注意! MySQL 里没有 boolean 类型。通常习惯用 TINYINT,存 0 代表 false,1 代表 true。 |
byte / short |
TINYINT / SMALLINT |
用得比较少。TINYINT 倒是常用来存“状态枚举”(比如 0=待审核, 1=通过, 2=驳回)。 |
- 浮点与金额 (Floating Point & Money)
| Java 类型 | MySQL 类型 | 推荐理由与场景 |
|---|---|---|
BigDecimal |
DECIMAL(M, D) |
存钱必须用这个!例如 DECIMAL(10, 2) 表示总共10位数字,其中2位是小数(最大能存 99999999.99)。 |
double |
DOUBLE |
用于经纬度、科学计算、普通的统计数据(不涉及金钱交易)。 |
float |
FLOAT |
极少使用,理由同 Java,精度太低 |
3.字符串
| Java 类型 | MySQL 类型 | 推荐理由与场景 |
|---|---|---|
String |
VARCHAR(n) |
最常用。n 代表最大字符数。例如 VARCHAR(255)。特点是变长,你存 “ABC” 它就只占 3 个字的空间,不浪费。 |
String |
CHAR(n) |
定长字符串。比如身份证号、手机号这种长度固定的。特点是速度快,但如果你存 “A” 且定义了 CHAR(10),它后面会补空格,占满 10 个字。 |
String |
TEXT / LONGTEXT |
大文本。存一篇博客文章、商品详情介绍、JSON大字符串时使用。 |
char |
CHAR(1) |
对应 Java 的 char,但在数据库设计中很少单独为了一个字符开字段,通常也直接用 VARCHAR 或 CHAR。 |
- 时间日期 (Date & Time)
| Java 类型 | MySQL 类型 | 推荐理由与场景 |
|---|---|---|
LocalDateTime |
DATETIME |
最常用。记录“年月日时分秒”。例如:2026-01-20 14:30:00。 |
LocalDate |
DATE |
只记录“年月日”。例如:生日 1990-01-01。 |
LocalTime |
TIME |
只记录“时分秒”。 |
long (时间戳) |
BIGINT |
有些公司喜欢直接存毫秒数(例如 1678888888000),方便跨时区处理。 |
| 上一章 | 目录 | 下一章 |
|---|---|---|
| [hello world](/2026/04/04/hello world/) | java基础 | 数据类型的转换 |