背景

有时候我们在定义数据结构的时候,比如List,HashMap等等,因为我们不知道提前装在里面的是什么,所以我们可以先定义它为Object的数据类型,形如控制器的代码如下,那什么是Object类,它有哪些方法,我们怎么去理解它了?

   // 测试包装成另外的json结构@GetMapping("/jstest")public Map<String,Object> test1_json(){Map<String,Object> hmap = new HashMap<>();List<String> list = new ArrayList();list.add("tom");list.add("rose");hmap.put("data",list);hmap.put("code","1000");return hmap;}

Object类是什么

Object类是java默认的提供的一个类,Object类是所有类的父类,也就是说任何一个类的定义的时候如果没有明确的继承一个父类的话,那么它就是Object的子类;

也就是说以下两种类的定义的最终效果是完全相同的:

class Person { }class Person extends Object { }

看到这个语法的时候,我们有没有觉得,这个和Python2.x中的类是不是一样的?你的觉得是正确的,Python中Object属于基类,也是所有类的父类。

Object 类属于java.lang包,不需要额外的添加Maven依赖,也就是说我们可以理解为Python中的标准库的内容,而在Java中是就是JDK中的内容。

Object类有哪些方法

我们在使用IDEA开发工具的时候,我们点击Object,然后按住 Ctrl 键,进入源码模式。我们可以看到:

Object提供了11 个方法,那么这些方法分别是什么,又又什么用了?

1. clone方法

保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。

2. getClass方法

final方法,返回Class类型的对象,反射来获取对象。

3. toString方法

该方法用得比较多,取得对象信息,返回该对象的字符串表示。

4. finalize方法

该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。

5. equals方法

比较对象内容是否相同

6. hashCode方法

该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。

7. wait方法

wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。

调用该方法后当前线程进入睡眠状态,直到以下事件发生。

  1. 其他线程调用了该对象的notify方法。
  2. 其他线程调用了该对象的notifyAll方法。
  3. 其他线程调用了interrupt中断该线程。
  4. 时间间隔到了。

此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。

8. notify方法

该方法唤醒在该对象上等待的某个线程。

9. notifyAll方法

该方法唤醒在该对象上等待的所有线程

JSONObject

JSONObject是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。

(1)实例化一个JSONObject 对象,用put() 方法将数据写入。

// 实例化一个JSONObject 对象,用put() 方法将数据写入
JSONObject obj = new JSONObject();
obj.put(key, value);

(2)创建好一个 HashMap 对象并且将数据打包进去,而后在创建 JSONObject 时将其作为一个参数传进去。

Map<String, Object> data = new HashMap<String, Object>();
data.put("name", "John");
data.put("sex", "male");
data.put("age", 22);
data.put("is_student", true);
data.put("hobbies", new String[] {"hiking", "swimming"});JSONObject obj = new JSONObject(data);
// 或是下面这种写法,将 java 对象转换为 json 对象
JSONObject obj = JSONObject.fromObject(data);

解析json数据

(1)只包含一个对象的 json 字符串解析

//将得到json数据转换为一个json对象
JSONObject jsonObject = new JSONObject(data);
//获取"persons"的json对象
jsonObject = jsonObject.getJSONObject("persons");
//通过相应的get方法,获取相应的属性
int id = jsonObject.getInt("id");
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
//将获取到的数据放到一个Person对象中
Person person = new Person(id, name, age);

(2)含有多个对象的 json 字符串

List<Person> list = new ArrayList<>();
//将得到json数据转换为一个json对象
JSONObject jsonObject = new JSONObject(data);
//获取"persons"的json对象,并将其转换为一个json数组
JSONArray array = jsonObject.getJSONArray("persons");
//通过循环获取数据,并放入list集合中
for (int i = 0;i<array.length();i++){int id = array.getJSONObject(i).getInt("id");String name = array.getJSONObject(i).getString("name");int age = array.getJSONObject(i).getInt("age");Person person = new Person(id, name, age);list.add(person);
}
return list;

