AJAX和JSON

1、AJAX:

        AJAX(Asynchronous JavaScript and XML)是一种用于创建交互式、动态网页的技术。它允许网页在不重新加载整个页面的情况下与服务器进行异步通信,从而改善用户体验。以下是关于AJAX的一些重要信息:

  1. 异步通信:AJAX 的核心特性是异步通信,意味着在向服务器发送请求时,页面无需等待服务器的响应。这允许页面继续执行其他操作,同时等待响应。一旦响应可用,就会触发回调函数来处理数据。

  2. JavaScript:AJAX 主要使用JavaScript来实现。通过JavaScript,可以创建HTTP请求(通常是GET或POST请求),并在后台发送这些请求。然后,JavaScript可以解析从服务器返回的响应数据,并将其插入到网页中,实现动态更新。

  3. XML或JSON:虽然最初的名字中包含XML(eXtensible Markup Language),但实际上,现在更常见的是使用JSON(JavaScript Object Notation)作为数据的传输格式。JSON更轻量,易于处理,并且与JavaScript天然兼容。当然,仍然可以使用XML。

  4. 无需页面刷新:AJAX的一个重要优势是它可以在不刷新整个网页的情况下更新部分页面内容。这可以提高用户体验,因为页面可以动态地加载新数据,而不需要重新加载整个页面。

  5. 用途:AJAX广泛用于各种Web应用程序,包括在线邮件客户端、社交媒体网站、购物车更新、实时通讯等。任何需要实时或部分页面更新的情况都可以受益于AJAX技术。

  6. 浏览器支持:AJAX已经成为现代Web开发的标准之一,并且得到了主流浏览器的广泛支持。开发人员可以使用原生JavaScript或AJAX库(如jQuery、Axios等)来简化AJAX请求的编写和处理。

        总之,AJAX是一种强大的技术,使Web应用程序更加动态和交互,提高了用户体验,并为开发人员提供了更多的灵活性和控制权,使他们能够实现各种复杂的Web功能。

        同步的话:比如你和对象打电话,永远是一个人在讲 一个人在听,不可能同时讲话也不可能同时倾听是吧,一个在说话,另一个什么都干只是在那倾听。

         客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。

        异步的话:就是比如你和对象打电话,你对象在讲话,你在打游戏,你没有停下来听,忙着你自己的事情,等她讲完然后去回应她

        客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。

2、AJAX的实现方式

        1、基于原生的方式:

客户端:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>基于js</title>
</head>
<script>function fun() {//法送异步请求//1.创建核心对象// 创建 XMLHttpRequest 对象const xhttp = new XMLHttpRequest();// 定义回调函数xhttp.onload = function () {// 您可以在这里使用数据}// 建立连接/** 参数:*       第一个: 请求方式*       如果是get方式,请求参数那在URL后面拼接,如果是post请求,请求参数在sent(String)*       第二个: 请求的url*       第三个: 同步(ture)或者异步(false)请求* */xhttp.open("GET", "/web_tomcat/AjaxServletDemo1?username=张三", true);//xhttp.open("GET", "/web_tomcat/AjaxServletDemo1?username=张三",false);//发送请求xhttp.send();//psot的话xhttp.send(String) String是请求的参数//接收并且处理来自服务器的响应结果/** 获取方式 xhttp.responseText  但是要在服务器相应以后才能或者,不然获取不到数据*///当xhttp对象的就绪状态发生改变的时候会触发事件onreadystatechange 然后执行函数xhttp.onreadystatechange = function () {//判断readyState是不是4  0: 请求未初始化/*1: 服务器连接已建立2: 请求已接收3: 正在处理请求4: 请求已完成且响应已就绪*///判断status响应状态是不是200/*200: "OK"403: "Forbidden"404: "Page not found"*/if (this.readyState == 4 && this.status == 200) {//都满足,获取结果let responseText = this.responseText;alert(responseText)}};}</script>
<body><input type="button" value="发送异步请求" onclick="fun()">
<input type="text">
</body>
</html>

服务器端:

package com.songzhishu.web.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** @BelongsProject: web_tomcat* @BelongsPackage: com.songzhishu.web.servlet* @Author: 斗痘侠* @CreateTime: 2023-09-29  10:06* @Description: 异步请求* @Version: 1.0*/
@WebServlet("/AjaxServletDemo1")
public class AjaxServletDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//获取请求参数String username = req.getParameter("username");//业务处理/** 如果是同步的话,那么这个个时候服务器在正在进行业务处理,那么客户端只能得等待,不能做其他的操作,但是如果是异步请求的话,此时客户端可以* 进行其他的操作*///让当前线程睡6秒try {Thread.sleep(6000);} catch (InterruptedException e) {e.printStackTrace();}//打印System.out.println(username);//响硬resp.getWriter().write("你好"+username);}
}

        这这种方式比骄傲繁琐,细节参考w3school 在线教程

