在前面的几篇博客中,变量这个名字出现了好几次,如果是接触过编程这一块的理解起来会好一些,如果是纯新手小白的话可能就会有点晕了,所以这一篇博客主要就来聊一聊Java中的变量以及和变量很像但是又有不同的常量。
1、变量(variable)
变量,顾名思义,就是变化的量。
我们可以通过变量来操作存储空间中的数据,变量就是指代这个存储空间,一旦你定义了一个一个变量,那么空间的位置就确定了,虽然空间位置是确定的,但是里面放什么值是不确定的,不好理解的话可以这样想一下:
一个大储物箱里有很多小格子来存放东西,在存放东西的时候就可以在这些格子贴一个小标签,这样贴上标签后,我们就知道哪个格子放什么。但是我们也只是知道格子里放的是什么,不知道具体放的是什么,比如A格子中我放鞋子,你是不知道你放的是什么牌子的鞋子。那个标签就相当于我们的变量,我们给他起了个名字,但是里面要放什么需要我们自己 去放。(语言表达能力有限。。)
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式为:
1 type varName [=value] [{,varName[=value]}] ; 2 //数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
注意事项:
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
演示:
1 int a, b, c; // 声明三个int型整数:a、 b、c 2 int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值 3 byte z = 22; // 声明并初始化 z 4 String s = "runoob"; // 声明并初始化字符串 s 5 double pi = 3.14159; // 声明了双精度浮点型变量 pi 6 char x = 'x'; // 声明变量 x 的值是字符 'x'。
2、变量作用域
我们不仅仅要了解什么是变量,怎么创建变量,更重要的是我们还需要了解变量怎么用,在哪里用。
根据作用域变量可以分为:
类变量(静态变量: static variable):独立于方法之外的变量,用 static 修饰。
实例变量(成员变量:member variable):独立于方法之外的变量,不过没有 static 修饰。
局部变量(lacal variable):类的方法中的变量。
演示:
1 public class Variable{ 2 static int allClicks=0; // 类变量 3 String str="hello world"; // 实例变量 4 public void method(){ 5 int i =0; // 局部变量 6 } 7 } 8
局部变量
方法或语句块内部定义的变量。生命周期是从声明位置开始到”}”为止。
在使用前必须先声明和初始化(赋初值)。
局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
实例变量
方法外部、类的内部定义的变量。
从属于对象,生命周期伴随对象始终。
如果不自行初始化,他会自动初始化成该类型的默认初始值
(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
静态变量
使用static定义。
从属于类,生命周期伴随类始终,从类加载到卸载。(注:讲完内存分析后我们再深入!先放一放这个概念!)
如果不自行初始化,他会自动初始化成该类型的默认初始值
(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
3、常量
常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
1 final 常量名=值; 2 final double PI=3.14; final String LOVE="hello";
常量名一般使用大写字符。
程序中使用常量可以提高代码的可维护性。例如,在项目开发时,我们需要指定用户的性别,此时可以 定义一个常量 SEX,赋值为 "男",在需要指定用户性别的地方直接调用此常量即可,避免了由于用户的 不规范赋值导致程序出错的情况。
4、变量的命名规范
1. 所有变量、方法、类名:见名知意
2. 类成员变量:首字母小写和驼峰原则 : monthSalary
3. 局部变量:首字母小写和驼峰原则
4. 常量:大写字母和下划线:MAX_VALUE
5. 类名:首字母大写和驼峰原则: Man, GoodMan
6. 方法名:首字母小写和驼峰原则: run(), runRun()