Java中的Object类 是什么?JSONObject 又是什么?相关推荐

  1. Java中的Object类和Class类

    Copyright©Stonee 在Java中,无论是类还是接口,它们在JVM的内存逻辑模型中都会存在Super和Class指针,分别指向根类(Object类)和反射类(Class类) 在这一篇blo ...

  2. object 构造器java_“java”中为什么“Object”类要有一个空的构造函数?

    展开全部 其他的类之所以可以不用给他写无参的构造函数(方法),就是因为这些类继承了Object类,e68a84e8a2ad323131333532363134313032313635333133336 ...

  3. Java中的Object类

    文章目录 一. Object类简介 二. Object类的常用方法 toString方法 equals方法 其他相关方法详解 一. Object类简介 Object类是Javajava.lang包下的 ...

  4. Java中的Object类的toString()方法,equals()方法

    Object类是所有类的父类,若没有明确使用extends关键字明确表示该类继承哪个类,那么它就默认继承Object类,也就可以使用Object中的方法: 1.toString 如果输出一个对象的时候 ...

  5. java中的祖先类_Java程序公共祖先类-Object

    在Java中,所有的类都继承自Object类,它是所有的始祖,但是我们不需要显示的书写extends Object. equals方法 在JDK中,Object类的equals方法的实现如下: pub ...

  6. java程序设计专业介绍_简介Java编程中的Object类

    这篇文章主要介绍了简介Java编程中的Object类,是Java入门学习中的基础知识,需要的朋友可以参考下 Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每 ...

  7. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

  8. java中所有的类都继承于_Java中所有的类都是通过直接或间接地继承( )类得到的...

    Java中所有的类都是通过直接或间接地继承( )类得到的 答:java.lang.Object 关于主机地址 192.168.19.125 (子网掩码: 255.255.255.248 ),以下说法正 ...

  9. Java中的StringBuilder类功能详解

    字符串是Java程序中最常用的一种数据结构之一.在Java中的String类已经重载的"+".也就是说,字符串可以直接使用"+"进行连接,如下面代码所示: St ...

最新文章

  1. 【 FPGA 】门控时钟专题
  2. MariaDB Window Functions窗口函数分组取TOP N记录
  3. CVPR2019接收结果公布了,但CVPR 2018的那些论文都怎么样了?
  4. 【学习笔记】同余最短路
  5. 计算机防火墙不能更改,win7系统更新防火墙设置不能更改的解决方法
  6. SSAS的MDX的基础函数(二)
  7. c# 两个list比较_C# for Grasshopper Day 22 学习笔记
  8. Java提高班(二)深入理解线程池ThreadPool
  9. 如何使用Python3连接MySQL
  10. 直播预告丨技术干货:易鲸捷HTAP融合型分布式数据库连接服务层介绍
  11. jquery—addClass方法和removeClass方法
  12. zk - zookeeper主节点、从节点、客户端三者之间的交互
  13. 网络版计算机化系统3q认证,实验室分析仪器3Q确认服务|分析仪器3Q认证服务|计算机系统认证确认服务...
  14. 麻省理工成立计算机学院,麻省理工学院斥资10亿美元建新计算机学院
  15. mysql-索引和锁(何登成的分享转载)
  16. Jetpack-Compose之三附带效应(副作用)
  17. MySQL数据库从入门到入土!
  18. 一对一直播源码还有没有提升空间
  19. 课堂上学生的经典插嘴
  20. 《论文写作专刊——国标参考文献格式个人经验总结》

热门文章

  1. 标签打印软件如何批量打印茶叶标签
  2. linux 字符集转换命令,Linux下GBK编码到UTF-8文件编码转换方法
  3. ug10后处理安装步骤 ug后处理论坛网 ug后处理在什么位置 ug后处理报警大全 ug法兰克后处理下载 ug后处理器如何设置 ug三轴后处理制作教程 法兰克ug后处理文件 ug后处理构造器
  4. Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思
  5. 导电滑环检测方法检测导电滑环时要注意什么
  6. 云网融合个人浅析(二)
  7. 烤仔创作者联盟 | 咱就是说,我们社区的DAO组织发展历程
  8. edu--Web程序设计基础2021秋--【结构元素】【交互元素】【页面结点元素】【文本层次语义元素】【分组元素】
  9. LTE----024 天线基本原理
  10. 使用jlink解锁被锁住的芯片