news 2026/7/6 4:13:12

Java2:Java数据类型与变量:编程世界的基础法则

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java2:Java数据类型与变量:编程世界的基础法则

目录

写在前面

一、认识常量:程序中不变的那些事

二、数据类型:给数据贴上标签

基本数据类型一览表

三、变量:数据的容器

变量的定义和使用

使用变量的三个原则

四、深入理解各数据类型

4.1 整型家族:四种选择,各有千秋

4.2 浮点型:精度的代价

4.3 字符型:不仅仅是英文字母

4.4 布尔型:非真即假

五、类型转换:数据变形记

自动类型转换(隐式转换)

强制类型转换(显式转换)

类型提升:运算中的隐形规则

六、字符串:最特殊的引用类型

总结与练习

动手试一试


写在前面

上一篇文章我们完成了第一个Java程序的编写,理解了Java程序的基本结构。今天,我们将深入探讨编程中最基础也最重要的概念——数据类型与变量。如果把编程比作盖房子,数据类型就是砖块和水泥的种类,变量则是存放建筑材料的仓库。掌握了它们,你就真正踏入了Java编程的大门。


一、认识常量:程序中不变的那些事

在编写程序时,我们会遇到两类数据:一类始终不变,另一类随时可能变化。前者我们称之为常量,后者则是变量

还记得我们的Hello World程序吗?System.out.println("Hello World")中的"Hello World"就是一个典型的常量——不管程序运行多少次,它都不会改变。

常量可以分为以下几种:

常量类型

示例

说明

字符串常量

"你好"、"12345"

用双引号包裹

整型常量

100、-50

不带小数点的数字

浮点数常量

3.14、0.618

带小数点的数字

字符常量

'A'、'好'

用单引号包裹的单个字符

布尔常量

true、false

只有这两个值

空常量

null

表示"什么都没有"

这些常量的类型,恰恰对应了Java中的数据类型。理解这一点,我们就找到了通往下一个知识点的桥梁。


二、数据类型:给数据贴上标签

Java是一门强类型语言,这意味着每一个数据都必须有明确的类型。类型决定了数据能取什么值、能做什么运算、占多少内存。

Java的数据类型分为两大类:

数据类型 ├── 基本数据类型(四类八种) │ ├── 整型:byte、short、int、long │ ├── 浮点型:float、double │ ├── 字符型:char │ └── 布尔型:boolean └── 引用数据类型(如:String、数组、类等)

基本数据类型一览表

类型

关键字

占用空间

取值范围

字节型

byte

1字节

-128 ~ 127

短整型

short

2字节

-32768 ~ 32767

整型

int

4字节

约-21亿 ~ 21亿

长整型

long

8字节

极大范围

单精度浮点

float

4字节

精度较低

双精度浮点

double

8字节

精度较高

字符型

char

2字节

0 ~ 65535

布尔型

boolean

未明确规定

true / false

一个重要的设计理念:Java在设计时就保证了基本数据类型的大小与平台无关。无论在Windows、Linux还是Mac上,int永远是4个字节,long永远是8个字节。这为实现"一次编写,到处运行"奠定了基础。


三、变量:数据的容器

如果说常量是固定不变的值,那么变量就是可以变化的存储单元。你可以把它想象成一个盒子——盒子上贴了标签(变量名),规定了它能装什么东西(数据类型),而里面的东西(值)可以随时替换。

变量的定义和使用

// 基本语法:数据类型 变量名 = 初始值; int age = 22; // 定义一个整型变量age,值为22 double height = 1.78; // 定义一个浮点型变量height char gender = '男'; // 定义一个字符型变量gender boolean isStudent = true; // 定义一个布尔型变量isStudent // 变量的值可以修改 age = 23; // 现在age的值变成了23 // 一行定义多个同类型变量 int x = 10, y = 20, z = 30;

使用变量的三个原则

  1. 先声明,后使用:变量必须先定义才能使用

  2. 使用前必须赋值:即使定义时没给值,使用前也必须赋值,否则编译报错

  3. 值不能超出类型范围:给int变量赋值12345678901234会编译失败


四、深入理解各数据类型

4.1 整型家族:四种选择,各有千秋

为什么Java要提供四种整型?这就像买衣服有不同的尺码——选择合适的尺寸既合身又不浪费。

  • byte:1字节,适合节省内存的场景,比如处理大量二进制数据

  • short:2字节,用得较少

  • int:4字节,日常开发最常用的整型

  • long:8字节,需要表示很大数值时使用

特别提醒:定义long类型变量时,建议在数值后加L(大写):

long bigNumber = 10000000000L; // 不加L会编译报错

4.2 浮点型:精度的代价

浮点数用于表示小数,但有一个重要特点需要牢记:浮点数不是精确值,而是近似值

试试这段代码:

double num = 1.1; System.out.println(num * num); // 你猜输出什么?

结果是1.2100000000000002,而不是预期的1.21。这是因为计算机用有限的二进制位来表示无限的小数,必然存在精度误差。

在实际开发中,如果需要精确计算(比如金额),应该使用BigDecimal类,而不是浮点数。

4.3 字符型:不仅仅是英文字母

