03_变量

Posted wurengen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03_变量相关的知识,希望对你有一定的参考价值。

知识框架

技术图片

字面量

字面量就是数据/数值,例如:1234,true,”abc”,?中?,3.14。在现实生活中每天都会接触到数据,例如:你今天的体重是 86Kg,你今天花了 500 元,买了个西瓜重量是 8.6Kg,外面明明是晴天,你却说狂风暴雨,你说的是假话(false),你明明喜欢她,却嘴上说不喜欢,撒谎(false)。软件其实就是为了解决现实生活当中的问题,解决生活当中的问题其实就是处理生活当中的数据,一门编程语言首先要能够表示数据才可以处理数据,所以 Java 程序通过字面量来表示数据。在编程语言中数据一般会被分门别类,所以每个数据都是有数据类型的,不同的数据类型会分配不同大小的内存空间去存储它。

变量

概述:变量是内存当中存储数据最基本的单元,将数据(字面量)放到内存当中,给这块内存空间起一个名字,这就是变量。所以变量就是内存当中的一块空间,这块空间有名字、有类型、有值,这也是变量必须具备的三要素。变量在内存中的抽象图形可以参考下图:

技术图片

在上图当中每一个抽象的椭圆就代表一个变量,其中 a、c、pi、sex 是 4 个变量的名字(变量名只要是合法的标识符即可),13、?好?、3.14、true 是 4 个变量中分别存储的数据(字面量),int、char、double、boolean 是 4 个变量分别对应的数据类型(int、char、double、boolean等都是 java 的关键字,声明变量时用来指定变量的数据类型)。

数据类型在任何一门编程语言当中都很重要,因为程序在运行的过程中会通过不同的数据类型给数据分配不同大小的空间。有的数据类型占用的空间较小,但有的数据类型占用的空间就会很大。这也是符合现实的,在现实生活中有些数据较大,有些数据则较小。

变量要求“变量的数据类型”和变量中存储的“数据(字面量)”必须类型是一致的,换句话说,冰箱是用来存放小食品的,也就是说冰箱只能存放小食品,大象不能往冰箱里放,原因是放不下,空间不合适。例如:int 类型就只能存下 4 个字节大小的整数,再长一点儿放不下,比如 long 类型的整数占有 8 个字节,这样的数据肯定是无法放到 int 类型的变量当中的。

所谓变量:可变化的量。它的意思是变量中存储的数据不是一成不变的,是可以被改变的,假设变量 i 中之前存储的数据是 10,我们可以将 10 换成 100,变量就是这个意思。

通过以上内容的学习,大家需要掌握一个变量是有三要素组成的,分别是:数据类型、变量名、存储的值。其中存储的值就是上一节讲到的字面量。

Java中要求一个变量每次只能保存一个数据,必须要明确保存的数据类型。总结一下变量的特点:

  • 变量的存储位置是在内存中的一个存储区域
  • 该区域的数据可以在同一类型范围内不断变化
  • 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值
  • 变量的作用: 用于在内存中保存数据

使用变量

格式一,变量的声明和赋值分开进行,语法如下:

  • 数据类型 变量名;  //声明变量
  • 变量名 = 值 ;    // 变量的赋值
代码演示:
public class Demo01Variable {
    public static void main(String[] args) {
        //定义一个int类型的变量,名字是age
        int age;
        //给变量age 赋值为20
        age = 20;
        //,当在 Java程序中输出某个变量名的时候,会自动输出变量中所保存的值。
        System.out.println(age);
        //改变变量age中保存的数据
        age = 30;
        System.out.println(age);
    }
}

注意事项:

  • 在以上的代码当中,等号右边的值其实就是数据,我们之前所学的字面量就可以当做“值”。其中的等号“=”是一种运算符,它被称为赋值运算符,赋值运算符右边的表达式优先级较高,所以等号右边先执行,将执行结果赋给左边的变量。
  • java 语言中的变量要求必须先声明,再赋值才能访问
  • 在进行赋值运算的时候,Java 中规定“值”的数据类型必须和“变量”的数据类型保持一致,也就是说 int 类型的变量只能存储 int类型的数据,不能存储其他类型的数据,

格式二,声明和赋值变量同时进行,语法如下:

  • 数据类型 变量名 = 数据值;

代码演示

public class Demo02Variable {
    public static void main(String[] args) {
        //声明变量和赋值同时进行
        int number = 100;

        //c变量赋值100,a,b变量只声明了没有赋值。
        int a, b, c = 100;
        
        //一次声明多个同类型的变量,每个变量都单独赋值。
        int d = 10, e = 20, f = 100;

    }
}

使用变量注意:

  • Java中每个变量必须先声明,后使用。因为Java代码默认情况下是从上至下开始执行。
  • 在“同一个域”当中,变量名不能重名!!!!!!一个大括号代表一个域。变量只有在其域内才有效
  • Java 允许一次声明多个同类型的变量
  • 变量名是否重复和它的类型没有关系。

变量分类

变量根据声明的位置不同可以分为:局部变量和成员变量。在方法体当中声明的变量以及方法的每一个参数都是局部变量。在方法体外,类体内声明的变量称为成员变量,成员变量声明时如果使用 static 关键字修饰的为静态成员变量(简称静态变量),如果没有 static 关键字修饰则称为实例成员变量(简称实例变量),请看以下代码:

public class Demo03Variable {
    int x = 20; // 实例变量
    static int y = 200; // 静态变量

    public static void sum(int a, int b) { // 局部变量 a 和 b
        int firstNum = 100; // 局部变量
    }
}

在以上代码当中,sum 是和 main 相似的方法,在 sum 方法当中 a、b 都是方法上的参数属于局部变量,在 sum 的方法体当中声明的 firstNum 属于局部变量。大家也可以看到在 sum 方法体外面声明了两个变量,一个是 x,一个是 y,这两个变量都属于成员变量,x 变量没有使用 static 修饰属于实例变量,而 y 属于静态变量。局部变量只在方法体当中有效,方法开始执行的时候局部变量的内存才会被分配,当方法执行结束之后,局部变量的内存就释放了。所以局部变量的生命周期非常短暂。

变量作用域

  • 所谓变量的作用域就是变量的有效范围。通过后面内容的学习大家会更加明白,实际上局部变量、实例变量、静态变量它们存储在 Java 虚拟机的不同内存区域上,所以变量是有作用域的
  • 关于变量的有效范围,在这里我给大家总结了一个口诀:出了大括号就不认识了。虽然这句话属于大白话,但很实用。
  • “在同一个域”当中变量名不能重名,不同的域当中,例如类体域和方法体域可以声明同一个变量名
  • Java 程序遵守“就近原则”

以上是关于03_变量的主要内容,如果未能解决你的问题,请参考以下文章

在创建VSCode片段时,如何将变量转换为title-case(如TitleCase)?

片段 - 全局视图变量与本地和内部类侦听器和内存泄漏

如何创建片段以重复变量编号中的代码行

append() 在这个代码片段中是如何工作的?与特定变量混淆[重复]

这些 C++ 代码片段有啥作用?

[AndroidStudio]_[初级]_[配置自动完成的代码片段]