什么是变量

在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)遵守变量名称的命名规范(命名规范会在后面的章节进行讲解)。

IT兄弟连 Java语法教程 变量1的更多相关文章

  1. IT兄弟连 Java语法教程 变量2

    变量的作用域和生命周期 到目前为止,使用的所有变量都是在main()方法开始时声明的,然而,Java允许在任何代码块(代码块以开花括号开始,以闭花括号结束)中声明变量,代码块定义了作用域.因此,每当开 ...

  2. IT兄弟连 Java语法教程 标识符和关键字

    Java语言也和其它编程语言一样,使用标识符作为变量.对象的名字.也提供了一系列的关键字用以实现特别的功能.本小节将详细介绍Java语言的标识符和关键字等内容. 1.分隔符 Java语言里的分号“;” ...

  3. IT兄弟连 Java语法教程 Java开发环境 配置Java环境变量

    在安装完JDK后,我们需要配置系统的环境变量,否则在控制台中使用JDK为我们提供的工具时将出现如图12所示的错误信息. 图12  未配置环境变量时执行java命令提示的错误信息 当出现这样的提示信息时 ...

  4. IT兄弟连 Java语法教程 数组 多维数组 二维数组的声明

    Java语言里提供了支持多维数组的语法.但是这里还想说,从数组底层的运行机制上来看是没有多维数组的. Java语言里的数组类型是引用类型,因此数组变量其实是一个引用,这个引用指向真实的数组内存,数组元 ...

  5. IT兄弟连 Java语法教程 数组 使用foreach循环遍历数组元素

    从JDK5之后,Java提供了一种更简单的循环:foreach循环,也叫作增强for循环,这种循环遍历数组和集合更加简洁.使用foreach循环遍历数组和集合元素时,无需获得数组或集合的长度,无需根据 ...

  6. IT兄弟连 Java语法教程 数组 数组的使用

    数组最常用的用法就是访问数组元素,包括对数组元素进行赋值和取出数组元素的值.访问数组元素都是通过在数组引用变量后紧跟一个方括号([]),方括号里是数组元素的索引值,这样就可以访问数组元素了.访问到数组 ...

  7. IT兄弟连 Java语法教程 数组 数组的初始化

    Java语言中数组必须先初始化,然后才可以使用.所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值. 这时有人会问,能不能只分配内存空间,不赋初始值呢?答案是肯定不行的,一旦为数组 ...

  8. IT兄弟连 Java语法教程 数组 数组的声明

    Java语言支持两种语法格式来定义数组: type[] arrayName; type arrayName[]; 对这两种语法格式而言,通常推荐使用第一种格式,因为第一种格式不仅具有更好的语义,而且具 ...

  9. IT兄弟连 Java语法教程 流程控制语句 循环结构语句1

    循环语句可以在满足循环条件的情况下,反复执行某一点代码,这段被重复执行的代码被称为循环体,当反复执行这个循环体时,需要在合适的时候把循环条件该为假,从而结束循环,否则循环将一直执行下去,形成死循环.循 ...

随机推荐

  1. NBU官方Doc網址https://www.veritas.com/support/en_US/article.DOC5332

    NBU(NetBackup) 7.0之後的版本官方文檔鏈接地址: https://www.veritas.com/support/en_US/article.DOC5332

  2. u-boot移植总结(三)(转)S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)

    S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A) 转载自:http://www.cnblogs.com/idle_man/archive/2010/12/23/19153 ...

  3. refresh的停车场

    题目描述  refresh最近发了一笔横财,开了一家停车场.由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多.当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优先 进入停车 ...

  4. Git 介绍

    一,理解 Git 1,分布式版本控制 Git 版本控制系统的设计思想是"去中心化".传统的 CVS .SVN 等工具采用的是 C/S 架构,只有一个中心代码仓库,位于服务器端.而一 ...

  5. JavaScript 【跨浏览器处理XML,做个兼容】

    //兼容方法        function getXMLDOM(xmlStr) {            var xmlDom = null;            if (typeof windo ...

  6. luogu3346 诸神眷顾的幻想乡 (广义SAM)

    首先,让每一个叶节点做一次树根的话,每个路径一定至少有一次会变成直上直下的 于是对于每个叶节点作为根产生的20个trie树,把它们建到同一个广义SAM里 建法是对每个trie dfs去建,last就是 ...

  7. 7.7 wordcnt.c 程序

    wordcnt.c 程序 #include <stdio.h> #include <ctype.h> // 为isspace() 函数提供原型 #include <std ...

  8. docker+redis 持久化配置(AOF)

    RDB持久化与AOF持久化简单描述 RDB:RDB使用快照的方式存储数据库中的内容,直接将所有键值对数据全部存入二进制文件.建议使用BGSAVE来进行备份,整个过程会新fork一个子进程来执行,不影响 ...

  9. Delphi下让窗口不显示在任务栏的另类方法

    刚才看到了这篇东西<使窗口不在任务栏上显示(利用ITaskbarList接口)>,作者用ITaskList接口实现了隐藏窗口在任务栏按钮的功能,想起我好多年以前做的程序也有这样的功能,但是 ...

  10. 雷林鹏分享:Ruby CGI Sessions

    Ruby CGI Sessions CGI::Session 可以为用户和CGI环境保存持久的会话状态,会话使用后需要关闭,这样可以保证数据写入到存储当中,当会话完成后,你需要删除该数据. #!/us ...