1.1.3.1 变量

177 阅读4分钟

[TOC]

3.1 变量

内容导视:

  • 字面量
  • 变量

3.1.1 字面量

值(数据)被称为字面量,一眼就能看到值的量。如 3 是整数型字面量,'a' 是字符型字面量;有些人把它叫做常量,无可非议。

字面量类型如下:

1)整数类型:如 1、2、3...这些整数。 2)浮点类型:如 22.4、3.2...这些小数。 3)布尔类型:只有两个值,true、false 分别代表真和假。 4)字符类型:'a'、'b'、'c'...用英文单引号括起来的==单个字符==。 5)字符串类型:"abc"、"b"、"北京欢迎你"...用英文双引号括起来的是字符串。

3.1.2 变量

使用如下方式,也不是不可以,但是你不怕一个个复制粘贴不小心漏了吗?

System.out.println(327501510);
System.out.println(327501510 + 6);
System.out.println("我们的花园真漂亮");
System.out.println("我们的花园真漂亮");

为了使字面量得到重复利用,下面使用变量保存这些值。

内容如下:

  • 变量的声明
  • 变量含义
  • 变量按声明位置分类

变量声明

每个变量都需要先声明(定义)自己将要保存的数据的类型,后再给变量赋值。(放心,数据类型之后有讲,现在先看看,别管 int、String 是什么)

例:想要保存整数类型的值,需要先声明整数类型的变量,假如取名为 i:

int i;

再给变量赋一个整数值。

// 使用等号(赋值运算符)把等号右边的字面量赋给左边的变量
i = 327501510;

可以访问这个变量保存的值。

System.out.println(i);// 此时 i 为 327501510

也可以重新给 i 变量赋值,把之前保存的值覆盖。

i = 6;// 把 6 赋给 i
System.out.println(i);// 此时 i 为 6

两者结合,在声明的同时,赋值。

int i = 327501510;

那么就可以把开头的例子转变了:

int num1 = 327501510;
int num2 = 6;
String str = "我们的花园真漂亮";

System.out.println(num1);
System.out.println(num1 + num2);
System.out.println(str);
System.out.println(str);

num1、num2、str 是变量名,作为标识符,我们有权力命名,只要符合命名规则就行。

很明显通过以上例子看到变量有三个要素:

  • 变量的数据类型,如 int
  • 变量名,如 num1
  • 变量值,如 327501510

数据类型 变量名 = 字面量;

如果不考虑类型转换,那么变量的数据类型必须与字面量类型一致。

比如整数型的 int 类型不能保存浮点型的字面量,int i = 3.23; 是错误的写法。由于现在还没有讲数据类型,听着迷惑很正常。

变量含义

变量是内存中存储数据的最基本的单元,任何变量都有数据类型,不同的数据类型在内存中分配的空间大小不同。

int a = 3; 在内存里分配 4 个字节空间,空间存放着 3,a 就代表这个空间。

变量相当于内存中的一小块数据存储空间,通过变量名可以访问到这个区域。可以把 a 理解成你家的门牌号,通过门牌号定位你家。

int 类型会被分配 4 个字节大小的空间,1 个字节(byte)= 8 个比特位(bit)

1 TB = 1024 GB
1 GB = 1024 MB
1 MB = 1024 KB
1 KB = 1024 Byte
1 Byte = 8 Bit
1 Bit = 0 或 1

利用 0 和 1 的不同的组合代表各式各样的数据,等学到进制之间的转换、原码补码就明白了,但你也可以跳过,节省时间。

变量按声明位置分类

分为成员变量与局部变量。之间说过类名 Hello 后跟的 {} 是类体,方法名 main 后跟的 {} 是方法体。

public class Hello {
    // 方法体外、类体中声明的变量是成员变量
    int a = 2;
    
    public static void main(String[] args) {
        // 方法体中声明的变量是局部变量
        int b = 4;
        System.out.println(b);// 4
    }
}

值得注意的地方

1)局部变量必须赋值后才能访问,错误示范:

public static void main(String[] args) {
    int i;
    System.out.println(i);
}

你得先给 i 赋值,比如 int i = 10; 后再访问。

2)同一个域中,局部变量不能重复声明。

域:{} 包起来的范围。

// 错误示范
public static void main(String[] args) {
    int i = 3;
    int i = 6;
}

你得换个名字,以免冲突。比如把后面改成 int j = 6;

3)变量需要先声明,后访问,错误示范:

public static void main(String[] args) {
    System.out.println(i);
    int i = 3;
}

你应该把它俩的顺序换过来,毕竟 java 语句是自上而下逐行执行的。