大家知道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系列的文章,目前java线程篇刚刚更新结束,大家如果对java感兴趣可以关注我并查看我的文章。所以这个问题一定要回答一下。
java是面向对象语言,面向对象语言的特征总结一下无非就是4大概念、3大特征、1个过程。先说这4大概念:
-
类(class):java中以类来组织代码,所有的功能都封装在类中,可以说写java程序就是写类。那么怎么来理解这个类呢?简单的说类就是同一类事务概念层次上的抽象。好像这个解释也不太好理解,那么你第一步可以这么认为:java中的类就是“图纸”,有了这个“图纸”,我们就知道它想做什么事儿,能做什么事。但是“图纸”本身做不了事,这个要搞清楚。
-
对象(Object):对象简单的说就是存储在内存中,能执行具体功能的实体。借用埃克尔在《Thinking in java》一书的一句话:all everything is a object,也就是万物皆对象。如果我们把类看作是“图纸”的话,那对象就是根据这个“图纸”创作出来的“实物”,所以对象是能够具体执行功能的实实在在的实体。
-
方法(method):方法是描述功能的基本单位,如果说写java程序就是写类的话,那么写类就是写方法。java与Python不同的一个地方就是java中没有函数的概念,java中只有方法的概念,Java中所有的功能都通过方法来呈现。所以方法在java中具有举足轻重的作用,由方法派生出来的面向对象概念也较多,比如:方法重写、方法重载、抽象方法、最终方法等。
- 属性(Attribute):属性的作用简单的说就是描述状态的,描述对象的状态。属性与方法分别作为描述对象的两个主要方面:属性描述状态、方法描述功能。也可以简单的说:对象是由属性和方法组成的。属性在Java中又分为成员属性和局部属性,通常描述状态指的是成员属性,局部属性的作用是为了完成某一功能而临时存在的,所以局部属性是定义在方法体内的,生命周期也仅仅局限在方法体内。和方法一样,属性也有变量、常量、静态/非静态来分别完成不同的状态描述。
下面我们看一下3大特征:
-
封装:封装是隐藏类内部的实现细节,用公共的方法操作其私有的属性。简单的说java中的封装分为三步来实现:(1)设置属性为私有。(2)定义设置器。(3)定义获取器。封装是java实体类必须做的事情,也是java程序员要掌握的基础内容。
-
继承:从一个已知类派生出新类的过程称为继承,java中只能单继承不能多继承(与Python不同)。继承的概念体现的主要设计思想是复用,为了弥补在多继承方面的不足,java采用了接口(interface)来完成多继承的相似功能。
-
多态:同一个对象在不同条件下表现的不同形式。简单的说java的多态就是3个定义、2个方法,3个定义分别是父类定义子类赋值、接口定义类赋值、抽象类定义实体类赋值,2个方法分别是:方法重写和方法重载。
最后看1个过程:这个过程称为面向对象编程过程,分为3步:(1)类的定义。(2)对象的创建。(3)方法的调用。
由于篇幅的问题,这里就不再展开说明了,如果要想进一步了解,可以去看看我在写的java系列文章。希望我的回答能帮助你理解java中的类和对象,再次感请!