二:变量与数据类型——存储数据的盒子

一、回顾与本篇目标

上一篇你写出了人生中第一个 Java 程序——在屏幕上打印了“Hello World”。你学会了创建 .java 文件、用 javac 编译、用 java 运行。

但那个程序太简单了——它只是打印了一行固定的文字。真正的程序需要处理数据:用户的年龄、商品的价格、登录是否成功。这些数据需要存在变量里。变量就是计算机内存中一个带名字的存储空间——你可以把它想象成一个贴了标签的盒子,标签上写着名字,盒子里放着数据。

本篇的目标:

  1. 理解变量是什么,为什么需要变量
  2. 掌握 Java 的八种基本数据类型
  3. 学会变量的声明和赋值
  4. 掌握变量命名规则和规范
  5. 理解类型转换

二、变量是什么——给内存空间起个名字

计算机的内存就像一栋巨大的公寓楼,有无数个房间。每个房间能存一点数据,但房间号(内存地址)是一长串数字,人根本记不住。变量就是给某个房间起一个好记的名字——以后存数据、取数据,喊名字就行,不用记房间号。

比如,你想让程序记住你的年龄:

int age = 28;

这行代码做了三件事:

  1. 在内存中找了一块空间(对于 int 来说是 4 个字节)。
  2. 给这块空间起了个名字叫 age
  3. 把数字 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 字节(约) truefalse 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 关键字:比如 intclasspublicstaticvoid 等——这些是 Java 自己用的词,你不能拿来当变量名。
  • 区分大小写ageAgeAGE 是三个不同的变量。

5.2 命名规范(不遵守也能编译,但会被同事嫌弃)

规范是 Java 程序员之间的“约定俗成”,不遵守代码也能跑,但别人看你的代码会很别扭。

  • 驼峰命名法:第一个单词全小写,后面每个单词首字母大写。例如 studentAgetotalScoreisLoggedIn。这是 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_SCOREDEFAULT_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 零基础入门,每周更新。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容