【从零开始java学习|第三篇】变量与数据类型的关联

目录

一、数据类型分类

二、基本数据类型:四类八种

[2.1 整数型(4 种:byte、short、int、long)](#2.1 整数型(4 种:byte、short、int、long))

[2.2 浮点型(2 种:float、double)](#2.2 浮点型(2 种:float、double))

[2.3 字符型(1 种:char)](#2.3 字符型(1 种:char))

[2.4 布尔型(1 种:boolean)](#2.4 布尔型(1 种:boolean))

三、引用数据类型:地址的容器

[3.1 常见引用类型](#3.1 常见引用类型)

[3.2 与基本类型的关键区别](#3.2 与基本类型的关键区别)

四、变量的使用场景与操作方式

[4.1 为什么需要变量?(使用场景)](#4.1 为什么需要变量?(使用场景))

[4.2 变量的 3 大核心用法](#4.2 变量的 3 大核心用法)

五、变量的注意事项

[5.1 变量同一时刻只能存一个值](#5.1 变量同一时刻只能存一个值)

[5.2 同作用域内,变量名不能重复](#5.2 同作用域内,变量名不能重复)

[5.3 一条语句可定义多个同类型变量](#5.3 一条语句可定义多个同类型变量)

[5.4 使用变量前必须赋值](#5.4 使用变量前必须赋值)

六、数据类型与变量的绑定关系

七、取值范围的深层逻辑与实践

[7.1 范围排序解析(用户小结要点)](#7.1 范围排序解析(用户小结要点))

[7.2 byte 范围的本质(-128 ~ 127)](#7.2 byte 范围的本质(-128 ~ 127))

[7.3 实践避坑:类型选择与溢出](#7.3 实践避坑:类型选择与溢出)

八、总结:变量与数据类型的协同逻辑

一、数据类型分类

Java 的数据类型分为 两大阵营 ,直接决定 变量的存储规则

类型 存储内容 内存表现 示例类型
基本数据类型 直接存储值本身 栈内存直接存值 byteintcharboolean
引用数据类型 存储对象的内存地址 栈存地址,堆存实际对象 String、数组、类、接口等

二、基本数据类型:四类八种

基本数据类型细分为 4 类 8 种 ,每类都有严格的 字节大小、取值范围,直接影响变量能存储的数据范围:

2.1 整数型(4 种:byteshortintlong

作用:存储整数(无小数部分的值)。

类型 字节数 取值范围 示例(变量定义)
byte 1 字节 -128 ~ 127-2⁷ ~ 2⁷-1 byte age = 20;
short 2 字节 -32768 ~ 32767-2¹⁵ ~ 2¹⁵-1 short score = 950;
int 4 字节 -2¹⁴⁷⁴⁸³⁶⁴⁸ ~ 2¹⁴⁷⁴⁸³⁶⁴⁷ int population = 100000;
long 8 字节 -2⁶³ ~ 2⁶³-1 long money = 10000000000L;(需加L
2.2 浮点型(2 种:floatdouble

作用:存储小数(支持科学计数法,范围比整数型更 "极端")。

类型 字节数 取值范围(近似) 示例(变量定义)
float 4 字节 ±3.4e-38 ~ ±3.4e38 float pi = 3.14F;(需加F
double 8 字节 ±1.7e-308 ~ ±1.7e308 double price = 9.99;
2.3 字符型(1 种:char

作用:存储单个字符(如字母、符号、中文,本质是 Unicode 编码)。

类型 字节数 取值范围 示例(变量定义)
char 2 字节 0 ~ 65535 char gender = 'M'; char chinese = '中';(Unicode 支持)
2.4 布尔型(1 种:boolean

作用 :存储逻辑值(仅 true / false)。

类型 字节数 取值范围 示例(变量定义)
boolean 1 字节 true / false boolean isLogin = true;

三、引用数据类型:地址的容器

核心特点 :变量存储的是对象在堆内存的地址,而非值本身。

3.1 常见引用类型
  • 字符串String name = "Alice";name 存的是字符串对象的地址)。
  • 数组int[] scores = {90, 85};scores 存数组的地址)。
  • 自定义类 / 接口Student stu = new Student();stuStudent 对象的地址)。
3.2 与基本类型的关键区别
对比项 基本类型 引用类型
存储内容 值本身 对象的地址
默认值 int0booleanfalse null(无地址,未指向任何对象)
内存位置 栈内存 栈存地址,堆存对象

四、变量的使用场景与操作方式

4.1 为什么需要变量?(使用场景)
  • 场景 1:重复使用某个值

    若数据需多次调用(如圆周率 3.14),用变量存储可避免重复写字面量,提升代码复用性。

    复制代码
    double pi = 3.14;  
    double area1 = pi * 2 * 2; // 计算半径2的圆面积  
    double area2 = pi * 5 * 5; // 计算半径5的圆面积  
  • 场景 2:数据动态变化

    若数据会更新(如用户分数、商品库存),变量可灵活记录变化。

    复制代码
    int stock = 100; // 初始库存  
    stock = 80;      // 库存减少(数据变化)  
4.2 变量的 3 大核心用法
  • 用法 1:输出打印

    将变量的值展示到控制台,用于调试或结果展示。

    复制代码
    int score = 95;  
    System.out.println("你的分数:" + score); // 输出:你的分数:95  
  • 用法 2:参与计算

    变量作为运算 "原料",支持数学计算、逻辑判断等。

    复制代码
    int a = 10, b = 20;  
    int sum = a + b; // 变量参与加法运算  
    System.out.println("和:" + sum); // 输出:和:30  
  • 用法 3:修改值(覆盖旧数据)

    变量的值可动态更新,新值会覆盖旧值。

    复制代码
    int level = 1;  
    level = 2; // 旧值 1 被覆盖,level 变为 2  

五、变量的注意事项

5.1 变量同一时刻只能存一个值

新赋值会覆盖旧值,变量始终保存最后一次赋值的结果

复制代码
int num = 10;  
num = 20; // 旧值 10 被覆盖,num 最终为 20  
5.2 同作用域内,变量名不能重复

若重复定义同名变量,编译器会报错("变量已存在")。

复制代码
int age = 20;  
// int age = 30; // 错误!age 已存在  
5.3 一条语句可定义多个同类型变量

语法:数据类型 变量1=值1, 变量2=值2;(类型必须一致)。

复制代码
// 正确:int 类型的 x 和 y  
int x = 1, y = 2;  
// 错误:String 和 int 类型不同,不能同语句定义  
// String name="Tom", age=20;  
5.4 使用变量前必须赋值

未赋值的变量无法使用(Java 会编译报错,避免空数据错误)。

复制代码
int num;  
// System.out.println(num); // 错误!num 未赋值  
num = 10; // 先赋值,再使用  
System.out.println(num); // 正确:10  

六、数据类型与变量的绑定关系

变量的定义 必须指定数据类型,类型直接决定:

  1. 能存什么值int 变量只能存整数,String 变量只能存字符串地址。
  2. 占多少内存byte 占 1 字节,double 占 8 字节。

示例

复制代码
// 步骤1:指定类型 → int(4字节,存整数)
int num;  
// 步骤2:赋值 → 必须符合类型规则(此处存整数100)
num = 100;  

// 错误示例:类型不匹配  
// num = 3.14; // 编译报错:double不能存到int变量  

七、取值范围的深层逻辑与实践

7.1 范围排序解析(用户小结要点)

规则double > float > long > int > short > byte
原因

  • 浮点型(float/double科学计数法 存储(如 3.4e38),虽占字节少,但表示范围远大于整数型(如 long 最大约 9e18,远小于 float3.4e38)。
  • 整数型 按字节数递增,范围自然扩大(byte 1 字节 < short 2 字节 < ... < long 8 字节)。
7.2 byte 范围的本质(-128 ~ 127)

byte1 字节(8 位) ,最高位是 符号位(0 表示正数,1 表示负数):

  • 正数范围:00000000 ~ 011111110 ~ 1272⁷-1)。
  • 负数范围:10000000 ~ 11111111 → 用补码 表示,实际对应 -128 ~ -1
7.3 实践避坑:类型选择与溢出
  • 选对类型,节省内存

    • 年龄(0~200)→ byte(1 字节),而非 int(4 字节)。
    • 金额(需精度)→ doubleBigDecimal(避免浮点误差)。
  • 警惕溢出

    复制代码
    int maxInt = 2147483647;  
    // maxInt = maxInt + 1; // 溢出!结果变为 -2147483648(int范围超限)  
    long maxLong = 2147483648L; // 加L,用long存大数  

八、总结:变量与数据类型的协同逻辑

  1. 变量是 "容器",数据类型是 "容器的规则":规定容器能装什么值、占多少空间。
  2. 基本类型存值,引用类型存地址:前者直接操作值,后者操作对象的引用。
  3. 范围决定能力 :选类型时,优先匹配数据的实际范围(如小数用浮点,大整数用long)。

如果我的内容对你有帮助,请点赞,评论,收藏。接下来我将继续更新相关内容!

相关推荐
zhong liu bin19 分钟前
JVM基础【Java】
java·开发语言·jvm·intellij-idea
Lisonseekpan23 分钟前
什么是跨域访问问题,如何解决?
java·前端·后端·edge浏览器
鸢栀w25 分钟前
前端css学习笔记3:伪类选择器与伪元素选择器
前端·css·笔记·学习·尚硅谷网课
alexander0681 小时前
Django路由学习笔记
笔记·学习·django
搞不懂语言的程序员3 小时前
Spring源码解析 - SpringApplication run流程-refreshContext(context)源码分析
java·spring
sql2008help7 小时前
使用spring-boot-starter-validation实现入参校验
java·开发语言
Mr_Air_Boy7 小时前
springboot集成xxl-job
java·spring boot·spring
Babybreath-7 小时前
Tomcat
java·tomcat
摇滚侠8 小时前
面试实战 问题二十三 如何判断索引是否生效,什么样的sql会导致索引失效
java