(一)Object类

基本介绍:
object作为所有类的超类,无论是四类八种的基本类型还是引用类型或者是自定义类型都需要extends Object,所以其自然有着强大的功能,它的主要方法有
引用数据类型 - 图1
常用方法:
equals:方法的重要意义
在一般初学者眼里,觉得自己能够辨识”equals“方法和”==“就很流弊了,前者比较其实例的值,后者比较实例的地址。很对,但是如果你不深入理解源码去看的话,很容易掉入各大公司的陷阱里面。其实equals的底层实现依然是”==“,以下为源码:
通常在实际开发的应用中,我们希望比较两个对象是否相等的时候,不是简简单单的只比较地址值,在地址值不一样的情况下,应该继续比较两个对象的属性值是否一致;

引用数据类型 - 图2

1.object类型转String

当时map集合装的是json格式数据,不知道为什么直接强转就会报错
java.util.LinkedHashMap cannot be cast to java.lang.String

用 toSting方法不会报错

Object key1 = map.get(“key1”);

Object key2 = map.get(“key2”);

String s = key1.toString();
String s1 = key2.toString();
System.out.println(“key1 = “ + s);

System.out.println(“key2 = “ + s1);

(二)包装数据类型


参考:
https://blog.csdn.net/wufaliang003/article/details/82347077

为了让我们在特定的场景下(例如:集合,泛型),使用基本数据类型的数据值,java对8种基本数据类型,分别提供了8个对应的引用数据类型;
具体对应关系:
引用数据类型 - 图3

基本数据类型有什么好处

基本类型在栈中直接存储的具体数值,而包装类型则存储的是堆中的引用,我们通过栈中的引用来使用这些对象;所以,对象本身来说是比较消耗资源的。
引用数据类型 - 图4


对于经常用到的类型,如int等,如果我们每次使用这种变量的时候都需要new一个Java对象的话,就会比较笨重。

所以,和C++一样,Java提供了基本数据类型,这种数据的变量不需要使用new创建,他们不会在堆上创建,而是直接在栈内存中存储,因此会更加高效。

2.自动拆箱与自动装箱



Java中的基本类型功能简单,不具备对象的特性,为了使基本类型具备对象的特性,所以出现了包装类,就可以像操作对象一样操作基本类型数据。
在jdk1.5之后,我们将基本数据类型的值,保存到对应的引用数据类型的变量上,那么此时就是自动装箱;反之就是自动拆箱;
例如:
包装数据类型 变量名 = 基本数据类型的值;//自动装箱
基本数据类型 变量名 = 包装数据类型的值;//自动拆箱


public static void main(String[]args){
Integer integer=1; //装箱
int i=integer; //拆箱
}

反编译一下

public static void main(String[]args){
Integer integer=Integer.valueOf(1); //自动装箱原理是通过Integer.valueOf(1)
int i=integer.intValue(); //自动拆箱原理是通过 integer.intValue()
}