Java根据变量的类型不同可分为简单类型和引用类型变量,这两种类型的变量主要有以下不同。
1) 存储机制
简单类型变量是直接在栈内存中开辟存储空间存储变量值。
引用类型变量是由引用空间和存储空间两部分构成,引用空间在栈内存中,存储空间在堆内存,存储空间负责存储变量值,引用空间负责存放存储空间的首地址。引用变量中存放的是地址值,通过地址值可以定义存储位置并修改存储信息。
简单类型和引用类型变量存储机制如下图所示:
2.变量传递
当变量与变量之间赋值时,引用类型变量和简单变量都属于值传递,不同的是简单变量传递的是内容本身,而引用变量传递的是引用地址,具体示例如下
简单变量赋值
public class Demo
{
public static void main(String[] args)
{
int i = 8 ; //简单变量j
int j = i; //将i变量值赋给j
j = j + 1 ; //j + 1
System.out.println(i);
System.out.println(j);
}
}
在上述代码中,i和j是属于简单类型变量,因此在赋值时,将i的值复制给了j,完毕后i和j并没有任何关系,修改j的值影响i。
引用变量赋值
public class Demo
{
public static void main(String[] args)
{
//定义引用变量
Person p = new Person();
p.name = "张三";
p.age = 18;
Person p2 = p; //将变量p的地址赋给p2
p2.name = "李四";
p2.age = 19;
//输出两者的信息
System.out.println(p.name + " " + p.age);
System.out.println(p2.name + " " + p2.age);
}
}
//定义一个类
class Person
{
String name;
int age;
}
P和p2属于引用类型变量,因此在赋值时,将p的引用地址复制给p2,所以两者有着相同的地址,这是说当p2修改信息时,P也会受到影响
|