java基础:常见类和对象
1.常见类和对象:
java.lang.Object类,Java中的每个类都直接或间接地继承自Object类,如果没有明确指定一个类继承另一个类,那么它的默认父类就是Object类;
例如多态:
package java_jichu;public class java_3_29 {public static void main(String[] args) {Object obj = new Person();} } class Person{}
2.toString方法,他是Object类中的一个方法,作用是返回对象的字符串表示形式,一般形式为类名@哈希码的十六进制表示;
package java_jichu;public class java_3_29 {public static void main(String[] args) {Object obj = new Person();String s = obj.toString();System.out.println(s);} } class Person{}
注意:由于toString默认返回对象的地址,所以为了直观理解对象的内容,我们可以重写这个方法;
3.hashCode()方法:获取类的内存地址
默认情况下,hashCode方法返回的是对象的内存地址经过哈希运算后的整数值;
注意:当重写equals方法时,必须重写hashCode方法,以保证相等的对象具有相同的哈希码;
重写hashCode方法时,应该尽量让不相等的对象产生不同的哈希码,以提高性能;
4.equals方法:
package java_jichu;public class java_3_29 {public static void main(String[] args) {Object obj = new Person();System.out.println(obj.equals(new Person()));} } class Person{}
判断两个对象是否相等,如果相等返回true,如果不相等返回false
它比较对象时,默认比较的就是内存地址;
package java_jichu;public class java_3_29 {public static void main(String[] args) {Object obj = new Person();Person otherperson = new Person();System.out.println(obj.hashCode());System.out.println(otherperson.hashCode());System.out.println(obj.equals(otherperson));} } class Person{}
返回为false;
同时equals方法还对应了一个equalsIgnoreCase方法:
意思是在比较过程中忽略大小写;
package java_jichu;public class java_3_29 {public static void main(String[] args) {String a = "a";String b = "A";System.out.println(a.equalsIgnoreCase(b));} }
返回结果为true;
5.数组:
声明方法:
package java_jichu;public class java_3_29 {public static void main(String[] args) {String[] names = new String[3];} }
类型+【】+ 变量名 = new 类型【数组大小】
添加数据:
package java_jichu;public class java_3_29 {public static void main(String[] args) {String[] names = new String[3];names[0] = "zhangsan";names[1] = "lisi";} }
如果重复给相同的索引添加数据,那么等同于修改数据;
还有其他的添加数据方法:
package java_jichu;public class java_3_29 {public static void main(String[] args) {String[] names = {"zhangsan", "lisi"};} }
6.数组的方法:length方法;
package java_jichu;public class java_3_29 {public static void main(String[] args) {String[] names = {"zhangsan", "lisi"};System.out.println(names.length);} }
数组的数据结构实际上是这样的:
7.二维数组:
package java_jichu;public class java_3_29 {public static void main(String[] args) {String[][] names = {{"zhangsan"}, {"lisi"}, {"wangwu"}};} }
标准的定义形式:
public class java_3_29 {public static void main(String[] args) {String[][] names = new String[3][3];} }
8.使用二维数组输出九层妖塔:
package java_jichu;public class java_3_29 {public static void main(String[] args) {int row = 9; //定义行int col = 2 * row - 1; //定义一列有多少个*;String[][] nineTower = new String[row][col]; //创建一个二维数组;for (int i = 0; i < row; i++){ //对一行循环;for(int j = 0; j < col; j++){ //对一列循环;if (j >= (row - 1) - i && j <= (row - 1) + i){ //从中间向两侧顺延同时满 nineTower[i][j] = "*"; //条件则赋值*}else {nineTower[i][j] = " "; //其他空间给空格}}}for (int i = 0; i < row; i++){for (int j = 0; j< col; j++){System.out.print(nineTower[i][j]); //打印操作,每个数据不换行,然后打印完} //一行之后换行;System.out.println();}} }
9.字符串的拼接:可以用+号进行操作,但必须保证加号的一端是字符串,只要一个对象是字符串,那默认把另一个对象转换为字符串进行拼接;
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = "a" + "b";String s1 = "ab";System.out.println(s.hashCode());System.out.println(s1.hashCode());} }
结果一样:因为内容一样,地址一样;
9.concat方法:是String的一个实例方法,它用于将指定的字符串连接到当前字符串的末尾,并返回一个新的字符串对象,原字符串对象不会被改变;
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s1 = "ab";System.out.println(s1.concat("abc"));} }
10.compareTo方法:
用于比较两个对象的值,Integer中是比较值大小,String中是比较在字典中的顺序(unicode值);
返回值为一个整数,相等则返回0,调用对象大于参数则返回正数,小于则返回负数;
11.字符串的截断操作:截断字符串的操作:
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = "hello world";String s1 = s.substring(0, 3);System.out.println(s1);} }
结果为hel,第一个参数为起始位置索引(包含),第二个参数为结束位置索引(不包含);
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = "hello world";String s1 = s.substring(0, 3);System.out.println(s1);System.out.println(s.substring(0, "hello".length()));System.out.println(s.substring(6, s.length()));System.out.println(s.substring(6));} }
如果只传一个值,那么就截取起始位置之后的所有;
12.分解字符串:split方法:
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = "hello world";String[] s1 = s.split(" ");System.out.println(s1[0]);}}
意思是按照空格为界分割字符串,并存在字符数组中;
13.空格清除:trim方法 package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = " hello world ";String s1 = s.trim();System.out.println(s1);}} 14.字符串的替换:replace方法:返回一个字符串;
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = "hello world";String s1 = s.replace("world", "java");System.out.println(s1);} }
15.大小写转换:toLowerCase();(转为小写);
toUpperCase(转为大写);
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = "Hello World";System.out.println(s.toLowerCase());System.out.println(s.toUpperCase());} }
16.charAt方法,根据索引值找到指定位置字符;
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = "hello world";System.out.println(s.charAt(0));} }
17.indexof方法:用于获取数据在字符串中第一次出现的位置;
对应的还有数据在最后一次出现的位置:lastIndexof
返回索引值;
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = "hello world hello";System.out.println(s.indexOf("hello"));System.out.println(s.lastIndexOf("hello"));} }
18.contains方法,检查是否包含指定的字符串,返回布尔类型;
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = "hello world hello";System.out.println(s.contains("world"));} }
19.判断字符串是否以指定的数据开头,返回布尔类型:startwith方法
对应的还有:endwith方法;
package java_jichu;public class java_3_29 {public static void main(String[] args) {String s = "hello world hello";System.out.println(s.startsWith("hello"));} }
20.判断是否为空:isEmpty方法:
21.包装类:
Byte Short Interger Long Float Double Character Boolean
转换模版:
自动装箱:
package java_jichu;public class java_3_29 {public static void main(String[] args) {int i = 10;Integer i1 = i; //等价于:Integer i1 = Integer.valueOf(i);} }
自动拆箱:
package java_jichu;public class java_3_29 {public static void main(String[] args) {int i = 10;Integer i1 = Integer.valueOf(i);int i2 = i1; //等价于: int i2 = i1. intvalue();} }
相关文章:
java基础:常见类和对象
1.常见类和对象: java.lang.Object类,Java中的每个类都直接或间接地继承自Object类,如果没有明确指定一个类继承另一个类,那么它的默认父类就是Object类; 例如多态: package java_jichu;public class ja…...
了解遗传算法的Matlab程序的奥妙之处
老板突然想要了解遗传算法的Matlab程序,我们需要先理清楚他们的需求。首先,老板可能对遗传算法有一定的了解,但不太清楚如何在Matlab中具体实现。他可能是一个学生或者研究人员,需要应用到某个项目中,比如优化问题。老板可能希望得到一个结构清晰的步骤说明,以及具体的代…...
Java学习------源码解析之StringBuilder
1. 介绍 String中还有两个常用的类,StringBuffer和StringBuilder。这两个类都是专门为频繁进行拼接字符串而准备的。最先出现的是StringBuffer,之后到jdk1.5的时候才有了StringBuilder。 2. StringBuilder解析 从这张继承结构图可以看出: S…...
【漫话机器学习系列】163.方差膨胀因子(Variance Inflation Factor, VIF)
方差膨胀因子(Variance Inflation Factor, VIF)详解 1. 什么是方差膨胀因子? 方差膨胀因子(Variance Inflation Factor, VIF)是一种用于衡量回归分析中多重共线性(Multicollinearity)程度的指…...
蓝桥杯省模拟赛 字符串拼接
问题描述 给定四个字符串 a,b,c,d,请将这四个字符串按照任意顺序依次连接拼成一个字符串。 请问拼成的字符串字典序最小是多少? 输入格式 输入四行,每行包含一个字符串。 输出格式 输出一行包含一个字符串,表示答案。 样例…...
前端路由守卫与后端权限验证,仅使用路由守卫是否安全?
前后端分离架构的安全原则 后端必须对所有 API 接口进行权限验证前端仅负责用户界面的重定向安全策略应始终由后端最终决定 问题1:前端设置路由守卫是否可以阻挡用户直接通过URL访问??? 前端路由守卫(如 Vue Router …...
React-nodejs 练习 个人博客
1.主要功能模块: 文章管理:CRUD操作 用户系统:注册、登录、权限控制评论系统:文章评论功能 2.技术栈: 前端:React Ant Design React Router后端:Express MongoDB 通信:RESTful…...
AI三大主义 和 深度学习三大主义
在人工智能(AI)研究领域,"三大主义"通常指三种核心方法论或思想流派,它们代表了不同的技术路径和哲学观点。以下是主流的划分方式: 1. 符号主义(Symbolicism) 核心思想:智…...
Linux实现生产者消费者模型(基于阻塞队列)
目录 概念及优势 代码实现 概念及优势 生产者消费者模型是一种用于线程同步的模型,在这个模型中有两种角色,生产者生产数据,消费者消费数据。有三种关系,生产者与生产者,消费者与消费者,生产者与消费者。…...
UE5 UE4 右键/最大化-菜单-不显示/闪/黑色/黑屏--修复方法
先关闭UE5 、UE4 编辑器。 进入这个网站:https://nvidia.custhelp.com/app/answers/detail/a_id/5157 网速慢,换成这个下载:https://download.csdn.net/download/qq_21153225/90546310 下载:mpo_disable.reg 的文件 只双击“mpo…...
[ C语言 ] | 从0到1?
目录 认识计算机语言 C语言 工欲善其事必先利其器 第一个C语言代码 这一些列 [ C语言 ] ,就来分享一下 C语言 相关的知识点~ 认识计算机语言 我们说到计算机语言,语言,就是用来沟通的工具,计算机语言呢?就是我们…...
4.训练篇2-毕设篇
resnet # 1. 从 torchvision 中加载预训练的 ResNet18 模型 # pretrainedTrue 表示使用在 ImageNet 上预训练过的参数,学习效果更好 base_model_resnet18 models.resnet18(pretrainedTrue)# 2. 获取 ResNet18 模型中全连接层(fc)的输入特征…...
Ubuntu 系统中,每日健康检查
一、手动检查命令(基础项) 1. 系统资源监控 内存使用: free -h # 查看内存和交换空间使用情况 cat /proc/meminfo | grep -i "memavailable" # 查看可用内存CPU 负载: top -n 1 -b | grep "load ave…...
#CX# UVM中的virtual sequence 和 virtual sequencer 的用途
在UVM中,Virtual Sequence(虚拟序列) 的核心用途是协调多个物理Sequencer上的Sequence执行,以实现跨接口、跨组件的复杂事务同步和场景控制。 1. 核心用途 多接口协同测试 当验证场景需要多个接口(如DUT的AXI、I2C、UART接口)同时或按特定顺序发送事务时,Virtual Seque…...
vue:突然发现onok无法使用
const that this;this.$confirm({title: "修改商品提示",content: "如果当前商品存在于商品活动库,则在商品活动库的状态会下架",onOk: function () {that.submitForm();}}); 突然发现 this.$confirm无法进入onok 最终发现是主题冲突&#x…...
开发过程中需要安装的浏览器插件
Vue.js devtools https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd?hlzh-CN&utm_sourceext_sidebar ModHeader https://chromewebstore.google.com/detail/modheader-modify-http-hea/idgpnmonknjnojddfkpgkljpfnnfcklj?utm…...
基于javaweb的SpringBoot房屋出租系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
小程序某点餐平台全自动化实现思路
某德基全自动化实现 一、实现思路二、具体步骤1、分析接口2、破解接口3、解决自动支付4、获取订单 三、其他 以下内容仅供学习交流使用 粗略讲解一下思路,要完全实现只靠以下这些内容还是不够的。 一、实现思路 全自动化实现用的是小程序版本。我们首先要分析整个…...
红宝书第二十讲:详解JavaScript的Proxy与Reflect
红宝书第二十讲:详解JavaScript的Proxy与Reflect 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、Proxy的作用:给对象戴上“监听耳机” Proxy(代理)允许你为对象…...
Contactile三轴触觉传感器:多维力感赋能机器人抓取
在非结构化环境中,机器人对物体的精准抓取与操作始终面临巨大挑战。传统传感器因无法全面感知触觉参数(如三维力、位移、摩擦),难以适应复杂多变的场景。Contactile推出的三轴触觉力传感器,通过仿生设计与创新光学技术…...
18-动规-子序列中的 k 种字母(中等)
题目 来源 28. 子序列中的 k 种字母(第一期模拟笔试) 思路 基本分析 子序列的定义 子序列是从原序列中选取部分元素,同时保持这些元素在原序列中的相对顺序所形成的新序列。也就是说,子序列中的元素不需要在原序列中连续出现…...
Lua 数组
Lua 数组 引言 Lua 是一种轻量级、高效的脚本语言,广泛应用于游戏开发、服务器端编程等领域。在 Lua 中,数组是一种非常重要的数据结构,它允许开发者以高效的方式存储和操作一系列数据。本文将详细介绍 Lua 数组的相关知识,包括…...
C 语言的未来:在变革中坚守核心价值
一、从 “古老” 到 “长青”:C 语言的不可替代性 诞生于 20 世纪 70 年代的 C 语言,历经半个世纪的技术浪潮,至今仍是编程世界的 “基石语言”。尽管 Python、Java 等高级语言在应用层开发中占据主流,但 C 语言在系统级编程和资…...
springboot3 基于 logback
1.配置 logging:level:root: ${ROOT_LOG_LEVEL:debug}web: ${ROOT_WEB_LEVEL:info}org.hibernate.orm.jdbc.bind: ${ROOT_SQL_PARAM_LEVEL:info} #打印SQL参数2.基于 logback-spring.xml配置 <?xml version="1.0" encoding="UTF-8"?> <configu…...
网络相关的知识总结1
1.设备可以通过以太网电缆(如双绞线)连接到交换机的端口,交换机也通过以太网电缆连接到路由器。但是如果距离过远,比如跨国路由器如何连接? 1.专用通信线路(如 MPLS、光纤专线):租用…...
Rust vs. Go: 性能测试(2025)
本内容是对知名性能评测博主 Anton Putra Rust vs. Go (Golang): Performance 2025 内容的翻译与整理, 有适当删减, 相关数据和结论以原作结论为准。 再次对比 Rust 和 Go,但这次我们使用的是最具性能优势的 HTTP 服务器库---Hyper,它基于 Tokio 异步运…...
如何使用postman调用多参数接口(包含文件上传)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 如何使用postman调用包含文件参数的多参数接…...
无人机助力道路智能养护,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建无人机航拍道路交通场景下水泥路面缺陷智能检测识别系统
道路养护是保障交通命脉安全的隐形防线,其重要性不亚于道路建设本身。我国每年因道路病害引发的交通事故占比高达12%,及时修复1平方米的早期裂缝可避免后续数万元的修复成本。在这场与道路病害赛跑的战役中,传统养护模式正遭遇前所未有的挑战…...
28_跨域
目录 promise promise的基本语法 async await try catch promise 静态方法 跨域 跨域的解决方案 1-cors 编辑 2-jsonp方案 3-代理服务器 promise promise 是一个es6新增的语法 承诺的意思 作用:是专门用来解决回调地狱!!!! promise的基本语法 // 基本语法:// Pr…...
【C#.NET】VS2022创建Web API项目
C# Web API 是一种基于 .NET 平台(包括但不限于.NET Framework 和 .NET Core)构建 HTTP 服务的框架,用于创建 RESTful Web 服务。REST(Representational State Transfer)是一种软件架构风格,它利用HTTP协议…...
注意力蒸馏技术
文章目录 摘要abstract论文摘要简介方法预备知识注意力蒸馏损失注意力引导采样 实验结论总结参考文献 摘要 本周阅读了一篇25年二月份发表于CVPR 的论文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,论文开发了Attention Distillation…...
Day17 -实例:利用不同语言不同框架的特征 进行识别
前置:我们所需的web站点,都可以利用fofa去搜索,例如:app"flask"这样的语句去找对应的站点,找到后,我们模拟不知道是什么框架,再根据特征去判断它的框架。 ***利用工具可以再去结合大…...
Centos7 安装 TDengine
Centos7 安装 TDengine 1、简介 官网: https://www.taosdata.com TDengine 是一款开源、高性能、云原生的时序数据库(Time Series Database, TSDB), 它专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计。同时它还带有内建的缓…...
DeepSeek调用API访问,使用AnythingLLM建立本地知识库后开放API调用,ApiFox/PostMan调用本地DeepSeek
上篇文章中我们使用AnythingLLM成功在本地部署了DeepSeek的本地知识库,并且上传了几个文件让DeepSeek学习,可点击查看: 本地部署DeepSeek并使用AnythingLLM建立本地知识库全流程,DeepSeek-R1:7b本地安装部署,DeepSeek-R1本地部署…...
SQL语句---DDL
文章目录 1、SQL语句2、DDL2.1 数据库的操作显示当前的数据库创建数据库指定编码删除数据库切换当前数据库 2.2 数据表的操作显示表创建表显示表结构修改表添加新的字段删除原有字段 修改原有字段删除数据表 2.3 Mysql数据库中常用的数据类型 1、SQL语句 结构化查询语句&#…...
Java实战:实现用户的登录注册功能
系列文章目录 Java文件 I/O流的操作实战和高级UI组件和事件监听的综合 文章目录 系列文章目录前言一、大致流程思路分析:二、定义用户类:三、服务层的实现: 1.保护用户数据功能的实现2.登录操作的实现 四、实现用户的注册界面: 大…...
用LLama factory时报类似Process 2504721 got signal: 1的解决方法
之前用nohup来远程跑LLama factory微调脚本,是没有问题的,但今天发现运行类似下面这个命令时, nohup llamafactory-cli train examples/train_qlora/qwen_lora.yaml 只要一关闭ssh session,就会终止训练,报类似&…...
WPF ContentTemplate
ContentTemplate 是一个非常重要的属性,用于定义 ContentPresenter 中内容的显示样式。通过设置 ContentTemplate,你可以控制 ContentPresenter 如何呈现其绑定的内容。 下面是对 ContentTemplate 的详细解释以及它的作用和用法。 1. ContentTemplate 的…...
powershell7.5.0不支持conda的问题
经历:这周手欠使用vscode的powershell时提示我更新,我就更新了,更新完激活不了conda环境了,查询了半天是powershell最新版7.5.0与目前conda25.1.1以前的版本不支持的问题。 问题环境:powershell版本>7.5.0ÿ…...
SSE SseEmitter.completeWithError(e) 触发的处理逻辑
在 Java 客户端使用 OkHttp 监听 SSE(Server-Sent Events) 的情况下,当服务端调用 SseEmitter.completeWithError(e),客户端会触发 EventSourceListener 的 onFailure() 方法(而不是 onError)。 1. 服务端&…...
JAVA反序列化深入学习(八):CommonsCollections6
与CC5相似: 在 CC5 中使用了 TiedMapEntry#toString 来触发 LazyMap#get在 CC6 中是通过 TiedMapEntry#hashCode 来触发 LazyMap#get 之前看到了 hashcode 方法也会调用 getValue() 方法然后调用到其中 map 的 get 方法触发 LazyMap,那重点就在于如何在反…...
科技快讯 | 韩国科学家研发出全球首款仿生液态机器人;OpenAI推出GPT-4o图像生成功能
韩国科学家研发出全球首款仿生液态机器人,自由变形穿越金属栅栏 韩国首尔大学等研究团队开发出一种基于液体的下一代软体机器人,具有细胞仿生特性,能自由变形、分裂融合,并执行物质运输任务。该机器人采用“颗粒装甲”设计&#x…...
[Vue2]v-model用于表单
之前我们讲到过v-model用于双向绑定一个数据,通常用于表单提交数据。而之前的演示里只演示了文本输入栏,这里详细演示一下其他表单输入时使用v-model。 文本输入 文本输入数据就是经典的type"text": <input type"text&qu…...
【机器学习】imagenet2012 数据预处理数据预处理
【机器学习】数据预处理 1. 下载/解压数据2. 数据预处理3. 加载以及训练代码3.1 使用PIL等加载代码3.2 使用OpenCV的方式来一张张加载代码3.3 h5的方式来加载大文件 最后总结 这个数据大约 140个G,128w的训练集 1. 下载/解压数据 首先需要下载数据: 数据最后处理…...
基于pycatia的CATIA零部件激活状态管理技术解析
一、问题背景:CATIA激活状态管理的痛点 在CATIA V5/V6的装配设计过程中,工程师经常使用激活状态控制(Activation)来管理大型装配体的显示性能。但实际使用中存在一个典型问题:当零部件被取消激活(Deac…...
基于javaweb的SpringBoot水果生鲜商城系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
JVM 内存模型(JDK8+)
1. 内存模型结构图解 JVM 内存模型(JDK 8) ├── **线程私有区** │ ├── 程序计数器(Program Counter Register) │ ├── 虚拟机栈(VM Stack) │ │ └── 栈帧(局…...
基于飞腾FT2000/4的全国产标准6U VPX板卡,支持银河麒麟
1 功能 高可靠性的基于飞腾公司FT2000/4的处理器以及 X100 芯片组的标准6U VPX板卡,具有以太网、SATA、PCIE,以及显示等接口,产品功能框图如图1所示: 图 1 功能框图 2 技术指标 本产品功能和性能指标,见表 1。 表1 产品…...
【从零实现Json-Rpc框架】- 项目实现 - Dispatcher模块实现篇
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
WPS宏开发手册——JSA语法练习
目录 系列文章3、JSA语法练习3.1、运算练习3.2、比较练习3.3、if else练习3.4、for 练习3.5、字符串、数组方法练习3.6、语义转编程练习题 系列文章 使用、工程、模块介绍 JSA语法 JSA语法练习题 Excel常用Api 后续EXCEL实战、常见问题、颜色附录,持…...