1.字面量理解
字面量就是数据/数值,例如:1234,true,”abc”,‟中‟,3.14。在现实生活中每天都会接触到数据,例如:你今天的体重是86Kg,你今天花了500元,买了个西瓜重量是8.6Kg,外面明明是晴天,你却说狂风暴雨,你说的是假话(false),你明明喜欢她,却嘴上说不喜欢,撒谎(false)。
软件其实就是为了解决现实生活当中的问题,解决生活当中的问题其实就是处理生活当中的数据,一门编程语言首先要能够表示数据才可以处理数据,所以Java程序通过字面量来表示数据。
在编程语言中数据一般会被分门别类,所以每个数据都是有数据类型的,不同的数据类型会分配不同大小的内存空间去存储它。
数据被分为:整数型、浮点型、字符型、布尔型、字符串型等。
● 整数型(数字):1、2、100、-2
● 浮点型(数字,带小数):1.0、2.0、3.14
●字符型(文字,单个字符):‟a‟、‟中‟
● 布尔型(真假):true、false
●字符串型(文字,多个字符):”你好呀童鞋”
需要注意的是,java中规定字符型字面量必须采用半角的单引号括起来,而字符串型字面量必须使用半角双引号括起来。这是一个语法规定,不然编译器就报错了。
2. 变量概述
变量是内存当中存储数据最基本的单元,将数据(字面量)放到内存当中,给这块内存空间起一个名字,这就是变量。所以变量就是内存当中的一块空间,这块空间有名字、有类型、有值,这也是变量必须具备的三要素。变量在内存中的抽象图形可以参考下图:
在上图当中每一个抽象的椭圆就代表一个变量,其中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,变量就是这个意思。
通过以上内容的学习,大家需要掌握一个变量是有三要素组成的,分别是:数据类型、变量名、存储的值。其中存储的值就是上一节讲到的字面量。
3. 使用变量
数据类型 变量名 = 值
以上则是声明变量的语法格式,其中数据类型我们在下一章节会详细讲解,目前我们以“int”这种数据类型为例进行学习,int表示整数类型(注意:int是关键字,不能随意写,必须全部小写)。变量名只要符合标识符命名规则即可,当然也要见名知意,命名规范中还要求变量名首字母小写,后面每个单词首字母大写。请看以下代码则表示声明一个int类型的变量age用来存储年龄数据:
public class VarTest01 {
public static void main(String[] args){
int age; // 年龄
age = 20;
System.out.println(age);
}
}
注意:在进行赋值运算的时候,Java中规定“值”的数据类型必须和“变量”的数据类型保持一致,也就是说int类型的变量只能存储int类型的数据,不能存储其他类型的数据.
4. 变量分类
变量根据声明的位置不同可以分为:局部变量和成员变量。在方法体当中声明的变量以及方法的每一个参数都是局部变量。在方法体外,类体内声明的变量称为成员变量,成员变量声明时如果使用static关键字修饰的为静态成员变量(简称静态变量),如果没有static关键字修饰则称为实例成员变量(简称实例变量),请看以下代码:
public class VarTest06 {
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属于静态变量。
局部变量只在方法体当中有效,方法开始执行的时候局部变量的内存才会被分配,当方法执行结束之后,局部变量的内存就释放了。所以局部变量的生命周期非常短暂。
5. 变量的作用域
所谓变量的作用域就是变量的有效范围。实际上局部变量、实例变量、静态变量它们存储在Java虚拟机的不同内存区域上,所以变量是有作用域的。关于变量的有效范围,在这里我给大家总结了一个口诀:出了大括号就不认识了。
6. 总结
变量就是内存当中存储数据的一块空间,它包括三要素:数据类型、变量名、值。另外要知道变量根据声明的位置可以分为成员变量和局部变量,并且声明位置不同作用域也是不同的。还需要注意在同一个域当中变量名不能重名,不同的域,变量名可以相同,只不过Java遵循就近原则,会自动访问离它最近的数据。