了解Java中的变量
文章目录
一、变量的定义与核心要素
在 Java 中,变量(Variable) 是程序运行过程中用于存储和操作数据的内存空间容器。它如同一个有标签的盒子,专门用于存放特定类型的数据,并且盒子里的内容可以动态变化。
变量的核心要素
- 数据类型:决定变量能存储的数据种类(如整数、小数、字符等)和取值范围
- 变量名:用于标识变量的唯一名称,遵循 Java 标识符命名规则
- 存储值:变量中存放的具体数据,其类型必须与变量声明的类型一致
变量的声明与初始化
变量的基本声明格式:
数据类型 变量名; // 声明变量(仅开辟内存空间)
变量名 = 值; // 赋值(向内存空间存入数据)
通常会将声明和赋值合并为初始化:
数据类型 变量名 = 初始值; // 声明并初始化变量
代码演示:
public class VariableDemo1 {
public static void main(String[] args) {
printVariable();
}
//定义一个方法,学习变量的定义
public static void printVariable() {
//定义一个变量:数据类型 变量名称 = 初始值;
int a = 10;
System.out.println(a);
//定义一个小数变量,存储一个学生的Java成绩
double score = 90.5;
System.out.println(score);
}
}
二、变量的特点
变量最显著的特点是其存储的值可以在程序运行过程中动态修改,这使得程序能够灵活处理各种变化的数据。
变量值的可变性
对比使用变量和直接使用字面量的差异:
public class VariableDemo2 {
public static void main(String[] args) {
printScoreWithVariable();
System.out.println("----------------");
printScoreWithoutVariable();
}
// 使用变量存储成绩
public static void printScoreWithVariable() {
double score = 90.5; // 只需修改这里,所有输出都会改变
System.out.println(score);
System.out.println(score);
System.out.println(score);
System.out.println(score);
}
// 不使用变量,直接打印字面量
public static void printScoreWithoutVariable() {
// 若要修改成绩,需逐行修改每个字面量
System.out.println(90.5);
System.out.println(90.5);
System.out.println(90.5);
System.out.println(90.5);
}
}
变量值的更新方式
变量值的更新主要有以下几种方式:
1.直接赋值:用新值覆盖旧值
int b = 20;
b = 30; // 将变量b的值更新为30
2.运算赋值:基于变量当前值进行计算后再赋值
b = b + 1; // 先计算b+1,再将结果赋给b(此时b=31)
3.复合赋值运算符:简化运算赋值的写法
b += 2; // 等价于 b = b + 2(此时b=33)
b *= 2; // 等价于 b = b * 2(此时b=66)
4.自增 / 自减运算符:专门用于变量值加 1 或减 1
b++; // 等价于 b = b + 1(此时b=67)
++b; // 等价于 b = b + 1(此时b=68)
b--; // 等价于 b = b - 1(此时b=67)
三、变量里数据的存储原理
计算机所有数据的底层都是以二进制的形式进行存储,变量的存储本质是将数据转换为二进制后存入内存的过程
二进制存储基础
二进制是计算机的基础计数方式,其特点是:
- 只有 0 和 1 两个数字
- 遵循 “逢 2 进 1” 的规则(类似十进制的 “逢 10 进 1”)
十进制转二进制的常用方法是除 2 取余法,以十进制数 6 为例:
数据存储单位
计算机中数据的最小存储单位是比特位(bit,简称 b),但实际存储数据时以字节(byte,简称 B) 为基本单位:
若计算机要存6,则原理如下:
在字节的基础上,计算机发展出了KB、MB、GB、TB、…这些数据单位。
- 1 字节(B)= 8 比特位(b)
- 1KB(千字节)= 1024B
- 1MB(兆字节)= 1024KB
- 1GB(吉字节)= 1024MB
- 1TB(太字节)= 1024GB
字符的存储原理
字符在计算机中通过**字符编码**转换为数字后再存储,常见的编码方式有:
- ASCII:包含 128 个字符(英文字母、数字、符号等),使用 7 位二进制表示
着重记住这几个:
‘0’(48)
‘A’(65)
‘a’(97)
- Unicode:包含全球所有字符,Java 默认使用 Unicode(具体实现为 UTF-16),每个字符占用 2 字节。
- UTF-8:Unicode 的可变长度编码方式
那么如果要存a,计算机中储存的其实是97的二进制,代码示例如下:
public class VariableDemo1 {
public static void main(String[] args) {
printVariable();
}
public static void printVariable() {
char ch = 'A';//65
System.out.println(ch+1);//说明ch中存储的其实不是A,而是65的二进制表示
}
}
四、变量的使用规范
1.遵循命名规范:使用驼峰命名法,见名知意
2.先声明后使用:Java 是强类型语言,变量必须先声明
3.尽量缩小作用域:局部变量应在最小的作用域内声明
4.避免变量名冲突:同一作用域内不能有同名变量
5.初始化变量:声明变量时尽量同时初始化
// 变量使用示例
public class BestPracticeDemo {
public static void main(String[] args) {
// 声明并初始化变量
int studentCount = 30;
double averageScore = calculateAverageScore(studentCount);
// 使用常量表示固定值
final double PI = 3.14159;
double radius = 5.0;
double area = PI * radius * radius;
System.out.println("学生人数: " + studentCount);
System.out.println("平均分: " + averageScore);
System.out.println("圆面积: " + area);
}
private static double calculateAverageScore(int count) {
// 方法内部的局部变量
double totalScore = 2700.0;
return totalScore / count;
}
}
五、变量的分类
变量根据定义位置和作用范围,可分为以下几类:
1.成员变量
定义在类内部、方法外部的变量,随类或对象存在,作用范围覆盖整个类
(1)静态成员变量(类变量)
- 用
static
修饰,属于类本身,所有对象共享同一值 - 内存中仅存一份,类加载时初始化
- 可通过 “类名。变量名” 直接访问
package demo;
class Student {
// 静态成员变量(类变量):所有学生共享的学校名称
public static String SchoolName = "阳光幼儿园";
}
public class Test {
public static void main(String[] args) {
System.out.println(Student.SchoolName);//可以直接通过类名访问静态成员变量
}
}
(2)实例成员变量
- 无
static
修饰,属于类的每个实例(对象) - 每个对象拥有独立的值,创建对象时初始化
- 必须通过对象实例访问
package demo;
class Student {
// 实例成员变量:每个学生独有的姓名和年龄
private String name;
private int age;
// 构造方法(用于初始化实例变量)
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
// 访问方式
public class Test {
public static void main(String[] args) {
// 创建对象时初始化实例变量
Student student1 = new Student("张三", 18);
Student student2 = new Student("李四", 17);
}
}
2.局部变量
定义在方法内部(包括方法参数、代码块中)的变量,作用范围仅限当前方法或代码块,方法执行结束后销毁。
package demo;
public class Test {
// 成员变量(用于对比)
private String className = "局部变量演示类";
public static void main(String[] args) {
// 调用方法,演示局部变量
calculateAndPrint(15, 3);
printUserInfo("张三");
}
// 方法1:演示方法参数和计算过程中的局部变量
public static void calculateAndPrint(int num1, int num2) {
// num1和num2是方法参数(特殊局部变量)
int sum = num1 + num2; // 局部变量:存储和
// 输出局部变量的值
System.out.println("两个数的和:" + sum);
}
// 方法2:演示代码块中的局部变量
public static void printUserInfo(String username) {
// username是方法参数(局部变量)
String welcomeMsg = "欢迎您,"; // 局部变量:存储欢迎信息
int loginCount = 3; // 局部变量:模拟登录次数
// 输出局部变量组合结果
System.out.println(welcomeMsg + username + ",这是您第" + loginCount + "次登录");
}
}
六、总结
- 变量是存储数据的内存容器,由数据类型、变量名和存储值三部分组成
- 变量的核心特点是其值可以动态修改,支持多种更新方式
- 计算机通过二进制存储数据,字符通过编码转换为数字后存储
- 遵循命名规范、合理管理作用域是变量使用的关键
掌握变量的概念和使用方法,是理解 Java 程序运行机制的基础,也是后续学习表达式、方法、类等知识的前提。