加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2014-12-25 16:31:31)
标签:

java

基本类型

引用类型

分类: JAVA

一、定义

基本类型:

基本类型的值就是一个数字,一个字符或一个布尔值。

8种基本类型

boolean      char       byteshortintlong        floatdouble

引用类型:

引用类型是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值 主要有类class、接口interface、数组array

 

下表列出了原始类型以及它们的对象封装类。(关于装箱拆箱容后详述)

原始类型

封装类

boolean

 Boolean

 char

Character

byte

 Byte

short

 Short

int

Integer

long  

Long

float

Float

double

 Double

 

二、创建

1.基本类型

int n = 123;

栈(Stack上申请一段内存空间,存储n的值123

2.引用类型的创建

MyDate date = new MyDate(000);

1)首先在内存中为date分配一块空间;(还没有赋值)

2)然后在内存中为MyDate对象分配一块空间

3)调用构造方法,为三个属性赋值;(注意这个时候dateMyDate对象之间还没有建立联系)

4)将MyDate对象在堆内存中的地址赋值给栈中的date;通过句柄date可以找到堆中对象的具体信息。

由此可见,基本类型的创建比引用类型简单、快速


http://s6/mw690/001fQGLxzy6OF0DY2yh25&690

三、传递

1、基本类型:

当把Java的基本数据类型作为入口参数传给函数体的时候,传入的参数在函数体内部变成了局部变量,这个局部变量是输入参数的一个拷贝,所有的函数体内部的操作都是针对这个拷贝的操作,函数执行结束后,这个局部变量也就完成了它的使命,它影响不到作为输入参数的变量。这种方式的参数传递被称为"值传递"

实参传递给形参的值是实参的拷贝,形参发生改变而不影响实参。

2、引用类型:

在任何用""向对象变量赋值的时候都是"引用传递"

传递引用传的是对象的首地址,就是将实参的地址传递给形参,形参改变了,实参当然被改变了,因为他们指向相同的地址。

    public class AnyTest { 

        public static void modifyPoint(Point pt, int in) { 

            //这里的pt是入参pt的引用的副本,而不是入参pt的副本,即Java以传值方式传递pt的引用  

            //也就是说,pt和入参pt现在指向的是同一个Point对象,详见图示  

            pt.setLocation(5, 5); 

            in = 15; //这里的in其实是入参in的一个副本,所有的更改都是对in而言,跟入参in无关  

            System.out.println("During modifyPoint " + "pt = " + pt + "and in = " + in); 

       

        public static void main(String[] args) { 

            Point p = new Point(0,0); 

            int i = 10; 

            System.out.println("Before modifyPoint " + "p = " + p + "and i = " + i); 

            modifyPoint(p, i); 

            System.out.println("After modifyPoint " + "p = " + p + "and i = " + i);            

             


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、引用类型

垃圾回收,需要开销 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有