- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章关于Java Object你真的了解了吗由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
导读: 在平时的coding中hashCode()和equals()的使用的场景有哪些?clone深复制怎么实现?wait()和notify()有什么作用?finalize()方法干嘛的?看似coding中使用的不多,不重要,但是有没有跟我一样,想好好的了解一下的。毕竟是基础中的基础.
下面给出一个简单比较全面的概要:
1. hashCode()和equals() 。
public boolean equals(Object obj) {return (this == obj);} 。
public native int hashCode(),
1.当equals()方法被override时,hashCode()也要被override. 。
2.当equals()返回true,hashcode一定相等。即:相等(相同)的对象必须具有相等的哈希码(或者散列码) 。
3.如果两个对象的hashCode相同,它们并不一定相同.
4.在集合查找时,hashcode能大大降低对象比较次数,提高查找效率! 。
在判断重复元素时,直接通过hashcode()方法,定位到桶位置,如果该位置有元素,再调用equals()方法判断是否相等。而不是遍历每一个元素比较equals()! 。
2. clone() 深复制 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
public
class
Animal
implements
Cloneable {
private
int
height;
private
int
age;
public
Animal(
int
height,
int
age){
this
.height = height;
this
.age = age;
}
@Override
public
Object clone()
throws
CloneNotSupportedException {
return
super
.clone();
}
}
public
class
People
implements
Cloneable {
private
int
height;
private
int
age;
private
Animal a;
public
People(
int
height,
int
age,Animal a){
this
.height = height;
this
.age = age;
this
.a = a;
}
@Override
public
Object clone()
throws
CloneNotSupportedException {
People p = (People)
super
.clone();
p.a = (Animal) a.clone();
return
p;
}
}
Animal a1 =
new
Animal(
100
,
3
);
People p1 =
new
People(
173
,
24
,a1);
//深复制
People p2 = (People) p1.clone();
|
3. wait()和notify() 。
•只有获得该对象锁之后才能调用,否则抛IllegalMonitorStateException异常 。
•任何一个时刻,对象的控制权(monitor)只能被一个线程拥有.
线程取得控制权的方法有三:
1. 执行对象的某个同步实例方法.
2. 执行对象对应类的同步静态方法.
3. 执行对该对象加同步锁的同步块.
执行对该对象加同步锁的示例:
1
2
3
4
|
synchronized
(pepoleObject) {
pepoleObject.notifyAll();
pepoleObject.wait();
}
|
4. finalize() 。
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾加收器调用此方法,只能调用一次。当对象被回收时需要配置系统资源或执行其他清除,子类重写finalize方法实现.
以上这篇关于Java Object你真的了解了吗就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.
最后此篇关于关于Java Object你真的了解了吗的文章就讲到这里了,如果你想了解更多关于关于Java Object你真的了解了吗的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我遵循了一本名为“Sitepoint Full Stack Javascript with MEAN”的书中的教程,我刚刚完成了第 6 章,应该已经创建了一个带有“数据库”的“服务器”。数据库只不过是
在 Jquery 中,我创建两个数组,一个嵌入另一个数组,就像这样...... arrayOne = [{name:'a',value:1}, {name:'b',value:2}] var arra
这个问题在这里已经有了答案: What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wa
我被放在别人的代码上,有一个类用作其他组件的基础。当我尝试 ng serve --aot(或 build --prod)时,我得到以下信息。 @Component({ ...,
我正在测试一些代码,并使用数据创建了一个 json 文件。 问题是我在警报中收到“[object Object],[object Object]”。没有数据。 我做错了什么? 这是代码:
我想打印 [object Object],[object Object] 以明智地 "[[{ 'x': '1', 'y': '0' }, { 'x': '2', 'y': '1' }]]"; 在 ja
我有一个功能 View ,我正在尝试以特殊格式的方式输出。但我无法让列表功能正常工作。 我得到的唯一返回是[object Object][object Object] [object Object]
在使用优秀的 Sim.js 和 Three.js 库处理 WebGL 项目时,我偶然发现了下一个问题: 一路走来,它使用了 THREE.Ray 的下一个构造函数: var ray = new THRE
我正在使用 Material UI 进行多重选择。这是我的代码。 {listStates.map(col => (
我的代码使用ajax: $("#keyword").keyup(function() { var keyword = $("#keyword").val(); if (keyword.
我遇到了下一个错误,无法理解如何解决它。 Can't resolve all parameters for AuthenticationService: ([object Object], ?, [o
我正在尝试创建一个显示动态复选框的表单,至少应选中其中一个才能继续。我还需要获取一组选中的复选框。 这是组件的代码: import { Component, OnInit } from '@angul
我正在开发 NodeJs 应用程序,它是博客应用程序。我使用了快速验证器,我尝试在 UI 端使用快速闪存消息将帖子保存在数据库中之前使用闪存消息验证数据,我成功地将数据保存在数据库中,但在提交表单后消
我知道有些人问了同样的问题并得到了解答。我已经查看了所有这些,但仍然无法解决我的问题。我有一个 jquery snipet,它将值发送到处理程序,处理程序处理来自 JS 的值并将数据作为 JSON 数
我继承了一个非常草率的项目,我的任务是解释为什么它不好。我注意到他们在整个代码中都进行了这样的比较 (IQueryable).FirstOrDefault(x => x.Facility == fac
我只是在删除数组中的对象时偶然发现了这一点。 代码如下: friends = []; friends.push( { a: 'Nexus', b: 'Muffi
这两个代码片段有什么区别: object = nil; [object release] 对比 [object release]; object = nil; 哪个是最佳实践? 最佳答案 object
我应该为其他人将从中继承的第一个父对象传递哪个参数,哪个参数更有效 Object.create(Object.prototype) Object.create(Object) Object.creat
我在不同的对象上安排不同的选择器 [self performSelector:@selector(doSmth) withObject:objectA afterDelay:1]; [self per
NSLog(@"%p", &object); 和 NSLog(@"%p", object); 有什么区别? 两者似乎都打印出一个内存地址,但我不确定哪个是对象的实际内存地址。 最佳答案 这就是我喜欢的
我是一名优秀的程序员,十分优秀!