JAVA-对象

1、一切都是对象,用引用控制对象

    引用与对象是相互独立存在的

    例如:

        String s;  //定义一个引用s,s没有与任何对象关联

        String s = "hello"  //定义一个引用s,并与对象关联


2、对象的作用域

    {

        String s = new String("hello");

    }

    引用s在作用域终点处消失了,但是s所指向的String对象永远占据着内存空间


3、对象赋值和函数传参

    对象赋值,如:

        String s1 = "aaaaa";

        String s2 = "bbbbb";

        s1 = s2;            //s1与s2指向同一个对象"bbbbb"

    函数传参,如

        void set(String price){

            price = "100";           //传递的是String对象的引用,所以可以正确修改对象的值

        }


4、JAVA垃圾回收器

    垃圾回收器只回收由new分配的内存,当对象不是通过new(C/C++中malloc)而获得了一块"特殊"的内存区域,这种情况下,垃圾回收器(没法执行free方法)是没办法释放这块内存的。

    调用finalize方法,垃圾回收器会在下一次垃圾回收动作执行时,回收无效对象的内存。

    在C/C++中,在堆上创建对象的代价是十分昂贵的,但是在JAVA中,由于垃圾回收机制的存在,在堆上创建对象的速度竟然可以和C/C++相媲美(JAVA中所有对象,除了基本类型,都在堆上创建)。

    引用计数,由于对象之间的相互引用的问题,通常并不会在JAVA虚拟机中被使用。垃圾回收的思想:对于任何"活的对象",一定能够追溯到其存活在堆栈或者静态存储区中的引用,这个引用可能会贯穿数个对象的层次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值