1 什么是变量?
变量就是内存中的一块区域,变量有名字,有对应的值,这块区域有大小(由数据类型决定,如 int, long )
源于数学中的变量,比如 y = x + 10 , 这里面的 x , y 都是变量
在Java中,变量分为两种:基本类型的变量
和引用类型的变量
。
2 如何定义一个变量?
变量必须是先声明后使用,那么如何声明一个变量呢?
语法如下:
数据类似 变量名;
下面是一些声明示例如下:
int age = 18;
由上述语句可知:
- 变量的名字是
age
- 变量 age 存储的值是
18
- 变量 age 在内存中占4个字节,原因是 age 是 int 类型的,int 类型在内存中占 4 个字节
- 必须是分号
;
结尾
注:对于此例子, 如果定义变量的时候不给一个初始值,那么变量默认的就是 0
下面一张图更清楚的表示了变量在内存中的样子
下面是一些声明变量的例子:
int age = 18; //声明了一个变量 : age , 并初始化为:18 int a,b,c; //声明了 3 个变量:a,b,c String s = "www.helloworld.net" ; //声明并初始化变量: s float pi = 3.14f; //声明并初始化变量: pi
3 变量的分类
Java的变量可以分为 3 类:
- 类变量:独立于方法之外的变量,用
static
修饰,通常也称作类变量
- 实例变量:独立于方法之外的变量,没有
static
修饰 - 局部变量:类的方法中的变量或者方法的参数
如何声明各种变量,示例如下:
public class HelloWorld { static int id = 1000; //类变量 , 使用 static 修饰 String name; //实例变量, public static void main(String[] args) { String site = "www.helloworld.net"; //局部变量 , 定义在方法中 } }
3.1 类变量用法
类变量使用 static
修饰,不属性任何对象
示例如下:
public class HelloWorld { static int id = 1000; //类变量 , 使用 static 修饰 public static void main(String[] args) { System.out.println(HelloWorld.id); //输出:1000 } }
3.2 实例变量
实例变量不用 static
修饰,必须创建类的实例后,才能使用
示例如下:
public class HelloWorld { String site = "www.helloworld.net"; //定义了一个实例变量 public static void main(String[] args) { HelloWorld hw = new HelloWorld(); // 首先创建一个类的实例 hw System.out.println(hw.site); // 输出:www.helloworld.net } }
3.3 局部变量
局部变量,是定义在方法中的变量,作用域也在方法内,出了方法,变量就不起作用了
示例如下:
public class HelloWorld { public static void main(String[] args) { float pi = 3.14f; System.out.println(pi); //输出:3.14 } }
4 变量命名规范
对于变量名,每种编程语言都有自己的命名规则,但是大部分都是一样的。
Java的变量命名规范如下:
- 以字母,美元符号
$
或者下划线_
开头的合法的标符,注:不能以数字开头 - 后续的字符可以是
字母
,数字
,美元符号$
或者下划线_
开头 - 变量名是区分大小写的
- 关键字或者保留字不能作为变量名
下面还有几个约定成俗的规范,虽然非强制,但是建议这么做
- 变量命名应该用小驼峰命名法。
什么是小驼峰命名呢? 比如
maxValue
,userAge
等 即:除了第一个单词首字母小写外,其它单词的首字母全部大写 - 如果是常量,建议所有字母全部大写,并且单词之间用下划线分开,如
final int MAX_VALUE = 10;
我们看一下下面的示例:
//区分大小写,age 和 AGE 是两个不同的变量 int age = 18; int AGE = 18; //小驼峰 String siteUrl = "www.helloworld.net"; //常量 final int MAX_VALUE = 100;
5 基本类型的变量和引用类型的变量
在Java中,从变量的类型上分,可以将变量分为 基本类型的变量和引用类型的变量
上面讲的就是基本类型的变量,如 byte
,short
,int
,long
, float
,double
,char
,boolean
通过上面的讲解我们知道 ,变量就是内存中的一块区域,这块区域有类型,有大小,有名字,有存储的值
我们从存储的值
来了解基本类型的变量
和引用类型的变量
的区别
- 基本类型变量:比如
int a = 10
,变量a
存储的值就是数据本身 ,也就是10
, 即这块区域存储的值就是10
- 引用类型变量:比如我们有一个类叫 Student , 定义一个变量
Student stu = new Student("小明",23)
变量stu
就是引用类型的变量,这块内存区域存储的值并不是Student
对象的真实的数据,而且存储的是对象的引用,你可以理解为"地址" 通过这个地址是可以找到真实的存储对象的那块内存区域
例子:关于基本类型的变量和引用类型的变量 ,我还想举一个例子,来加深理解
基本类型变量:就像一个人,这个人只有一个房车,整个家就是一个房车,走到哪开到哪
引用类型变量:也像一个人,不过这个人有自己的房子,所以,走到哪,房子不能带到哪,只能把房子的地址带在身上
上面的“房子”就是真实的数据
- 基本类型的变量,存储的是自己本身,也就是数据本身
- 而引用类型的变量,由于房子是不动产,没法时间带在身边,所以只能把地址带身上,真实的房子并不在身边
小结
通过上面的学习,我知道了变量的一些知识,下面来总结一下:
- 变量对应的是一块内存区域,这块区域有名字,有存储的值,有类型(决定这块区域占多大的内存空间)
- 变量的声明方法:
数据类型 变量名字
, 如String site = "www.helloworld.net";
- 必须以分号
;
结尾 - 变量分为
类变量
,实例变量
,局部变量
- 变量命名以小驼峰为规范,如
int useAge = 18;
- 常量的话,全部大写,每个单词之间以下划线
_
为分隔,如final int MAX_VALUE = 100;
- 基本类型的变量存储的是数据本身
- 引用类型的变量存储的是是引用,可以理解为内存的地址(实际上不是,但是可以这样理解),地址对应的那块区域才是真实的数据