2、基于jQuery的方式;

        

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>基于js</title>
</head>
<script src="../js/jquery-3.3.1.min.js"></script>
<script>function fun() {//使用$.ajax的方式发送异步请求/*$.ajax({/!** url  请求的url* type 请求的方式* data 携带的参数*      "username=张三&age=23"  ----方式一*      {*       "username":"zhngsan",*       "age":23*       };                    ----方式二  以json的方式发送请求数据* success   回调函数  响应成功后会执行这个这个函数* error     回调函数  响应错误会执行这个函数** datatype   响应数据的格式  Xml html txt Josn* *!/url:"/web_tomcat/AjaxServletDemo1",type:"POST",data:{"username":"张三","age":23},success:function (data) {alert(data)},error:function () {alert("出错啦")}});*///使用$.get() 发送请求/** $.get(URL,callback);** *//*$.get("/web_tomcat/AjaxServletDemo1", {"username": "张三","age": 23}, function (data) {alert(data);},"text");*///使用$.psot()$.post("/web_tomcat/AjaxServletDemo1", {"username": "张三","age": 23}, function (data) {alert(data);},"text");}</script>
<body><input type="button" value="发送异步请求" onclick="fun()">
<input type="text">
</body>
</html>

3、JSON:

        JSON 是一种轻量级的数据交换格式,通常用于在不同应用程序之间传输数据。以下是关于 JSON 的重要信息:

  1. 数据格式:JSON 是一种文本格式,它使用易于理解的键值对(key-value pairs)来表示数据。每个键(key)都是一个字符串,每个值(value)可以是字符串、数字、布尔值、数组、对象、null等数据类型。

  2. 易于阅读和编写:JSON 的语法非常简单和直观,使人们可以轻松地阅读和编写。这也有助于人们快速理解数据结构。

  3. 数据结构:JSON 支持复杂的数据结构,包括嵌套对象和数组。这使得它非常适合表示各种类型的数据,从简单的配置文件到复杂的数据集。

  4. 跨平台和语言:JSON 不限于特定的编程语言或平台,几乎所有现代编程语言都有 JSON 的解析和生成库。这意味着可以在不同的应用程序之间轻松交换数据,而无需考虑它们使用的编程语言。

  5. 示例:以下是一个 JSON 示例,表示一个简单的人员信息:

    {"name": "John Doe","age": 30,"isStudent": false,"hobbies": ["reading", "swimming"],"address": {"street": "123 Main St","city": "Anytown"}
    }
    
  6. 用途:JSON 在Web开发中广泛应用,特别是在Web API中用于数据传输。它还用于配置文件、日志文件、NoSQL数据库等各种情况。

  7. 与XML的比较:JSON与XML是两种常见的数据交换格式。与XML相比,JSON更轻量、更易于处理,并且更适合在JavaScript中使用,因为它直接映射到JavaScript对象。

        总之,JSON是一种通用的数据格式,它在现代应用程序中起着重要作用,简化了数据交换和处理的过程。它的简洁性和易读性使其成为许多应用程序和Web服务的首选数据表示方式。

        1、基本规则:

      (1)  数据在名称/值对中:json数据是由键值对构成的
      (2) 键用引号(单双都行)引起来,也可以不使用引号
      (3)  值得取值类型:
                1. 数字                           (整数或浮点数)
                2. 字符串                       (在双引号中)
                3. 逻辑值                       (true 或 false)
                4. 数组(在方括号中)     {"persons":[{},{}]}
                5. 对象(在花括号中)     {"address":{"province":"陕西"....}}
                6. null
      (4) 数据由逗号分隔:     多个键值对由逗号分隔
      (5)花括号保存对象:      使用{}定义json 格式
      (6)方括号保存数组:      []

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JSON</title>
</head>
<script>//定义基本格式var person = {"name": "张三", age: 23, 'gender': true}//alert(person);//获取值//alert(person.name);//alert(person["age"]);//嵌套方式  []---->{}var persons = [{"name": "张三", "age": 23, "gender": true},{"name": "李四", "age": 24, "gender": true},{"name": "王五", "age": 25, "gender": false}];//alert(persons);//alert(persons[1].name)//嵌套方式  {}---->[]var personss = {"person": [{"name": "张三", "age": 23, "gender": true},{"name": "李四", "age": 24, "gender": true},{"name": "王五", "age": 25, "gender": false}]}//alert(personss)//获取值//alert(personss.person[2].name)//因为定义的方式不同所以获取值的方式也不太一样//遍历//获取person对象的所有的数据for (let personKey in person) {alert(personKey + "=" + person[personKey])//键值}alert("结束")//获取persons的所有值for (let i = 0; i < persons.length; i++) {let person = persons[i];for (let personKey in person) {alert(personKey + "*" +person[personKey]);}}//获取personss的所有值let personk = personss.person;  //数组for (let i = 0; i < personk.length; i++){let personkElement = personk[i];for (let personkElementKey in personkElement) {alert(personkElementKey +"-"+personkElement[personkElementKey])}}</script>
<body></body>
</html>

2、JSON和Java对象的相互转换:

        

1、JSON解析器:        

        JSON解析器是一种程序或库,用于将JSON(JavaScript Object Notation)格式的数据解析为程序可以使用的数据结构。这个过程通常涉及将JSON文本转换为相应的数据对象,以便在程序中进行操作、处理和使用。在许多编程语言中,都有内置的JSON解析器或者第三方库,使得开发人员能够轻松地将JSON数据转换为其所在语言支持的数据类型

        java中常见的解析器有Jsonlib,Gson,fastjson,jackson,其中Jackson是一个流行的JSON处理库,它提供了高性能的JSON解析和生成功能。它支持JSON与Java对象之间的双向映射。也是spring boot 框架的内置解析器。
    2. Java对象转换JSON
        1. 使用步骤:
            1. 导入jackson的相关jar包
            2. 创建Jackson核心对象 ObjectMapper
            3. 调用ObjectMapper的相关方法进行转换
       

package com.songzhishu.web.test;import com.fasterxml.jackson.databind.ObjectMapper;
import com.songzhishu.web.domain.Person;
import org.junit.Test;import java.io.FileWriter;
import java.io.IOException;/*** @BelongsProject: web_tomcat* @BelongsPackage: com.songzhishu.web.test* @Author: 斗痘侠* @CreateTime: 2023-09-29  14:53* @Description: 测试转换* @Version: 1.0*/
public class JacksonTest1 {//java对象转换成Json@Testpublic void test1() throws IOException {//创建对象Person person = new Person("张三",23,"女");//创建Jsackson的核心对象 objectMapperObjectMapper mapper = new ObjectMapper();//转换/*      转换的方法:*               writerValue(参数1,obj)*                   这个方法有很多的重载的方式 通过传递不同的参数*                   file  将obj对象转换成为Json字符串并且将Json字符串数据填充到字符流的文件中*                   writer 将obj对象转换成为Json字符串并且将Json字符串数据填充到字符输出流中*                   outputstream 将obj对象转换成Json字符串,并且将Json数据填充到字节输出流中*               writerValueString(obj) 将对象转换成Json字符串* */String s = mapper.writeValueAsString(person);//System.out.println(s);//将数据写入到d盘//mapper.writeValue(new File("d://a.txt"),person);//将数据关联到writer中mapper.writeValue(new FileWriter("d://b.txt"),person);}
}
2. 注解:

                    1. @JsonIgnore:排除属性。
                    2. @JsonFormat:属性值得格式化
                        * @JsonFormat(pattern = "yyyy-MM-dd")

                3. 复杂java对象转换
                    1. List:数组
                    2. Map:对象格式一致

package com.songzhishu.web.test;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.songzhishu.web.domain.Person;
import org.junit.Test;import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;/*** @BelongsProject: web_tomcat* @BelongsPackage: com.songzhishu.web.test* @Author: 斗痘侠* @CreateTime: 2023-09-29  14:53* @Description: 测试转换* @Version: 1.0*/
public class JacksonTest1 {//java对象转换成Json@Testpublic void test1() throws IOException {//创建对象Person person = new Person("张三", 23, "女", new Date());//创建Jsackson的核心对象 objectMapperObjectMapper mapper = new ObjectMapper();//转换/*      转换的方法:*               writerValue(参数1,obj)*                   这个方法有很多的重载的方式 通过传递不同的参数*                   file  将obj对象转换成为Json字符串并且将Json字符串数据填充到字符流的文件中*                   writer 将obj对象转换成为Json字符串并且将Json字符串数据填充到字符输出流中*                   outputstream 将obj对象转换成Json字符串,并且将Json数据填充到字节输出流中*               writerValueString(obj) 将对象转换成Json字符串* */String s = mapper.writeValueAsString(person);//System.out.println(s);//将数据写入到d盘//mapper.writeValue(new File("d://a.txt"),person);//将数据关联到writer中mapper.writeValue(new FileWriter("d://b.txt"), person);}@Testpublic void test2() throws JsonProcessingException {Person person = new Person("张三", 23, "女", new Date());//转换ObjectMapper mapper = new ObjectMapper();String s = mapper.writeValueAsString(person);System.out.println(s);/*直接输出的样式{"name":"张三","age":23,"gender":"女","brithday":1695973073829} 日期有点太难看了 咋办要么我就不转换日期  要么我改变输出的格式第一种在生日的属性上 加上一个注解     @JsonIgnore  //忽略该字端输出 {"name":"张三","age":23,"gender":"女"}但是这种注解的方式不太友好,就是不能因为不好看就不要这数据吧第二种 格式转换  @JsonFormat(pattern = "yyyy-MM-dd"){"name":"张三","age":23,"gender":"女","brithday":"2023-09-29"}*/}//复杂格式的转换@Testpublic void test3() throws JsonProcessingException {Person person1 = new Person("张三", 23, "女", new Date());Person person2 = new Person("李四", 24, "男", new Date());Person person3 = new Person("王五", 25, "男", new Date());//集合ArrayList<Person> list = new ArrayList<>();Collections.addAll(list,person1,person2,person3);//创建对象ObjectMapper mapper = new ObjectMapper();String s = mapper.writeValueAsString(list);System.out.println(s);}//map集合@Testpublic void test4() throws JsonProcessingException {//创建mapHashMap<String, Object> hashMap = new HashMap<>();hashMap.put("name","李四");hashMap.put("age",24);hashMap.put("gender","女");//创建对象ObjectMapper mapper = new ObjectMapper();String s = mapper.writeValueAsString(hashMap);System.out.println(s);}}
3、 JSON转为Java对象


        1. 导入jackson的相关jar包
        2. 创建Jackson核心对象 ObjectMapper
        3. 调用ObjectMapper的相关方法进行转换
            1. readValue(json字符串数据,Class)

//json字符串转换成java对象@Testpublic  void  test5() throws IOException {//初始化json字符串String Json="{\"gender\":\"女\",\"name\":\"李四\",\"age\":24}";//创建对象ObjectMapper mapper = new ObjectMapper();Person person = mapper.readValue(Json, Person.class);System.out.println(person);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/94532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银行业务队列简单模拟(队列应用)

设某银行有A、B两个业务窗口&#xff0c;且处理业务的速度不一样&#xff0c;其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时&#xff0c;B窗口处理完1个顾客。给定到达银行的顾客序列&#xff0c;请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时…

虚拟货币(也称为加密货币或数字货币)的运作

虚拟币发展史 虚拟币的发展史可以追溯到20世纪末和21世纪初&#xff0c;以下是虚拟币的重要发展节点&#xff1a; 1998年&#xff1a;比特币白皮书的发布 比特币的概念最早由中本聪&#xff08;Satoshi Nakamoto&#xff09;在1998年提出&#xff0c;随后在2008年发布了一份名…

(Note)机器学习面试题

机器学习 1.两位同事从上海出发前往深圳出差&#xff0c;他们在不同时间出发&#xff0c;搭乘的交通工具也不同&#xff0c;能准确描述两者“上海到深圳”距离差别的是&#xff1a; A.欧式距离 B.余弦距离 C.曼哈顿距离 D.切比雪夫距离 S:D 1. 欧几里得距离 计算公式&#x…

JavaScript事件之拖拽事件(详解)

在网页开发的过程中我们经常会接触到拖拽事件&#xff0c;虽然每个网页和每个网页的拖拽的效果大相径庭&#xff0c;但是从根本来讲&#xff0c;代码是几乎一模一样的。   简而言之&#xff0c;拖拽效果就是鼠标按下&#xff0c;被拖拽的元素随着鼠标而移动&#xff0c;鼠标松…

【单片机】13-实时时钟DS1302

1.RTC的简介 1.什么是实时时钟&#xff08;RTC&#xff09; &#xff08;rtc for real time clock) &#xff08;1&#xff09;时间点和时间段的概念区分 &#xff08;2&#xff09;单片机为什么需要时间点【一定的时间点干什么事情】 &#xff08;3&#xff09;RTC如何存在于…

Trie字符串统计(c++题解)

维护一个字符串集合&#xff0c;支持两种操作&#xff1a; I x 向集合中插入一个字符串 x&#xff1b;Q x 询问一个字符串在集合中出现了多少次。 共有 N 个操作&#xff0c;所有输入的字符串总长度不超过 105&#xff0c;字符串仅包含小写英文字母。 输入格式 第一行包含整…

Mydb数据库问题

1、请简要介绍一下这个基于 Java 的简易数据库管理系统。它的主要功能是什么&#xff1f; TM&#xff08;Transaction Manager&#xff09;&#xff1a;事务管理器&#xff0c;用于维护事务的状态&#xff0c;并提供接口供其他模块查询某个事务的状态。DM&#xff08;Data Man…

国庆假期day5

作业&#xff1a;请写出七层模型及每一层的功能&#xff0c;请绘制三次握手四次挥手的流程图 1.OSI七层模型&#xff1a; 应用层--------提供函 表示层--------表密缩 会话层--------会话 传输层--------进程的接收和发送 网络层--------寻主机 数据链路层----相邻节点的可靠传…

CAcUiDockControlBar初始位置 2023/8/19 下午3:51:18

2023/8/19 下午3:51:18 CAcUiDockControlBar初始位置 2023/8/19 下午3:52:00 CAcUiDockControlBar的初始位置是根据其在程序代码中的设置而确定的。通常情况下,它的初始位置可以通过以下几种方式进行设置: 使用Create函数:在创建CAcUiDockControlBar对象时,可以调用Cre…

2023/8/12 下午8:41:46 树状控件guilite

2023/8/12 下午8:41:46 树状控件guilite 2023/8/12 下午8:42:08 树状控件(Tree View)是一种常见的图形用户界面(GUI)元素,它通常用于显示层次结构数据或文件系统的目录结构。Guilite 是一个轻量级的跨平台 GUI 库,支持多种控件,包括树状控件。 在 Guilite 中使用树状…

Ubuntu22.04 交叉编译gcc9.5 for arm

一、准备 环境&#xff1a;ubuntu22.04为刚刚安装&#xff0c;未安装gcc等包 vi ~/.bashrc输入 export PATH$PATH:/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin 保存,reboot 安装&#xff1a; sudo apt install cmake sudo apt install gawk sudo apt instal…

[BJDCTF2020]Mark loves cat

先用dirsearch扫一下&#xff0c;访问一下没有什么 需要设置线程 dirsearch -u http://8996e81f-a75c-4180-b0ad-226d97ba61b2.node4.buuoj.cn:81/ --timeout2 -t 1 -x 400,403,404,500,503,429使用githack python2 GitHack.py http://8996e81f-a75c-4180-b0ad-226d97ba61b2.…

详解Linux的系统调用fork()函数

在Linux系统中&#xff0c;fork()是一个非常重要的系统调用&#xff0c;它的作用是创建一个新的进程。具体来说&#xff0c;fork()函数会在当前进程的地址空间中复制一份子进程&#xff0c;并且这个子进程几乎完全与父进程相同&#xff0c;包括进程代码、数据、堆栈以及打开的文…

【Java 进阶篇】JDBC 数据库连接池详解

数据库连接池是数据库连接的管理和复用工具&#xff0c;它可以有效地降低数据库连接和断开连接的开销&#xff0c;提高了数据库访问的性能和效率。在 Java 中&#xff0c;JDBC 数据库连接池是一个常见的实现方式&#xff0c;本文将详细介绍 JDBC 数据库连接池的使用和原理。 1…

算法强训:第三十四天

文章目录 收件人列表养兔子一、收件人列表OJ链接 本题思路:先接收到一个数字,代表接下来是多少组数据 ,逐个接收每个名字,如果名字中没有,或者 则直接输出,否则在改名字前后拼接"\""再输出,除最后一个名字外,每个名字之后都有一个", " ,该组用例…

openstack-ansible部署zed版本all-in-one

目录 部署架构部署节点准备安装Rocky linux 9配置rocky 目标节点配置网络配置rocky linux网卡的创建永久网桥的方法&#xff1a; 部署前配置 部署架构 可用的操作系统&#xff1a; Debian11&#xff08;bullseye&#xff09; Ubuntu 22.04或20.04 CentOS Stream 9 或 Rocky Lin…

2023/8/8 下午10:42:04 objectarx

2023/8/8 下午10:42:04 objectarx 2023/8/8 下午10:42:16 ObjectARX(AutoCAD Runtime Extension)是用于开发和自定义AutoCAD软件的编程接口。ObjectARX允许开发者使用C++、.NET等编程语言来创建插件、扩展功能和定制化AutoCAD的行为。 通过ObjectARX,开发者可以访问Auto…

视频讲解|含可再生能源的热电联供型微网经济运行优化(含确定性和源荷随机两部分代码)

1 主要内容 该视频为《含可再生能源的热电联供型微网经济运行优化》代码讲解内容&#xff0c;对应的资源下载链接为考虑源荷不确定性的热电联供微网优化-王锐matlab&#xff08;含视频讲解&#xff09;&#xff0c;对该程序进行了详尽的讲解&#xff0c;基本做到句句分析和讲解…

国庆10.4

QT实现TCP服务器客户端 服务器 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器头文件 #include <QTcpSocket> //客户端头文件 #include <QList> //链表容器 #include <QMe…

【算法学习】-【双指针】-【快乐数】

LeetCode原题链接&#xff1a;202. 快乐数 下面是题目描述&#xff1a; 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果…