Java中的基本类型和引用类型

标签:
java基本类型引用类型 |
分类: JAVA |
一、定义
基本类型:
基本类型的值就是一个数字,一个字符或一个布尔值。
8种基本类型
boolean
引用类型:
引用类型是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。
下表列出了原始类型以及它们的对象封装类。(关于装箱拆箱容后详述)
原始类型 |
封装类 |
boolean |
|
|
Character |
byte |
|
short |
|
int |
Integer |
long |
Long |
float |
Float |
double |
|
二、创建
1.基本类型
int n = 123;
在栈(Stack)上申请一段内存空间,存储n的值123
2.引用类型的创建
MyDate date = new MyDate(0,0,0);
1)首先在栈内存中为date分配一块空间;(还没有赋值)
2)然后在堆内存中为MyDate对象分配一块空间
3)调用构造方法,为三个属性赋值;(注意这个时候date与MyDate对象之间还没有建立联系)
4)将MyDate对象在堆内存中的地址赋值给栈中的date;通过句柄date可以找到堆中对象的具体信息。
由此可见,基本类型的创建比引用类型简单、快速
http://s6/mw690/001fQGLxzy6OF0DY2yh25&690
三、传递
1、基本类型:
当把Java的基本数据类型作为入口参数传给函数体的时候,传入的参数在函数体内部变成了局部变量,这个局部变量是输入参数的一个拷贝,所有的函数体内部的操作都是针对这个拷贝的操作,函数执行结束后,这个局部变量也就完成了它的使命,它影响不到作为输入参数的变量。这种方式的参数传递被称为"值传递"。
实参传递给形参的值是实参的拷贝,形参发生改变而不影响实参。
2、引用类型:
在任何用"="向对象变量赋值的时候都是"引用传递"
传递引用传的是对象的首地址,就是将实参的地址传递给形参,形参改变了,实参当然被改变了,因为他们指向相同的地址。
}
output:
Before modifyPoint p = java.awt.Point[x=0,y=0]and i = 10
During modifyPoint pt = java.awt.Point[x=5,y=5]and in = 15
After modifyPoint p = java.awt.Point[x=5,y=5]and i = 10
由此可见,传入基本类型在函数中修改后,实参无影响,引用类型修改实际修改的就是实参。
四、销毁
1、基本类型
超出基本类型定义的作用域后,会自动释放,开销小
2、引用类型
垃圾回收,需要开销