- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章深入了解Java核心类库--Objects类由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
工具类,常用于检查操作 。
返回值 | 方法名 | 作用 |
---|---|---|
static int | checkFromIndexSize(int fromIndex, int size, int length) | 检查子范围[ fromIndex ,fromIndex + size)是否在 [0,length)范围界限内。 |
static int | checkFromToIndex(int fromIndex, int toIndex, int length) | 检查子范围[ fromIndex ,toIndex)是否在 [0,length)范围界限内 |
static int | checkIndex(int index, int length) | 检查子范围index是否在 [0,length)范围界限内 |
static int | compare(T a, T b, Comparator<? super T> c) | 如果参数a,b相同则返回0,否则返回c.compare(a, b)的结果 |
static boolean | deepEquals(Object a, Object b) | 对比a,b参数是否深层次相等(如果a,b为数组,则对比数组的每个参数) |
static boolean | equals(Object a, Object b) | 对比a,b参数是否相等 |
static int | hash(Object… values) | 为输入值序列生成哈希码 |
static int | hashCode(Object o) | 非空返回哈希码,null则抛出NullPointerException |
static boolean | isNull(Object obj) | obj参数为null返回true |
static boolean | nonNull(Object obj) | obj参数不为null返回true |
static T | requireNonNull(T obj) | 检查指定的对象引用不是 null,为null则抛出NullPointerException |
static T | requireNonNull(T obj, String message) | 检查指定的对象引用不是null,否则抛出自定义的NullPointerException |
static T | requireNonNull(T obj, Supplier messageSupplier) | 检查指定的对象引用是否为null ,如果是,则抛出自定义的NullPointerException 。 |
static T | requireNonNullElse(T obj, T defaultObj) | 如果它是非 null ,则返回第一个参数,否则返回非 null第二个参数。 |
static T | requireNonNullElseGet(T obj, Supplier<? extends T> supplier) | 如果它是非 null ,则返回第一个参数,否则返回非 null值 supplier.get() 。 |
static String | toString(Object o) | 返回对象的字符串表示形式 |
static String | toString(Object o, String nullDefault) | 如果第一个参数不是 null ,则返回第一个参数调用 toString的结果,否则返回第二个参数 |
equals(Object a, Object b)源码: public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); } 。
isNull(Object obj)源码: public static boolean isNull(Object obj) { return obj == null; } 。
nonNull(Object obj)源码: public static boolean nonNull(Object obj) { return obj != null; } 。
requireNonNull(T obj)源码: public static T requireNonNull(T obj) { if (obj == null) throw new NullPointerException(); return obj; } 。
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
package
java.util;
import
jdk.internal.util.Preconditions;
import
jdk.internal.vm.annotation.ForceInline;
import
java.util.function.Supplier;
public
final
class
Objects {
private
Objects() {
throw
new
AssertionError(
"No java.util.Objects instances for you!"
);
}
public
static
boolean
equals(Object a, Object b) {
return
(a == b) || (a !=
null
&& a.equals(b));
}
public
static
boolean
deepEquals(Object a, Object b) {
if
(a == b)
return
true
;
else
if
(a ==
null
|| b ==
null
)
return
false
;
else
return
Arrays.deepEquals0(a, b);
}
public
static
int
hashCode(Object o) {
return
o !=
null
? o.hashCode() :
0
;
}
public
static
int
hash(Object... values) {
return
Arrays.hashCode(values);
}
public
static
String toString(Object o) {
return
String.valueOf(o);
}
public
static
String toString(Object o, String nullDefault) {
return
(o !=
null
) ? o.toString() : nullDefault;
}
public
static
<T>
int
compare(T a, T b, Comparator<?
super
T> c) {
return
(a == b) ?
0
: c.compare(a, b);
}
public
static
<T> T requireNonNull(T obj) {
if
(obj ==
null
)
throw
new
NullPointerException();
return
obj;
}
public
static
<T> T requireNonNull(T obj, String message) {
if
(obj ==
null
)
throw
new
NullPointerException(message);
return
obj;
}
public
static
boolean
isNull(Object obj) {
return
obj ==
null
;
}
public
static
boolean
nonNull(Object obj) {
return
obj !=
null
;
}
public
static
<T> T requireNonNullElse(T obj, T defaultObj) {
return
(obj !=
null
) ? obj : requireNonNull(defaultObj,
"defaultObj"
);
}
public
static
<T> T requireNonNullElseGet(T obj, Supplier<?
extends
T> supplier) {
return
(obj !=
null
) ? obj
: requireNonNull(requireNonNull(supplier,
"supplier"
).get(),
"supplier.get()"
);
}
public
static
<T> T requireNonNull(T obj, Supplier<String> messageSupplier) {
if
(obj ==
null
)
throw
new
NullPointerException(messageSupplier ==
null
?
null
: messageSupplier.get());
return
obj;
}
@ForceInline
public
static
int
checkIndex(
int
index,
int
length) {
return
Preconditions.checkIndex(index, length,
null
);
}
public
static
int
checkFromToIndex(
int
fromIndex,
int
toIndex,
int
length) {
return
Preconditions.checkFromToIndex(fromIndex, toIndex, length,
null
);
}
public
static
int
checkFromIndexSize(
int
fromIndex,
int
size,
int
length) {
return
Preconditions.checkFromIndexSize(fromIndex, size, length,
null
);
}
}
|
public Object() 。
例如我们定义一个类:
public class Person{ } 其实它被使用时 是这样的: public class Person extends Object{ } 。
例:
1
2
3
4
5
6
7
8
9
10
|
public
static
void
main(String[] args){
String text =
"123"
;
say(text);
int
a =
10
;
say(a);
say(
"123"
);
}
public
static
void
say(Object o){
//多态的体现
System.out.println(o);
}
|
返回值 | 方法名 | 作用 |
---|---|---|
static int | checkFromIndexSize(int fromIndex, int size, int length) | 检查子范围[ fromIndex ,fromIndex + size)是否在 [0,length)范围界限内。 |
static int | checkFromToIndex(int fromIndex, int toIndex, int length) | 检查子范围[ fromIndex ,toIndex)是否在 [0,length)范围界限内 |
static int | checkIndex(int index, int length) | 检查子范围index是否在 [0,length)范围界限内 |
static int | compare(T a, T b, Comparator<? super T> c) | 如果参数a,b相同则返回0,否则返回c.compare(a, b)的结果 |
static boolean | deepEquals(Object a, Object b) | 对比a,b参数是否深层次相等(如果a,b为数组,则对比数组的每个参数) |
static boolean | equals(Object a, Object b) | 对比a,b参数是否相等 |
static int | hash(Object… values) | 为输入值序列生成哈希码 |
static int | hashCode(Object o) | 非空返回哈希码,null则抛出NullPointerException |
static boolean | isNull(Object obj) | obj参数为null返回true |
static boolean | nonNull(Object obj) | obj参数不为null返回true |
static T | requireNonNull(T obj) | 检查指定的对象引用不是 null,为null则抛出NullPointerException |
static T | requireNonNull(T obj, String message) | 检查指定的对象引用不是null,否则抛出自定义的NullPointerException |
static T | requireNonNull(T obj, Supplier messageSupplier) | 检查指定的对象引用是否为null ,如果是,则抛出自定义的NullPointerException 。 |
static T | requireNonNullElse(T obj, T defaultObj) | 如果它是非 null ,则返回第一个参数,否则返回非 null第二个参数。 |
static T | requireNonNullElseGet(T obj, Supplier<? extends T> supplier) | 如果它是非 null ,则返回第一个参数,否则返回非 null值 supplier.get() 。 |
static String | toString(Object o) | 返回对象的字符串表示形式 |
static String | toString(Object o, String nullDefault) | 如果第一个参数不是 null ,则返回第一个参数调用 toString的结果,否则返回第二个参数 |
equals(Object obj)源码: public boolean equals(Object obj) { return (this == obj); } 。
1
2
3
4
5
6
7
8
9
10
|
public
static
void
main(String[] args) {
Person p =
new
Person(
1234
,
"张三"
);
Person e =
new
Person(
2345
,
"李四"
);
System.out.println(
"p:"
+p.hashCode());
//p:1239731077
System.out.println(
"e:"
+e.hashCode());
//e:357863579
System.out.println(p.equals(e));
//false
e=p;
//此时指向相同的内存地址
System.out.println(
"e:"
+e.hashCode());
//e:1239731077
System.out.println(p.equals(e));
//true
}
|
输出结果: p:1239731077 e:357863579 false e:1239731077 true 。
equals方法重写时的五个特性:
自反性 :对于任何非空的参考值x , x.equals(x)应该返回true 。 对称性 :对于任何非空引用值x和y , x.equals(y)应该返回true当且仅当y.equals(x)返回true 。 传递性 :对于任何非空引用值x ,y和z ,如果x.equals(y)回报true并且y.equals(z)返回true,x.equals(z)应该返回true 。 一致性 :对于任何非空引用值x和y ,多次调用x.equals(y)始终返回true或始终返回false ,前提是未修改对象上的equals比较中使用的信息。 非空性 :对于任何非空的参考值x , x.equals(null)应该返回false .
toString()源码 public String toString() { return getClass().getName() + “@” + Integer.toHexString(hashCode()); } 。
默认为字符串,通常返回一个“文本表示”此对象的字符串,返回对象的内存地址(对象实例的类名称@对象的哈希码的无符号十六进制,即:getClass().getName() + ‘@' + Integer.toHexString(hashCode())) 。
1
2
3
4
5
6
7
|
public
static
void
main(String[] args) {
Person p =
new
Person(
1234
,
"张三"
);
Person e =
new
Person(
2345
,
"李四"
);
System.out.println(
"e.getClass():"
+e.getClass());
System.out.println(
"e.hashCode():"
+e.hashCode());
System.out.println(
"e.toString():"
+e.toString());
}
|
输出结果: e.getClass():class com.company.demo.Person e.hashCode():114132791 e.toString():com.company.demo.Person@6cd8737 。
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
41
42
43
44
|
package
java.lang;
import
jdk.internal.HotSpotIntrinsicCandidate;
public
class
Object {
private
static
native
void
registerNatives();
static
{
registerNatives();
}
@HotSpotIntrinsicCandidate
public
Object() {}
@HotSpotIntrinsicCandidate
public
final
native
Class<?> getClass();
@HotSpotIntrinsicCandidate
public
native
int
hashCode();
public
boolean
equals(Object obj) {
return
(
this
== obj);
}
@HotSpotIntrinsicCandidate
protected
native
Object clone()
throws
CloneNotSupportedException;
public
String toString() {
return
getClass().getName() +
"@"
+ Integer.toHexString(hashCode());
}
@HotSpotIntrinsicCandidate
public
final
native
void
notify();
@HotSpotIntrinsicCandidate
public
final
native
void
notifyAll();
public
final
void
wait()
throws
InterruptedException {
wait(0L);
}
public
final
native
void
wait(
long
timeoutMillis)
throws
InterruptedException;
public
final
void
wait(
long
timeoutMillis,
int
nanos)
throws
InterruptedException {
if
(timeoutMillis <
0
) {
throw
new
IllegalArgumentException(
"timeoutMillis value is negative"
);
}
if
(nanos <
0
|| nanos >
999999
) {
throw
new
IllegalArgumentException(
"nanosecond timeout value out of range"
);
}
if
(nanos >
0
) {
timeoutMillis++;
}
wait(timeoutMillis);
}
protected
void
finalize()
throws
Throwable { }
}
|
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我的更多内容! 。
原文链接:https://blog.csdn.net/m0_50609545/article/details/117792334 。
最后此篇关于深入了解Java核心类库--Objects类的文章就讲到这里了,如果你想了解更多关于深入了解Java核心类库--Objects类的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Java 库和 android 库有什么区别,各自有什么优点/缺点? 最佳答案 您可以在 Android 应用程序中包含标准 Java .jar 文件库。它们在 .apk 构建时被翻译成 Dalvik
所以,我现在的代码就像从 Java 层加载库(比如 liba.so),并在内部 liba.so 加载 libb.so。因此,如果我必须将所有库打包到 APK 中并将其安装在没有 root 访问权限的设
我想在我的系统中设置 LEDA 库。 我已经从以下链接下载了 LEDA 库 http://www.algorithmic-solutions.info/free/d5.php Instruct
我想用 autoconf 创建一个共享库。但是,我希望共享库具有“.so”扩展名,而不是以“lib”开头。基本上,我想制作一个加载 dlopen 的插件。 .是否有捷径可寻? 当我尝试使用 autoc
我需要在 Apps 脚本应用程序上修改 PDF。为此,我想使用 JS 库:PDF-LIB 我的代码: eval(UrlFetchApp.fetch("https://unpkg.com/pdf-lib
我正在构建一个使用以下 Boost header 的程序(我使用的是 Microsoft Visual C++ 10), #include #include #include #include
当我通过 cygwin 在 hadoop 上运行此命令时: $bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 我
我已经通过 vcpgk 成功安装了一个 C++ 库,名为:lmdb:x64-windows 我还安装了lmdb通过 Cabal 安装的 Haskell 绑定(bind)包 在尝试测试 lmdb 包时:
我该如何解决这个问题? 我刚刚将 javacv jar 文件复制到我的项目 Lib 文件夹下,但出现了这个错误! 我可以找到这个thread来自谷歌,但不幸的是,由于我国的谷歌限制政策,该页面无法打开
我有一个 Android 库项目 FooLib。 FooLib 引用 Android Context 之类的东西,但不需要任何资源文件(res/ 中的东西)所以我目前将其打包为供我的应用使用的 JAR
我正在开发一个 Android 应用程序(使用 Android Studio),它能够通过手势识别算法了解您正在进行的 Activity 。对于我使用 nickgillian ithub 帐户上可用的
关于从 .NET Framework 项目中引用 .NET Standard 类库的问题有很多类似的问题,其中 netstandard 库中的 NuGet 包依赖项不会流向 netframework
我已经从互联网上下载了 jna-4.2.2.jar,现在想将这个 jar 导入到我的项目中。但是当我试图将这个 jar 导入我的项目时,出现以下错误。 [2016-06-20 09:35:01 - F
我正在尝试通过编译在 Mac 上安装 rsync 3.2.3。但是,我想安装所有功能。为此,它需要一些库,此处 ( https://download.samba.org/pub/rsync/INSTA
进入 Web 开发有点困难。过去 5 年我一直致力于 winforms 工作。所以我正在努力从一种切换到另一种。前段时间,我使用过 JavaScript,但现在还没有大量的 JavaScript 库
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在寻找一个用Python编写的与logstash(ruby + java)类似的工具/库。 我的目标是: 从 syslog 中解析所有系统日志 解析应用程序特定日志(apache、django、m
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我花了几天时间试图寻找用于 JavaPOS 实现的 .jar 库,但我找不到任何可以工作的东西。我找到了很多像这样的文档:http://jpos.1045706.n5.nabble.com/file/
这个问题在这里已经有了答案: Merge multiple .so shared libraries (2 个答案) 关闭 9 年前。 我有我在代码中使用的第三方库的源代码和对象。该库附带有关如何使
我是一名优秀的程序员,十分优秀!