什么是变量

在Java程序中,变量是基本的存储单元。是在程序运行中值可以改变的一块内存区域。变量是通过标识符(变量名)、变量类型及可选的初始化器来定义的,此外,所有的变量都有作用域,作用域定义了变量的可见性和生命周期。

例如:计算两个班级的总人数,需要将两个班级的人数加在一起,在计算机运算过程中需要先分配一块内存保存第一个班级的人数,再分配一块内存保存第二个班级的人数,最后经过CPU的调度进行数学运算得出最后的结果。代码如下:

int classA = 20;             //定义变量classA保存第一个班级的人数

int classB = 30;             //定义变量classB保存第二个班级的人数

int sum = classA + classB;       //定义变量sum用来保存两个班级的总人数

当程序按照顺序执行第一行代码时,将会分配一块内存空间,这一块内存空间使用标识符classA来表示,内存中存储的数据为20,这一块内存空间称为“变量”,classA称为变量名,20就是变量值。上述三行代码执行时在内存中的状态如图1所示。

图1  变量在内存中

“int”定义了变量的数据类型(后面的章节会详细介绍java语言中的8种基本类型),使用变量时要求必须指明变量的数据类型,这样Java才会分配合适大小的内存空间保存变量的值。

我们还可以使用赋值运算符“=”修改变量的值,这个操作称为“为变量赋值”。赋值操作将会极大的增加程序的多变性。

变量的声明

Java语言是强类型(strongly typed)语言,强类型语言包含两方面含义:

1)所有的变量在使用之前必须先声明,后使用。

2)指定类型的变量只能接受类型与之匹配的值。

这意味着每个变量和每个表达式都有一个在编译时就确定的类型。类型限制了一个变量能被赋的值,限制了一个表达式可以产生的值,限制了在这些值上可以进行的操作,并确定了这些操作的含义。

强类型语言可以在编译时进行更严格的语法检查,从而减少编程错误。

声明变量的语法非常简单,只需要指定变量的类型和变量名即可,如下所示:

数据类型 变量名 [ = 初始值];

上面的语法中,定义变量时既可以指定初始值,也可以不指定初始值。随着变量的作用域不同,变量还可能使用其他修饰符。但不管是哪种变量,定义变量至少需要指定变量类型和变量名两个部分。定义变量时的变量类型可以是Java语言支持的所有类型(基本类型或引用类型)。

变量的声明就是告诉编译器这个变量的数据类型和变量的名称,这样编译器才知道需要分配多少内存空间给它,以及定义它能放什么样的数据。

在声明变量时,在同一数据类型下可以声明多个变量,只需要使用“,”进行分隔,如下所示:

数据类型 变量名 [ = 初始值][ , 变量名 [ = 初始值] …];

下面是声明各种类型变量的一些例子:

int a , b , c;           //声明了三个int型变量:a、b和c

byte z;                  //声明一个byte型变量

double pi;               //声明一个double型变量

char x;                  //声明一个char型变量

在此选择的变量名与用来指定变量类型的名称没有任何内在联系,Java允许将任何形式的正确的变量名声明为任何类型。

在声明变量时需要注意以下几点:

1)变量类型与变量名之间使用空格分隔。

2)每一条Java语句都要以“;”(英文分号)结尾。

3)在一个语句中连续声明多个变量时,变量名之间使用“,”(英文逗号)分隔。

4)在同一个作用域(下一章节会对作用域进行讲解)下变量名不允许重复,否者会编译错误(就像一个班级中有两个人都叫张三,老师点名张三的时候到底点的是哪个张三?)。

5)遵守变量名称的命名规范(命名规范会在后面的章节进行讲解)。

最新文章

  1. Windows Server 2008 R2安装子域控制器
  2. cookie 和session 的区别
  3. 简单看看这两个类 String和StringBuilder
  4. Win7重装后,如何删除cygwin目录?
  5. 菜鸟学习Spring——60s配置XML方法实现简单AOP
  6. aspose调用打印机打印文档
  7. java 中常见异常
  8. 交易策略研究 R库
  9. Xcode中添加代码块的方式
  10. Python 妙用heapq
  11. plus初始化原理及plus is not defined,mui is not defined 错误汇总
  12. 020、搭建本地Registry(2019-01-11 周五)
  13. C# 合并两张图片
  14. js实现抽奖
  15. DBProxy
  16. idea上传项目到github出现"remote with selected name already exists"情况的解决
  17. eclipse基于git上传项目到码云上
  18. linux 下的常用操作命令
  19. python中判断实例可迭代地几种方式
  20. 【Java面试题】35 List, Set, Map是否继承自Collection接口?

热门文章

  1. iOS 分享功能开发
  2. Python网络编程--Echo服务
  3. 《avascript 高级程序设计(第三版)》 ---第一章 Javascript简介
  4. 在datax之前版本中添加filewriter并创建job时出现问题
  5. 大数据之路- Hadoop环境搭建(Linux)
  6. lucene内置的评分函数
  7. hdu 6103(Kirinriki)
  8. apache之访问本地文件,绑定域名
  9. Node初学者入门,一本全面的NodeJS教程
  10. OGG 11g Checkpoint 详解