Java的char类型使用Unicode编码,占用2个字节,这意味着它可以表示包括中文在内的几乎所有文字:

char ch1 = 'A'; char ch2 = '好'; // Java中没问题! char ch3 = 20013; // 也可以用数字表示字符

4.4 布尔型:非真即假

布尔类型只有两个值:truefalse。值得注意的是,Java的布尔类型不能与整数互转——你不能用1表示true,也不能用0表示false。


五、类型转换:数据变形记

在实际编程中,不同类型的数据经常需要相互转换。Java提供了两种转换方式。

自动类型转换(隐式转换)

小范围类型向大范围类型转换时,Java会自动完成:

int a = 10; long b = a; // 自动转换,没问题

转换路线:byte → short → int → long → float → double

强制类型转换(显式转换)

大范围类型向小范围类型转换时,需要手动强制转换:

long a = 100L; int b = (int)a; // 需要强制转换,可能丢失数据

强制转换就像把大象塞进冰箱——虽然能做到,但可能损失一些数据。

类型提升:运算中的隐形规则

当不同类型的数据进行运算时,小类型会自动提升为大类型:

int a = 10; long b = 20; long result = a + b; // a先提升为long,再运算 byte x = 10; byte y = 20; byte sum = (byte)(x + y); // 必须强转!因为x+y的结果是int

一个重要规则:byte、short、char参与运算时,会先提升为int。


六、字符串:最特殊的引用类型

String是Java中使用频率最高的引用类型,它不属于基本数据类型。字符串用双引号包裹,可以进行拼接操作:

String name = "小明"; String greeting = "你好," + name + "!"; // 输出:你好,小明!

字符串与数字之间的转换也很常用:

// 数字转字符串 int num = 42; String str1 = num + ""; // 方式一 String str2 = String.valueOf(num); // 方式二 // 字符串转数字 String str = "100"; int num2 = Integer.parseInt(str);

总结与练习

今天我们学习了Java编程中最重要的基础概念:

  1. 常量:程序中不变的值

  2. 数据类型:基本类型(四类八种)和引用类型

  3. 变量:存储可变数据的容器

  4. 类型转换:自动转换、强制转换和类型提升

动手试一试

试着写出以下代码的输出结果:

int a = 5; int b = 2; System.out.println(a / b); // 输出? System.out.println((double)a / b); // 输出? byte c = 100; byte d = 28; byte e = (byte)(c + d); System.out.println(e); // 输出?(提示:128超出了byte范围)

下一篇文章,我们将学习Java中的运算符和表达式,敬请期待!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 4:13:01

指数分布实战指南:从泊松过程到失效率建模

1. 这不是教科书里的“指数分布”,而是你真正用得上的生存时间建模工具如果你正在处理设备故障间隔、客户来电等待时长、网页会话持续时间,或者哪怕只是想搞懂为什么手机电池续航总在“还剩20%”之后突然掉到1%,那你手头最该拿稳的统计工具&a…

作者头像 李华
网站建设 2026/7/6 4:12:20

HarmonyOS 小游戏《对战五子棋》开发第2篇-AppScope与entry模块

鸿蒙应用的两级结构 HarmonyOS应用采用应用级 模块级的两层结构:应用 (App) ├── AppScope/ ← 应用级配置(全局唯一) │ ├── app.json5 ← 应用清单 │ └── resources/ ← 应用级资源 └── entry/ …

作者头像 李华
网站建设 2026/7/6 4:11:57

百未草阿胶黄芪党参铁片压片糖果分享

很多人喜爱阿胶、黄芪、党参这类草本食材,但繁琐的煎煮步骤难以坚持,这款压片糖果将多种原料融合成片,把草本搭配融入日常碎片化时光。 由山东庆葆堂打造,以阿胶、黄芪、党参为核心草本基底,复配富马酸亚铁、焦磷酸铁两…

作者头像 李华
网站建设 2026/7/6 4:11:19

为什么我们需要SDD(规格驱动开发)

输入“使用 FastAPI 在 Python 中创建一个登录接口。”改一下提示词:“使用JWT”。想了想,再输入:“数据存储到MySQL”。如此来回折腾数次之后,满心欢喜的交付给测试。这就是Vibe Coding,你和大模型进行对话&#xff0…

作者头像 李华
网站建设 2026/7/6 4:10:58

3步解锁中医AI:如何让“仲景“大语言模型成为你的智能中医助手

3步解锁中医AI:如何让"仲景"大语言模型成为你的智能中医助手 【免费下载链接】CMLM-ZhongJing 首个中医大语言模型——“仲景”。受古代中医学巨匠张仲景深邃智慧启迪,专为传统中医领域打造的预训练大语言模型。 The first-ever Traditional C…

作者头像 李华
网站建设 2026/7/6 4:10:06

.NET如何实现向量语义分析

二、LLamaEmbedder 为什么不准?(核心原因) 它是 LLM 大语言模型,不是向量模型,不是专门为语义向量训练的,向量质量远不如 Sentence-BERT、BGE、m3e 这类专业模型。 中文支持极差LlamaEmbedder 原生…

作者头像 李华