java如何实现引用传参?类似C/C++的引用?
java中引用传参是针对对象的变量的,而基本数据类型不能创建对象,因此你用int类型定义的变量传过去的还是变量值!你回去好好看看java的对内存和栈内存的知识就明白了
10 java中对象和引用的关系?
1.概念解释
强引用是使用最普遍的引用:Object o=new Object(); 特点:不会被GC
将对象的引用显示地置为null:o=null; // 帮助垃圾收集器回收此对象
举例ArrayList的实现源代码:
软引用用来描述一些还有用但是并非必须的对象,在Java中用java.lang.ref.SoftReference类来表示。对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。因此,这一点可以很好地用来解决OOM的问题,并且这个特性很适合用来实现缓存:比如网页缓存、图片缓存等。
浏览器网页缓存实例:
软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。
弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。
如果这个对象是偶尔的使用,并且希望在使用时随时就能获取到,但又不想影响此对象的垃圾收集,那么你应该用 Weak Reference 来记住此对象。实例:
虚引用也称为幻影引用:一个对象是都有虚引用的存在都不会对生存时间都构成影响,也无法通过虚引用来获取对一个对象的真实引用。唯一的用处:能在对象被GC时收到系统通知,JAVA中用PhantomReference来实现虚引用。
2.对比不同:java里为什么用接口引用实现类的对象?
作为一个多年的程序员,一直在用Java做开发,我觉得很有资格来回答您の这个问题。
接口在Java需要中很常见,尤其是在Spring框架中有大量的接口。
接口存在的主要意义是统一,对于调用者来说只需调用相同的方法即可。每个人都有各自不同的实现,调用者不用关心你具体的实现方法,只需关心统一的接口,这种方式可以降低使用者的使用门槛,也使程序可以轻松切换具体的实现。
这种接口方式得以实现得益于Java的多态机制。
即当有父类引用子类实例的时候,执行的是子类的方法。
要想有多大需要满足两个条件
1.子类中有重写
2.父类引用指向子类实例
有一个很简单的例子,java.util中的类ArrayList实现了接口List则生成ArrayList对象时可用以下语句.
List list=new ArrayList();
也就是说所有实现了接口List的类,都可以用List接口来声明对象类型,然后用实体类进行实例化.这表明了接口可以用来作为类型的表述.当然,生成的对象list只能调用接口List中提供的方法.
同样的操作也可以用在父类与子类身上,例如设A类是B类的父类
则创建B类对象的时候可以用以下语句
A b=new B();
这样的用法可以大大提高编程的灵活性.
这是java中的向上转型,实现java编程的多态。
简单的一句话讲就是父类引用指向子类对象。
上转型对象不是父类创建的对象,而是子类对象的“简化”状态,它不关心子类新增的功能,只关心子类继承和重写的功能。
当一个类有很多子类时,并且这些子类都重写了父类中的某个方法。
当使用上转型对象在调用这个方法时就可能具有多种形态。因为不同的子类在重写父类的方法时可能产生不同的行为。也就是说,不同对象的上转型对象调用同一方法可能产生不同的行为