一、回顾与本篇目标
上一篇你写出了人生中第一个 Java 程序——在屏幕上打印了“Hello World”。你学会了创建 .java 文件、用 javac 编译、用 java 运行。
但那个程序太简单了——它只是打印了一行固定的文字。真正的程序需要处理数据:用户的年龄、商品的价格、登录是否成功。这些数据需要存在变量里。变量就是计算机内存中一个带名字的存储空间——你可以把它想象成一个贴了标签的盒子,标签上写着名字,盒子里放着数据。
本篇的目标:
- 理解变量是什么,为什么需要变量
- 掌握 Java 的八种基本数据类型
- 学会变量的声明和赋值
- 掌握变量命名规则和规范
- 理解类型转换
二、变量是什么——给内存空间起个名字
计算机的内存就像一栋巨大的公寓楼,有无数个房间。每个房间能存一点数据,但房间号(内存地址)是一长串数字,人根本记不住。变量就是给某个房间起一个好记的名字——以后存数据、取数据,喊名字就行,不用记房间号。
比如,你想让程序记住你的年龄:
int age = 28;
这行代码做了三件事:
- 在内存中找了一块空间(对于
int来说是 4 个字节)。 - 给这块空间起了个名字叫
age。 - 把数字
28存了进去。
以后想用这个年龄的时候,直接写 age 就行。就像快递员不用记你的经纬度坐标,只需要知道“张三的家”就能把包裹送过去。
三、Java 的数据类型
在 Java 中,声明变量时必须指定这个变量能存什么类型的数据。这和 Python、JavaScript 不同——那两种语言中,你可以先把一个数字赋给变量,然后再把一段文字赋给同一个变量。Java 不允许这样做:一旦变量的类型确定,它就只能存这种类型的数据。
Java 的数据类型分为两大类:基本类型和引用类型。本篇先讲基本类型——它们是最基础、最常用的数据类型。
Java 有八种基本数据类型:
| 类型 | 存什么 | 占用内存 | 取值范围 | 示例 |
|---|---|---|---|---|
| byte | 很小的整数 | 1 字节 | -128 ~ 127 | byte b = 100; |
| short | 较小的整数 | 2 字节 | -32768 ~ 32767 | short s = 30000; |
| int | 整数(最常用) | 4 字节 | 约 -21 亿 ~ 21 亿 | int age = 28; |
| long | 很大的整数 | 8 字节 | 约 ±9×10¹⁸ | long l = 9000000000L; |
| float | 单精度小数 | 4 字节 | 约 ±3.4×10³⁸ | float f = 3.14f; |
| double | 小数(最常用) | 8 字节 | 约 ±1.8×10³⁰⁸ | double d = 3.14159; |
| char | 单个字符 | 2 字节 | 0 ~ 65535 | char c = 'A'; |
| boolean | 真或假 | 1 字节(约) | true 或 false |
boolean flag = true; |
记不住没关系,刚开始只需要重点掌握四种:int(整数)、double(小数)、char(字符)、boolean(真假)。 这四个覆盖了日常编程 90% 的场景。其他四种(byte、short、long、float)用到的时候再查就行。
四、变量的声明和赋值
在 Java 中,使用变量需要两步:先声明,再使用。
4.1 声明变量
语法:数据类型 变量名;
int age; // 声明一个整数变量,名字叫 age
double price; // 声明一个小数变量,名字叫 price
char grade; // 声明一个字符变量,名字叫 grade
boolean isOpen; // 声明一个布尔变量,名字叫 isOpen
声明变量时,Java 在内存中为它分配了空间。但此时变量里还没有确定的值——如果这时候直接使用它,编译会报错。
4.2 给变量赋值
用等号 = 把值放进变量里:
age = 28;
price = 19.99;
grade = 'A';
isOpen = true;
等号 = 在编程中不是“相等”的意思,而是“赋值”——把右边的值放进左边的变量里。
4.3 声明和赋值一步完成(推荐)
int age = 28;
double price = 19.99;
char grade = 'A';
boolean isOpen = true;
这是最常用的写法——声明的同时给一个初始值。
4.4 变量的值可以改变
int score = 85;
System.out.println(score); // 输出:85
score = 92; // 把新值赋给同一个变量
System.out.println(score); // 输出:92
score = score + 5; // 在现有值的基础上加 5
System.out.println(score); // 输出:97
变量里的值可以随时改变,这就是“变”量的含义。score = score + 5 看起来有点奇怪(分数等于分数加 5?),但编程中它表示“把 score 当前的值加上 5,然后把结果存回 score”。
五、命名规则和规范
5.1 命名规则(必须遵守,否则编译报错)
- 只能包含字母、数字、下划线 _、美元符号 $。
- 不能以数字开头:
1name不合法,name1合法。 - 不能使用 Java 关键字:比如
int、class、public、static、void等——这些是 Java 自己用的词,你不能拿来当变量名。 - 区分大小写:
age、Age、AGE是三个不同的变量。
5.2 命名规范(不遵守也能编译,但会被同事嫌弃)
规范是 Java 程序员之间的“约定俗成”,不遵守代码也能跑,但别人看你的代码会很别扭。
- 驼峰命名法:第一个单词全小写,后面每个单词首字母大写。例如
studentAge、totalScore、isLoggedIn。这是 Java 社区的标准写法。 - 起有意义的名字:
int a = 28;能跑,但别人不知道 a 是什么意思。写成int age = 28;一看就懂。 - 不要用拼音:
int nianLing;能跑,但专业程序员都用英文命名。
六、打印变量——把变量的值显示出来
上一篇文章中,我们用 System.out.println() 打印固定的文字。现在要打印变量的值:
public class VariableDemo {
public static void main(String[] args) {
int age = 28;
double height = 175.5;
char grade = 'A';
boolean isStudent = true;
// 用 + 号把文字和变量拼接在一起
System.out.println("年龄:" + age);
System.out.println("身高:" + height + " cm");
System.out.println("等级:" + grade);
System.out.println("是否是学生:" + isStudent);
}
}
输出:
年龄:28
身高:175.5 cm
等级:A
是否是学生:true
+ 号的作用:在 println 中,+ 用来拼接文字和变量。把左边的文字和右边的变量值拼接在一起,形成一个完整的字符串,然后打印出来。
七、类型转换
有时候需要把一种类型的数据转成另一种类型。
7.1 自动类型转换(小类型 → 大类型)
当把小范围类型的值赋给大范围类型的变量时,Java 会自动转换。这就像把一杯水倒进水桶——水不会洒,安全。
int num = 100;
double bigNum = num; // int 自动转成 double,bigNum = 100.0
float f = 3.14f;
double d = f; // float 自动转成 double
自动转换的方向:byte → short → int → long → float → double。顺着这个方向是安全的。
7.2 强制类型转换(大类型 → 小类型)
把大范围类型转成小范围类型时,需要手动指定,因为可能会丢失数据。这就像把一桶水倒进杯子——水可能会溢出来。
double pi = 3.14159;
int intPi = (int) pi; // 强制转成 int,小数部分被截断,intPi = 3
double big = 9.99;
int small = (int) big; // small = 9(不是四舍五入,是直接去掉小数)
语法:(目标类型) 值。在值前面用括号写上目标类型。
八、完整示例:个人信息卡片
下面这个程序综合运用了变量声明、赋值、打印和类型转换:
public class PersonInfo {
public static void main(String[] args) {
// 基本信息
String name = "张三"; // String 不是基本类型,但很常用
int age = 28;
double height = 175.5;
char bloodType = 'A';
boolean isMarried = false;
// 计算相关
int birthYear = 2025 - age; // 计算出生年份
double heightInInches = height / 2.54; // 厘米转英寸
// 输出信息卡片
System.out.println("========== 个人信息 ==========");
System.out.println("姓名:" + name);
System.out.println("年龄:" + age + " 岁");
System.out.println("出生年份:" + birthYear + " 年");
System.out.println("身高:" + height + " cm");
System.out.println("身高(英寸):" + heightInInches);
System.out.println("血型:" + bloodType + " 型");
System.out.println("已婚:" + isMarried);
System.out.println("==============================");
}
}
输出:
========== 个人信息 ==========
姓名:张三
年龄:28 岁
出生年份:1997 年
身高:175.5 cm
身高(英寸):69.09448818897638
血型:A 型
已婚:false
==============================
关于 String:你可能注意到代码中出现了 String name = "张三";。String 不是基本类型,它是一个引用类型——专门用来存一段文字。因为 String 太常用了,所以先学会用它,后面会专门讲字符串的用法。String 的值必须用双引号包裹。
九、常量——值不能改变的变量
有时候你希望某个变量的值在程序中永远不变——比如圆周率 π、一年中的月份数。这种变量用 final 关键字来声明,称为常量。
final double PI = 3.14159;
final int MONTHS_IN_YEAR = 12;
// PI = 3.14; // 编译错误!不能修改常量的值
double radius = 5.0;
double area = PI * radius * radius; // 使用常量
System.out.println("圆的面积:" + area);
常量的命名规范:全部大写,单词之间用下划线分隔。例如 MAX_SCORE、DEFAULT_PAGE_SIZE。
十、本篇动手练习
练习 1:声明不同类型的变量
新建 Practice2_1.java,声明以下变量并赋初值:年龄(int)、体重(double)、学号(String)、性别(char)、是否毕业(boolean)。用 println 依次打印每个变量。
练习 2:温度转换
新建 Practice2_2.java,声明一个 double 变量表示摄氏温度(如 30.0),用公式 华氏度 = 摄氏度 × 9/5 + 32 计算对应的华氏温度,打印结果。注意:9/5 在 Java 中是整数除法,结果是 1!思考怎么得到正确的小数结果。
练习 3:类型转换实验
新建 Practice2_3.java,测试以下内容:
- 把 double 类型的
3.99强制转成 int,输出结果。 - 把 char 类型的
'A'转成 int,输出结果。 - 把 int 类型的
97转成 char,输出结果。
练习 4:圆的计算
新建 Practice2_4.java,用 final 关键字声明一个常量 PI = 3.14159。声明圆的半径 radius = 7.5。计算并打印圆的周长(2 × PI × radius)和面积(PI × radius × radius)。
十一、本篇小结
这一篇你学会了 Java 编程中最基础的概念——变量和数据类型:
- 变量:给内存空间起的名字。声明语法:
类型 变量名 = 初始值; - 八种基本数据类型:重点掌握
int(整数)、double(小数)、char(单字符)、boolean(真假)。 - 命名规则:驼峰命名法(
studentAge),区分大小写,不能用数字开头,不能用关键字。 - 打印变量:用
+号把文字和变量拼接在一起。 - 类型转换:小类型自动转大类型,大类型转小类型需要强制转换
(目标类型) 值。 - 常量:用
final声明,值不能改变,命名全大写。
变量和数据类型是所有编程语言的基础。下一篇,我们学习运算符与表达式——如何让这些变量参与计算,做出有意义的操作。
下一篇预告
下一篇——《运算符与表达式——让数据参与计算》:算术运算(加减乘除取余)、比较运算(大于、小于、等于)、逻辑运算(并且、或者、非)、赋值运算、自增自减。你会写出像 total = price * quantity 这样有实际意义的计算表达式。
Java 零基础入门,每周更新。












暂无评论内容